overlay是为了让不同产品有不同定制的一种技术,例如,有的产品中有扩展键盘,有的没有扩展键盘,
就可以使用overlay。
所谓overlay(覆盖),那么,首先应该有一个原始的配置,例如,以上面的需求为例,先在
frameworks/base/core/res/res/values/目录下编辑config.xml文件,在其中添加一项,config_hasExtKeyBoard,
默认值为false,另外,需在symbols.xml中添加一项,另外,在android.xml中添加一项(注意,其中的id是生成的,详见
《向config.xml添加一项》中的描述。
一般在/device/<product_name>/xxx/product_spec/的下每个产品都有一个目录,如果要对产品做定制,
只需在对应产品的目录中修改对应的config.xml中的内容即可,例如,针对上面的需求,到 /device/<company>/<product name>/product_spec/xxx/overlay/frameworks/base/core/res/res/values/config.xml中把对应项的值置为fal
然后,到/device/<company>/<product name>/xxx/overlay/frameworks/base/core/res/res/values/config.xml中把对应项的值置为true即可。
注意,要保证,在对应frameworks/base/core/res/res/values/config.xml中也有对应项的定义才可,否则overlay不生效。
另外,说一下cust定制与overlay的区别。
cust仓也能根据产品进行定制,那么,跟overlay有什么区别呢?
cust仓除了根据不同产品做定制,最主要的,也可以是同一个产品做不同的cust仓,例如,发往敏感国家时,
某个参数的值为true,而发往另一些国家时,参数的值为false等,那么,产品的软件版本可以做一个,在打包时,
使用不用的cust仓,效果自然不同。而overlay由于在编译时已经决定了的,所以,达不到这种效果。
Overlay是一种在Android系统中实现产品定制的技术。它通过覆盖原始配置来实现不同产品间的差异化,如扩展键盘的存在与否。首先,基础配置在frameworks/base/core/res/res/values/config.xml中设定,默认值如config_hasExtKeyBoard设为false。接着,在symbols.xml和android.xml中添加相应条目。当需要对特定产品定制时,只需在/device/<company>/<product name>/product_spec/xxx/overlay目录下修改对应config.xml文件中的值。要确保overlay生效,需保证基础配置中存在相应的条目。与cust定制的区别在于,cust仓允许同一产品根据不同市场定制,而overlay则在编译时确定,无法后期改变。
6986

被折叠的 条评论
为什么被折叠?



