2015-11-30 38 views
1

在我的Android项目build.gradle文件我有:的Android gradle这个JAR依赖最终声明为本地

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' 

显然公地IO是不是本机代码但Android Gradle插件认为它是。我怎么能告诉Android Gradle插件这个库不包含本地代码?也好奇它是如何决定这个图书馆是什么样的架构?它似乎选择了一些arm,因为APK不会安装在基于Intel的Android模拟器上,它会给出错误:INSTALL_FAILED_CPU_ABI_INCOMPATIBLE

+0

可能的答案,http://stackoverflow.com/a/20185696/794088 – petey

+0

我看到问题,但它都是关于IntelliJ,我尝试使用IntelliJ,但是我在IntelliJ中遇到了一堆错误。我只关心Gradle的命令行构建配置。 – satur9nine

回答

2

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

http://mvnrepository.com/artifact/commons-io/commons-io/2.4

version你使用似乎是专门针对Apache Directory Studio 2.4这似乎是一个桌面应用程序。

+1

使用'commons-io:commons-io:2.4'修复它。如果你仔细观察一下我之前使用的那个包含另一个JAR的'lib'目录。我的猜测是,这是'lib'目录的存在,这使得android gradle插件认为它是原生的。我很奇怪,奇怪的JAR首先工作。 – satur9nine

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

但要知道,这是不推荐使用不同版本的库来与摇篮。

你可以找到关于这个位置的详细信息:https://discuss.gradle.org/t/unable-to-use-commons-io-2-4-because-gradle-forces-the-loading-of-commons-io-1-4/8021

这可能藏汉完全无关:)

这里