使用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?

  • 如何设置Android库模块,并在Android Studio中被多个项目引用?
  • 如何使用gradle-android-test-plugin
  • Gradle警告:不推荐使用variant.getOutputFile()和variant.setOutputFile()
  • Android数据绑定依赖项与支持库冲突
  • 用Gradle自定义类加载Dalvik(Android新build系统)
  • 使用Gradle将Google Play服务添加到Android Studio
  • build.gradle和项目库
  • Gradle 2.3.0-alpha1不能工作数据绑定
  • 您可以根据命令行参数设置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 } } ... } }