android添加系统资源
源文件路径: /frameworks/base/core/res/res
编译后路径: /out/target/product/项目名称/system/framework/framework-res.apk
R.Java文件: /out/target/common/R/com/android/internal/R.Java
资源的添加:
如在framework-res中添加一个共有字符串,需修改以下文件:
frameworks/base/core/res/res/values/public.xml
frameworks/base/core/res/res/values/strings.xml
如在framework-res中添加一个私有字符串,需修改以下文件:
frameworks/base/core/res/res/values/symbols.xml
frameworks/base/core/res/res/values/strings.xml
添加完成后进行 mmm framework/base/core/res 编译,然后检查是否添加到R.java文件中.
添加成功后 在代码中使用 com.android.internal.R.string.xxx 来引用.
在对系统新增了一些资源进行源码编译时会遇到 com.android.internal.R.XX can not find 的问题,可使用(make update-api)来更新api,
./frameworks/base/api/current.txt 会被重新生成.
public.xml 与 symbols.xml
public.xml中声明的是公共资源,所有应用程序都可以调用,symbols.xml中声明的是非公共资源,仅供系统内部使用,不对app开放.
public.xml 中字段格式为 <public type="attr" name="networkSecurityConfig" id="0x01010527" />
symbols.xml中字段格式为<java-symbol type="string" name="use_times"/>
symbols.xml是在4.2后,将系统私有的资源分离成了单独的文件.
若将私有的声明添加在了public.xml文件中,则编译时会报错,可采用 make framework 2>&1 | sed -n -f MakeJavaSymbols.sed | sort -u ,
此命令将会列出所有新增的私有资源,并将它们拷贝到symbols.xml中.
另外:若果添加其他资源,如layout,drawable 需要在对应的路径下的文件添加字段即可.
资源编译:
首先到res目录下面执行mm,得到framework-res.apk
然后在framwork中使用了新添加资源的目录下执行mm, 生成 *.jar
最后到/framework/base 下执行mm 重新生成最新的 framework.jar
android系统资源添加
最新推荐文章于 2024-06-20 11:09:00 发布