我正面临着这个似乎无法解决的问题。这里是场景:针对具有ABI分割的特定体系结构的Gradle依赖关系
Im建筑apk使用gradle依赖关系和这个依赖关系是特定的体系结构所以对于x86的x86我需要不同的依赖关系和不同的手臂。
我的产品口味解决它:
productFlavors {
dev { ... }
develx86 { ... }
production { ... }
productionx86 { ... }
}
于是我这样定义的依赖性:
develCompile 'dependency_for_arm'
develx86Compile 'dependency_for_x86'
这工作不错。但最近我不得不在我的应用程序中添加一个renderscript的用法。我做了这样:
renderscriptTargetApi 22
renderscriptSupportModeEnabled true
并在此之后,当我上传到谷歌的apk发挥它说,它的APK是适合与ARM,X86。我不知道这是可能的。正如你可以认为它会在具有不同CPU的设备上崩溃(如果我为arm生成apk并且用户将在x86应用程序上执行它将崩溃)。
所以我decited使用ABI分裂:
splits {
abi {
enable true
reset()
include 'armeabi', 'x86'
universalApk false
}
}
//Ensures architecture specific APKs have a higher version code
//(otherwise an x86 build would end up using the arm build, which x86 devices can run)
ext.versionCodes = [armeabi:0, x86:1]
import com.android.build.OutputFile
android.applicationVariants.all { variant ->
// assign different version code for each output
variant.outputs.each { output ->
int abiVersionCode = project.ext.versionCodes.get(output.getFilter(OutputFile.ABI)) ?: 0
output.versionCodeOverride = android.defaultConfig.versionCode + abiVersionCode
}
但现在,当我看到生成APK文件,我的依赖性是当我打开部分风味特异没有纳入APK和APK会崩溃它使用来自这个依赖关系的API。
有人知道如何解决这个问题吗?或者有人知道为什么Google Play会说当我包含renderscript时apk同时适用于两种体系结构? (没有它,它正常工作,但我需要renderscript)。
谢谢你的时间。我会感谢任何帮助。
任何运气?如果你找到答案,请发布答案 –