2

嗨,我只是想在一个使用带有 Gradle 构建的 Android Studio 的 Android 项目中使用Card IOBraintree Android SDK。我什至还没有添加任何引用这两个库的代码。我只是将它们设置为 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 --no-optimize --output /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)

我尝试删除下的所有内容

应用程序/构建/生成,输出和临时

甚至无效的 Android Studio 缓存并重新启动。不好。这在我看来是 Card IO 和 Braintree Android SDK 都有的东西,它们都将被打包到 apk 中。Braintree Android SDK 是否已经包含 Card IO 或其他内容?

谁能指出我做错了什么?非常感谢 !

4

2 回答 2

3

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

于 2015-02-05T00:33:58.627 回答
1

Braintree SDK 已经包含有氧 java 类。但是,它不包括 .so 文件。请尝试删除您的本地 card.io.jar 副本,一切都会正常。

于 2014-12-09T14:42:26.820 回答