2014-12-09 53 views
2

嗨我只是想在一個使用Android Studio的Android項目中使用Card IOBraintree Android SDK,當然是使用Gradle構建。我甚至還沒有添加任何引用這兩個庫的代碼。我只是將它們作爲gradle這個build文件的依賴性,如下圖所示:Card IO Android SDK與Braintree Android SDK衝突嗎?

apply plugin: 'com.android.application' 

android { 
     compileSdkVersion 21 
     buildToolsVersion "21.1.1" 

    defaultConfig { 
     applicationId "blahblahblah" 
     minSdkVersion 10 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     debug { 
      ...... 
     } 

     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':android-async-http-1.4.6') 
    compile project(':gson-2.3.1') 
    compile project(':card.io') 
    compile 'com.android.support:appcompat-v7:21.0.2' 
    compile 'com.android.support:support-v4:21.0.2' 
    compile 'com.braintreepayments.api:braintree:1.+' 
} 

然後我試圖乾淨,並建立其成功,但是當我嘗試測試手機上運行它,我收到以下內容:

Error:Execution failed for task ':app:dexDebug'. 

com.android.ide.common.internal.LoggedErrorException:無法運行命令: /Applications/ADT_Bundle/sdk/build-tools/21.1.1/dx --dex --no-優化 - output/path_to_project_root/app/build/intermediates/dex/debug --input-list =/path_to_project_root/app/build/intermediates/tmp/dex/debug/i nputList.txt

Error Code: 
    2 
    Output: 
    UNEXPECTED TOP-LEVEL EXCEPTION: 
    com.android.dex.DexException: Multiple dex files define Lio/card/payment/b; 
     at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) 
     at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) 
     at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) 
     at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) 
     at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) 
     at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 
     at com.android.dx.command.dexer.Main.runMonoDex(Main.java:302) 
     at com.android.dx.command.dexer.Main.run(Main.java:245) 
     at com.android.dx.command.dexer.Main.main(Main.java:214) 
     at com.android.dx.command.Main.main(Main.java:106) 

我嘗試下

應用刪去/建設/產生,輸出和臨時

甚至無效的Android工作室緩存和重新啓動。不好。這對我來說看起來就是Card IO和Braintree Android SDK都有的東西,它們都將被打包到apk中。 Braintree Android SDK是否已經包含了Card IO或其他功能?

任何人都可以指出我做錯了嗎?非常感謝 !

回答

1

Braintree SDK已經包含了cardio java類。但是,它不包含.so文件。請嘗試刪除您的本地副本card.io.jar,並且一切都應該工作。

+0

非常感謝傑夫。也許在Github上或者網頁上有關於此的提示可以阻止一些自殺行爲(好吧,自殺不是那麼聰明但是很勤奮的編程者) – CrazyGreenHand 2014-12-09 15:07:11

+0

我們計劃從Braintree sdk中刪除card.io,並且會相應地更新構建指令當發生這種情況。 – 2014-12-11 19:48:41

+0

它在[DEVELOPMENT.md]中提到(https://github.com/braintree/braintree_android/blob/2c570fcc469613e903a81f8b2892083fdf4ebffa/DEVELOPMENT.md#environmental-assumptions),但它有點被掩蓋。 – Luke 2015-02-03 16:16:30

3

在版本1.3.0中,Braintree SDK不再包含card.io的副本。