Android gradle JAR依赖关系最终声明为native

时间:2015-11-30 18:51:44

标签: android gradle android-gradle

在我的Android项目build.gradle文件中,我有:

dependencies {
  compile 'org.apache.directory.studio:org.apache.commons.io:2.4'
  compile 'org.apache.commons:commons-collections4:4.0'
}

当我运行aapt dump badging时,我看到了:

native-code: 'commons-io-2.4.jar'

显然,commons-io不是本机代码,但Android Gradle插件认为它是。如何告诉Android Gradle插件此库不包含本机代码?还好奇它是如何决定这个库是什么架构的?由于APK不会安装在基于英特尔的Android模拟器上,因此似乎选择了多种arm,它会出现错误:INSTALL_FAILED_CPU_ABI_INCOMPATIBLE

2 个答案:

答案 0 :(得分:2)

您可能正在使用不正确的Commons IO库。尝试:

HERE

您使用的http://mvnrepository.com/artifact/commons-io/commons-io/2.4似乎特定于version,似乎是桌面应用。

答案 1 :(得分:0)

我曾经遇到过将commons-io:2.4依赖于我的构建代码的麻烦。问题是Gradle本身带有commons-io的版本。在我的情况下,它可以修复:

sourceSets {
  main {
    compileClasspath = configurations.compile.minus files("$gradle.gradleHomeDir/lib/commons-io-1.4.jar")
  }
}

我从My Gradle project depends on commons-io 2.4, but Gradle puts $GRADLE_HOME/commons-io-1.4.jar into the classpath, causing failures

获取了此片段

但请注意,建议不要在Gradle中使用不同版本的库。

您可以在此处找到有关此内容的更多信息:https://discuss.gradle.org/t/unable-to-use-commons-io-2-4-because-gradle-forces-the-loading-of-commons-io-1-4/8021

这可能完全不相关:)