在Android源代码的
这个覆盖文件夹是什么?它如何工作?它有什么用?我在哪里可以阅读更多相关信息?
提前感谢。
device/sample
文件夹中,有一个名为overlays
的文件夹。在例如青柠模组中也可以看到相同的覆盖文件夹。这个覆盖文件夹是什么?它如何工作?它有什么用?我在哪里可以阅读更多相关信息?
提前感谢。
device/sample
文件夹中,有一个名为overlays
的文件夹。在例如青柠模组中也可以看到相同的覆盖文件夹。覆盖是自定义资源文件的一种方式,不适用于源文件。
替换按字符串粒度工作。这意味着对于覆盖文件中不存在的字符串,将使用原始字符串。
根据文档:
Android构建系统使用资源覆盖来定制产品的构建。资源覆盖指定要应用于默认资源之上的资源文件。要使用资源覆盖,请修改项目构建文件以将
PRODUCT_PACKAGE_OVERLAYS
设置为相对于顶级目录的路径。该路径成为影子根,在构建系统搜索资源时与当前根一起搜索。最常用的自定义设置包含在文件frameworks/base/core/res/res/values/config.xml中。
要在此文件上设置资源覆盖,请使用以下其中之一将覆盖目录添加到项目构建文件中:
或PRODUCT_PACKAGE_OVERLAYS := device/device-implementer/device-name/overlay
PRODUCT_PACKAGE_OVERLAYS := vendor/vendor-name/overlay
然后,将一个覆盖文件添加到目录中,例如:
vendor/foobar/overlay/frameworks/base/core/res/res/values/config.xml
在覆盖
config.xml
文件中发现的任何字符串或字符串数组将替换原始文件中找到的那些。
packages/apps/Launcher2/res/values
并将修改后的 strings.xml
放入其中。