apk 瘦身系列⑤:使用 product flavors 来发布多个 apk

作者: rain 分类: 移动 发布时间: 2016-03-11 22:40 6 条评论

前面一篇文章中介绍了如何使用 splits 来生成不同屏幕密度和 apu 架构的 apk。其实还有一种更加方便的生成多个 apk 的方式:product flavors

Build 系统使用 product flavors 来生成不同版本的 app。每个版本都可以包含不同的功能, 比如 免费版有广告而付费版没有广告并且带有高级功能。

使用 flavors 也可以达到 splits 的效果。可以把每个屏幕密度都当做一种 flavor ,然后使用 resConfigs 选项来指定每种 flavor 需要的资源类型。

从 Build 工具 v21 以后, resConfigs 只能指定一种屏幕密度标识符了,AAPT 可以自动的判别那些资源需要打包的 apk 中。

Build.gradle

这样每个 flavor 都会生成一个新的 AndroidManifest.xml 文件,位于 app/src/[flavorname]/AndroidManifest.xml ,该文件中包含了正确的屏幕过滤指令。上面的 anydpi 是一个低版本的通用 apk, 也需要发布到 play store中。

MinSdkVersion-based multi-APK

使用 flavors 还可以实现针对不同 android 系统版本的 apk。比如,创建一个 5.0 之前的版本和一个适用 5.0+ 系统的版本:

Build.gradle

现在把文件放到 app/src/prelollipop/res/ 或者 app/src/lollipop/res 目录中,可以分别控制那些资源文件需要打包的 5.0 版本中,那些文件需要打包到5.0之前的版本中。 例如,你可以在 5.0 版本中使用 VectorDrawable,而在 5.0 之前的版本中继续使用 png 图片。

关于 product flavors 的其他用法可以参考这里

本文出自 云在千峰,转载时请注明出处及相应链接。

本文永久链接: http://blog.chengyunfeng.com/?p=890

Ɣ回顶部