【问题标题】:How does the Android source overlays work?Android 源代码覆盖如何工作?
【发布时间】:2017-05-26 21:54:24
【问题描述】:

device/sample 文件夹中的android 源中有一个名为overlays 的文件夹。您在例如看到相同的覆盖文件夹cyanogen mods

这个覆盖文件夹是什么?它是如何工作的?它是干什么用的?我在哪里可以了解更多信息?

提前致谢

【问题讨论】:

    标签: android overlay android-source


    【解决方案1】:

    例如,假设您想为您的设备修改 Android 源代码中的一些文件(例如,您想向 Launcher 资源添加额外的字符串)。不建议修改Android的实际源代码。

    您可以创建模仿 Android 的实际文件系统路径布局的叠加层,并将更改的文件放在那里。如果是 Laucher 中的字符串,则创建与路径对应的目录:packages/apps/Launcher2/res/values 并将修改后的strings.xml 放在那里

    因此,当您构建设备时,此文件将被替换。

    【讨论】:

    • 好的,所以这仅适用于资源,不适用于我所按的 java 源?
    • 我猜Java也是,但我还没有检查。
    • 据我所知,它仅适用于资源,不适用于 Java 源文件。因此,IMO 的可用性非常有限。 @Yury:您是否有任何使用 Java 源代码的示例或任何我可以阅读更多信息的参考资料?
    • 我刚刚检查过。你是对的 - 它只能用于替换资源文件。
    • 谢谢,请问您是否通过测试进行了检查,或者您是否有任何有关此信息的来源? (我想要一个链接到您获取信息的位置?:))
    【解决方案2】:

    覆盖是自定义资源文件的一种方式,不适用于源文件。

    替换适用于字符串粒度。这意味着,对于覆盖文件中不存在的字符串,将使用原始字符串中的相应字符串。

    来自brief documentation

    Android 构建系统在构建时使用资源覆盖来自定义产品。资源覆盖指定在默认值之上应用的资源文件。要使用资源覆盖,请修改项目构建文件以将 PRODUCT_PACKAGE_OVERLAYS 设置为相对于您的顶级目录的路径。当构建系统搜索资源时,该路径将成为与当前根一起搜索的影子根。

    最常用的自定义设置包含在文件 frameworks/base/core/res/res/config.xml 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      相关资源
      最近更新 更多