使用APK Splits进行发布,但不能使用“debugging”构buildtypes

我已经成功实施APK拆分,以便为不同的ABI生成单独的APK。

但是,为了提高效率(因为我不需要在debugging中使用非armeabi-v7a APK),我想限制Debug版本只生成armeabi-v7a APK。

如何才能做到这一点?

一个想法是这样的:

abi { enable true reset() include 'x86', 'armeabi-v7a', 'mips' universalApk false } 

也许有一些方法来设置enable基于生成types?

Solutions Collecting From Web of "使用APK Splits进行发布,但不能使用“debugging”构buildtypes"

您可以根据命令行参数设置enable 。 当我只想为发行版本使用拆分时,我已经解决了一个类似的问题,但是不能用于常规的debugging版本。

 splits { abi { enable project.hasProperty('splitApks') reset() include 'x86', 'armeabi-v7a' } } 

然后./gradlew -PsplitApks assembleProdRelease (在我的情况下prod是一种风味)。

你可以试试@Geralt_Encore的答案,避免单独的gradlew命令。 在我的情况下,我只关心使用APK分割来减lessAPK文件的大小,我想完全在Android Studio中完成。

 splits { abi { enable gradle.startParameter.taskNames.contains(":app:assembleRelease") reset() include 'x86', 'armeabi-v7a', 'mips' universalApk false } } 

您可能需要将:app前缀replace为:app程序模块的名称,如果它不是字面命名的app

从我所看到的Build | 在Android Studio中生成签名APK菜单项使用assembleRelease Gradle目标生成APK。

请注意,如果您使用构build版本生成APK,或者您的版本构build不是命名release ,则需要相应地更改assembleRelease目标,例如,如果assemblePaidRelease版本已paid ,请使用assemblePaidRelease

其实,你仍然需要启用拆分,否则你的APK将包含所有ABI的库,这可能不是你想要的。

这应该适合您的要求:

 buildTypes { debug { splits { abi { enable true reset() include 'armeabi-v7a' universalApk false } } ... } release { splits { abi { enable true reset() include 'x86', 'armeabi-v7a', 'mips' universalApk false } } ... } }