嗨,我只是尝试在一个安卓项目中使用卡IO和Braintree Android SDK,当然是使用Android和Gradle构建。我甚至还没有添加任何引用这两个库的代码。我只是在gradle构建文件中将它们设置为依赖关系,如下所示:
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 --非优化--输出/path_to_project_root/app/build/intermediates/dex/debug --input-list=/path_to_project_root/app/build/intermediates/tmp/dex/debug/inputList.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)我试着删除下面的所有内容
app/build/generated,outputs和temp
甚至是无效的Android缓存并重新启动。不是很好。在我看来,这是卡片IO和Braintree Android都有的东西,它们都将被打包到apk中。Braintree Android SDK是否已经包含了卡片IO之类的东西?
有人能指出我哪里做错了吗?非常感谢!
发布于 2014-12-09 14:42:26
Braintree SDK已经包含了心脏病java类。但是,它不包括.so文件。请尝试删除您的本地副本的card.io.jar,一切都应该工作。
发布于 2015-02-05 00:33:58
在1.3.0版本中,Braintree SDK不再包含card.io的副本。
https://stackoverflow.com/questions/27378424
复制相似问题