【发布时间】:2013-12-01 18:01:27
【问题描述】:
我正在尝试构建我的 android 库项目,其中包含子测试项目。构建命令:gradle clean connectedCheck
在任务 :dexTest 之后我得到了错误:
意外的顶级异常:
java.lang.IllegalArgumentException:已添加:Lorg/json/simple/ItemList;
意外的顶级异常:
java.lang.IllegalArgumentException:已添加:Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat;
意外的顶级异常:
java.lang.IllegalArgumentException:已添加:Lorg/apache/commons/lang3/CharRange$1;
命令 gradle clean build 成功结束。所以我的问题是我无法运行我的测试。当我更改插件时,在我的 build.gradle 文件中,从 'android-library' 到 'android' 一切正常。
另外,我添加了 --info 参数并得到了这个,在错误之前
命令:/home/username/adt-bundle/sdk/build-tools/18.1.1/dx --dex --output /home/username/android/build/libs/android-test.dex /home/用户名/android/build/classes/test /home/username/android/build/dependency-cache/test /home/username/android/libs/json_simple.jar /home/username/android/build/bundles/debug/classes. jar /home/username/android/build/bundles/debug/libs/json_simple.jar /home/username/android/libs/android-support-v4.jar /home/username/android/build/bundles/debug/libs/ commons-lang3-3.1.jar /home/username/android/build/bundles/debug/libs/android-support-v4.jar /home/username/android/libs/commons-lang3-3.1.jar
那是什么?为什么它使用文件夹 build/bundles/debug/libs/ 中的库?这就是为什么我有错误 java.lang.IllegalArgumentException 但为什么 gradle 从那个我不明白的目录中获取库的原因。
这是我的 build.gradle 文件
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.3'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 18
buildToolsVersion "18.1.1"
defaultConfig {
minSdkVersion 8
targetSdkVersion 18
testPackageName "ua.cooperok.stringcalc.tests"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
sourceSets {
main {
manifest.srcFile file('AndroidManifest.xml')
java.srcDirs = ['src']
resources.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest {
manifest.srcFile file('tests/AndroidManifest.xml')
java.srcDirs = ['tests/src']
resources.srcDirs = ['tests/src']
res.srcDirs = ['tests/res']
assets.srcDirs = ['tests/assets']
}
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
}
可能是 android-library 插件中的错误?
【问题讨论】:
-
好吧,您的
gradle build成功了,因为在该任务期间根本没有调用dexTest。 -
你能显示你
libs文件夹中的所有jar文件名吗? -
嘿,你解决了吗?我在code.google.com/p/android/issues/detail?id=61429 上看到了你的评论。我遇到了同样的错误并卡住了。
-
不,我还没解决。我的 libs 文件夹包含 3 个 jar 文件,您可以找到它们,它们以路径 /home/username/android/libs/ 开头。我只有一个解决方案,但显然不好。为了运行测试,我将插件更改为 android 并编译库之类的应用程序,如果测试良好,我将插件更改回 android-library。
-
这听起来很不方便。你试过this #8吗?它对我有用。