使用Gradle进行测试时出现意外的顶级异常

时间:2013-08-22 14:00:09

标签: android gradle

我对Gradle很新。当我做

时,我的项目正在编译文件
./gradlew assembleDebug

但是当我尝试运行测试时却没有:

./gradlew connectedCheck

我得到(其中几个):

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lcom/facebook/AccessToken$SerializationProxyV1;
    at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
    at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
    at com.android.dx.command.dexer.Main.processClass(Main.java:490)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
    at com.android.dx.command.dexer.Main.access$400(Main.java:67)
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398)
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
    at com.android.dx.command.dexer.Main.processOne(Main.java:422)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333)
    at com.android.dx.command.dexer.Main.run(Main.java:209)
    at com.android.dx.command.dexer.Main.main(Main.java:174)
    at com.android.dx.command.Main.main(Main.java:91)

这是我项目的结构:

main app depends on:
    compile 'com.android.support:support-v4:18.0.+'
    compile 'com.android.support:gridlayout-v7:18.0.+'
    compile 'com.google.code.gson:gson:1.7.2'
    compile 'com.jakewharton:butterknife:2.0.1'
    compile 'com.squareup.retrofit:retrofit:1.1.1'
    compile 'com.squareup:otto:1.3.4'
    compile 'com.squareup.okhttp:okhttp:1.2.0'
    compile project(':Library:mylib')

mylib depends on:
    compile 'com.android.support:support-v4:18.0.+'
    compile files('libs/facebooksdk.jar')
    compile files('libs/libGoogleAnalyticsV2.jar')

来自mylib的每个罐子的异常,在这一行之后:

:Library:mylib:dexTest

任何想法?

2 个答案:

答案 0 :(得分:0)

多次引用库时会发生已添加的错误。我要做的是将编译项目设置为应用程序中的第一个编译元素,并删除重复的支持库:

app depends on:
compile project(':Library:mylib')
compile 'com.google.code.gson:gson:1.7.2'
compile 'com.jakewharton:butterknife:2.0.1'
compile 'com.squareup.retrofit:retrofit:1.1.1'
compile 'com.squareup:otto:1.3.4'
compile 'com.squareup.okhttp:okhttp:1.2.0'


lib depends on:
compile 'com.android.support:support-v4:18.0.+'
compile files('libs/facebooksdk.jar')
compile files('libs/libGoogleAnalyticsV2.jar')

答案 1 :(得分:0)

我遇到了同样的错误,但already added:背后的消息略有不同。这是关于重复的support-v4。我要解决的是:

compile('de.keyboardsurfer.android.widget:crouton:1.8.1') {
    exclude(group: 'com.google.android', module: 'support-v4')
}

希望它能为您找到解决问题的新方向。

<强>更新 对不起,我没有仔细阅读你的问题。事实证明你遇到了connectedCheck任务的问题。我正在运行gradle build。现在,当我运行gradle connectedCheck时,我只是遇到了同样的错误。我甚至尝试使用IDE,但没有一个能够工作。

这里实际上也讨论了https://code.google.com/p/android/issues/detail?id=61429。由于the comment #8,如果您移动到app文件夹并运行上面的任务,则可以进行管理。假设app文件夹为app-project/app,则将库放入app-projecct/libraries/my-lib-1。以前,我在app-project中运行并失败。

希望它能解决。