在使用build.gradle中的CPU ABI分割时,Android产品风味没有被考虑进去。

16
根据http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits,我想按CPU ABI拆分APK,但我只想针对特定的产品口味进行APK拆分。我的build.gradle文件包含以下产品口味:plainmarket。实际上,我希望在构建market口味时执行APK拆分。
android {
    productFlavors {
        plain {
        }
        market {
            splits {
                abi {
                    enable true
                    reset()
                    include 'armeabi', 'armeabi-v7a', 'x86', 'mips'
                    universalApk true
                }
            }
        }
    }
}

然而,当我调用gradle assemblePlainDebugassembleMarketDebug时,它们都会生成多个APK。上面的配置有问题吗?

我正在使用com.android.tools.build:gradle:1.2.3


1
我报告了这个 bug:https://code.google.com/p/android/issues/detail?id=178606 到目前为止除了我以外,还没有其他人标记。如果您遇到相同的问题,请帮忙标记该问题。 - Randy Sugianto 'Yuku'
1个回答

16

我一直在寻找一个方法来做这件事,但一直没有找到可靠的解决方案。与分裂有关的问题必须在解决buildTypes和productFlavors之前运行。

Android Gradle - 是否仅针对发布使用分裂是可能的?这个问题有一个我认为很有用的答案。基本上它依赖于项目属性,在通过命令行或连续集成环境构建时传递,以设置是否启用拆分apk选项。

我像这样使用它:

splits {
    abi {
        enable project.hasProperty('splitApk')
        reset()
        include 'x86', 'armeabi-v7a', 'mips', 'armeabi'
        universalApk true
    }
}

根据您正在构建的味道或构建类型,可以包含以下内容:

./gradlew --project-prop splitApk assembleMarketDebug

这样做只会在明确指定时启用APK拆分,对其他所有内容都保持禁用状态。


谢谢你的解决方案,它起作用了。我需要一个带有C++单元测试的版本,只能在X86架构中构建。 - Dzamir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接