来源http://www.open-open.com/lib/view/open1455888339167.html
来自: http://blog.zhaiyifan.cn/2016/02/18/android-resource-overlay/
前言
在 Android逆向分析(2) APK的打包与安装 一文中对资源编译过程的介绍中,笔者提到了overlay(重叠包)这个概念,一位每天都被自己帅醒的好友看了那篇东西后,来问我这个重叠包究竟是个什么东西,笔者想了想,确实这个概念有很多同学们都不甚了解,搜索了一下网上了介绍,也几乎没有看到任何对这个的讲解,只有 老罗的博客 提到过
–mOverlay:表示当前正在编译的资源的重叠包。重叠包是什么概念呢?假设我们正在编译的是Package-1,这时候我们可以设置另外一个Package-2,用来告诉aapt,如果Package-2定义有和Package-1一样的资源,那么就用定义在Package-2的资源来替换掉定义在Package-1的资源。通过这种Overlay机制,我们就可以对资源进行定制,而又不失一般性。
那我们应该怎么怎么去使用重叠包呢?它又能用在什么地方,带来什么便利呢?
本文的测试源码已上传: ResourceOverlayDemo 。
aapt overlay
我们看看aapt的命令help里是怎么描述的,省略版:
Usage:
aapt l[ist] [-v] [-a] file.{zip,jar,apk}
List contents of Zip-compatible archive.
aapt d[ump] [--values] [--include-meta-data] WHAT file.{apk} [asset [asset ...]]
...
aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \
...
[--utf16] [--auto-add-overlay] \
...
[-S resource-sources [-S resource-sources ...]] \
[-F apk-file] [-J R-file-dir] \
...
Package the android resources. It will read assets and resources that are
supplied with the -M -A -S or raw-files-dir arguments. The -J -P -F and -R
options control which files are output.
...
Modifiers:
..