Android源码 在framework中加入一张图片资源,获取不到资源文件

在项目开发时发需要在framework/base/services中引用一张图片,但是系统中并没有定义该图片,因此考虑向资源文件夹framework/base/core/res中加入一张图片资源,步骤如下:

1.将图片资源stat_notify_alarm.png拷贝到framework/base/core/res/res/drawable-hdpi下(因为本项目引用的就是hdpi下的资源)

2.修改framework/base/core/res/res/values/symbols.xml文件,声明该图片资源。symbols.xml里面声明的是系统内部资源,只提供给系统内部使用,外部app是无法访问的,如果是在public.xml中声明,则表示的是公共的资源,外部app也可以访问。

3.编译framework/base/core/res模块,会生成framework-res.apk。此时查看目录/out/target/common/R/com/android/internal/R.java文件,此时会看到该图片资源对应的id生成。

4.在framework/base/services中引用相应的图片资源,引用方式为:com.android.internal.R.drawable.stat_notify_alarm(若是公共的资源,则还可以使用android.R.drawable.xxx的方式)然后编译时生成service.jar包,不过可能会发现仍然找不到该图片资源,此时需要在framework/base下执行mmm .生成framework.jar,若还是找不到资源,则需要进入源码根目录下执行make update-api,更新一下api,然后再编译services,发现编译成功生成了services.jar。

5.将生成的framework-res.apk和services.jar分别push到设备中并重启设备即可看到效果。

6.在上传代码至远程仓库时,除了上传修改的代码意外,还要查看framework/base/api下有无更新,若有current.txt和system-current.txt改变,则需要一并上传。

symbol.xml修改为:

在这里插入图片描述
引用方式为:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_27494201/article/details/128014840