Android AGP升级后导致APK体积增大

项目AGP升级至7.0+后发现打出来release包的体积比之前增加近一倍,经过查询官方文档得知在AGP3.6.0时的行为变更上:默认情况下,原生库以未压缩的形式打包。

在构建应用时,插件现在默认会将 extractNativeLibs 设置为 "false"也就是说,您的原生库将保持页面对齐状态并以未压缩的形式打包。虽然这样会增加上传大小,但您的用户会从以下优势中受益:

  • 减小应用安装大小,因为平台可以直接从已安装的 APK 访问原生库,而无需创建库的副本。
  • 减小下载文件大小,因为在 APK 或 Android App Bundle 中添加未压缩的原生库通常可提高 Play 商店的压缩率。

如果您希望 Android Gradle 插件改为打包压缩后的原生库,请在应用的清单中添加以下代码:

<application
    android:extractNativeLibs="true"
    ... >
</application>

但是从 AGP 4.2.0 开始,extractNativeLibs 清单属性已被 DSL 选项 useLegacyPackaging 取代。 您应该使用应用的 build.gradle 文件中的 useLegacyPackaging(而非清单文件中的 extractNativeLibs)来配置原生库压缩行为:

使用 DSL 打包压缩后的原生库

官方建议以未压缩的形式打包原生库,因为这会减小应用安装大小,缩减应用下载大小,并缩短用户的应用加载时间。不过,如果您希望 Android Gradle 插件在构建应用时打包压缩后的原生库,请在应用的 build.gradle 文件中将 useLegacyPackaging设置为 true

android {
    packagingOptions {
        jniLibs {
            useLegacyPackaging true
        }
    }
}

注意:useLegacyPackaging 标记会替换 extractNativeLibs 清单属性。默认情况下,原生库以未压缩的形式打包。

官方文档参考:

https://developer.android.com/studio/releases/gradle-plugin?buildsystem=ndk-build#extractNativeLibs

https://developer.android.com/studio/releases/gradle-plugin?buildsystem=ndk-build#compress-native-libs-dsl

猜你喜欢

转载自blog.csdn.net/zl_china/article/details/125212864