android 在framework 层添加资源 或 类方法 类属性

我在Android开发中有时需要在内部资源中添加属性或者其它资源,这些资源可以是私有的仅供内部使用,也可以是公有的即开放给其他App使用。如何添加呢?听笔者娓娓道来:

1 如果你的修改是为了提供给第三方API调用者使用

1.  在相应的资源文件中添加该属性:

     例如添加boolean类型的资源   则需要在在/frameworks/base/core/res/res/values/config.xml添加

     <bool name="isExample">true</bool>

2.  添加共有资源则需要在/frameworks/base/core/res/res/values/public.xml中注册:

    <public type="bool" name="isExample" id="XXXX" />

     注意: id号码在文件中必须唯一,通常在public.xml中找到同类型的最后一个id值 + 1,一定要保证唯一性。

3  更新SDK api,  frameworks/base/api/current.xml
       执行:  make update-api  (记得回到项目根目录下执行,不能在framework/base目录下执行)

 

2  如果你的修改只是为了给自己此次调用,别不需要放开给api第三者调用

如你要添加一个String类型的字段 则在/frameworks/base/core/res/res/values/strings.xml文件中定义即可

 <string name="time_picker_hour_label" msgid="xxxxxxxx">"小时"</string>

3.把添加的资源在/frameworks/base/core/res/res/values/symbols.xml中注册即可:

   <java-symbol type="bool" name="isExample" />

 如果你的字段只是自己,但非要在pulick.xml文件中声明就要以下方式:

    <!-- @hide @SystemApi -->
    <public type="attr" name="requiredSystemPropertyName" id="0x01010565" />
    <!-- @hide @SystemApi -->

4. 编译framework-res.apk :

    在/frameworks/base/core/res下执行mm -B

5. 在out/target/common/R/com/android/internal/R.java 中搜寻mybool检查是否该资源被成功编译。


如果是在java文件中重新定义了类方法 或是类属性

1   在需要在增加的方法 或 属性 上方 添加 @hide到注释,这个注释我们并不陌生,这样修改在上层就不可以调用,不符合我们要求

必须这样:/**@hide*/

2  或是通过更新javadoc文档

make update-api

 

猜你喜欢

转载自blog.csdn.net/nei504293736/article/details/89705043
今日推荐