我想根据http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits根据CPU ABI进行APK拆分,但我想将APK拆分为某种产品风格。
因此,我的build.gradle
文件具有以下产品风格plain
和market
。实际上我希望在构建market
风格时执行APK拆分。
android {
productFlavors {
plain {
}
market {
splits {
abi {
enable true
reset()
include 'armeabi', 'armeabi-v7a', 'x86', 'mips'
universalApk true
}
}
}
}
}
但是,当我调用gradle assemblePlainDebug
和assembleMarketDebug
时,它们都会生成多个APK。上面的配置有问题吗?
我正在使用com.android.tools.build:gradle:1.2.3
。
答案 0 :(得分:10)
我一直在寻找一种方法来做这件事并且还没有找到可靠的解决方案。在解析buildTypes和productFlavor之前必须运行与拆分有关的事情。
Android Gradle - is use splits only for release possible?问题得到了我觉得有用的答案。它基本上依赖于项目属性,在通过命令行或持续集成环境构建时传入,以设置天气分裂apk的选项是否启用。
我这样用过:
splits {
abi {
enable project.hasProperty('splitApk')
reset()
include 'x86', 'armeabi-v7a', 'mips', 'armeabi'
universalApk true
}
}
然后根据您正在构建的falvour或构建类型,您可以包括:
./gradlew --project-prop splitApk assembleMarketDebug
这应该只在明确告知时启用apk拆分,并且应该对其他所有内容保持禁用状态。