我想使用 Gradle 为 4 个不同的 Android CPU 处理器架构(armeabi armeabi-v7a x86 mips)构建 4 个单独的 apk。
我有为 4 个 CPU 架构构建的本机 OpenCV 库libs folder.
libs
-armeabi
-armeabi-v7a
-x86
-mips
我希望每个apk只包含与正确的CPU架构相对应的OpenCV库。
当前的构建脚本如下:
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':workspace:OpenCV4Android:sdk:java')
}
android {
compileSdkVersion 11
buildToolsVersion "18.1.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
flavorGroups "abi", "version"
productFlavors {
x86 {
flavorGroup "abi"
}
arm {
flavorGroup "abi"
}
mips {
flavorGroup "abi"
}
}
}
}
有人可以帮我解决这个问题吗?
Cheers,
从 Android Gradle 插件版本 13 开始,您现在可以使用新的“拆分”机制生成单独的 APK。你可以阅读相关内容here http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits#TOC-ABIs-Splits.
放置 .so 文件的默认文件结构是:
src
-main
-jniLibs
-armeabi
-arm.so
-armeabi-v7a
-armv7.so
-x86
-x86.so
-mips
-mips.so
请注意,.so 文件的名称并不重要,只要它具有 .so 扩展名即可。
然后在你的 Gradle 构建文件中:
android {
...
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a', 'mips', 'armeabi'
universalApk false
}
}
}
and
// map for the version code
ext.versionCodes = ['armeabi-v7a':1, mips:2, x86:3]
import com.android.build.OutputFile
android.applicationVariants.all { variant ->
// assign different version code for each output
variant.outputs.each { output ->
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(OutputFile.ABI)) * 1000000 + android.defaultConfig.versionCode
}
}
请注意,上面 ext.versionCodes 中的版本代码很大程度上无关,此处是为每个 ABI 类型添加唯一的偏移量,以便版本代码不会发生冲突。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)