嗨我只是想在一個使用Android Studio的Android項目中使用Card IO和Braintree 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或其他功能?
任何人都可以指出我做錯了嗎?非常感謝 !
非常感謝傑夫。也許在Github上或者網頁上有關於此的提示可以阻止一些自殺行爲(好吧,自殺不是那麼聰明但是很勤奮的編程者) – CrazyGreenHand 2014-12-09 15:07:11
我們計劃從Braintree sdk中刪除card.io,並且會相應地更新構建指令當發生這種情況。 – 2014-12-11 19:48:41
它在[DEVELOPMENT.md]中提到(https://github.com/braintree/braintree_android/blob/2c570fcc469613e903a81f8b2892083fdf4ebffa/DEVELOPMENT.md#environmental-assumptions),但它有點被掩蓋。 – Luke 2015-02-03 16:16:30