应需求修改framework层,要想生效得重新编译该部分。
首先可以单独编译framework么?
答案是肯定的:在上一篇关于编译系统的介绍中简述了一些编译命令。在安卓系统中很好的一点就是模块化,再加上整个编译系统,可以针对单独的模块进行编译,当然也包括framework层。
编译产物是啥?
“framework在编译后会生成几个重要的jar包:framework.jar、core.jar、ext.jar、framework-res.jar。framework.jar包是framework层java源文件编译的。core.jar是dalvik虚拟机运行时所需要的java运行库文件。ext.jar包含了一些可扩展的类库文件。framework-res.jar包含了framework中所使用的各种资源文件。”
[也就是说framework目录下的那些子目录也不是全部编译到framework.jar中嘛,还有其他的,所以应该是要指定编译包括的子目录的。FRAMEWORK_BASE_SUBDIRS]
******************************************************************************************8
先来收集下在编译过程中遇到的问题:
1. “build/core/binary.mk:586: recipe for target
'out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp'
failed”
是bison的问题,但是安装后还是报一样的错误:permission
denied。
然后注意到提示:这里使用的bison是framework下的,不是系统/usr/bin下的。果断去检查发现是rw的,且只是针对owner,然后chmod,再次运行,发现其它有几个:clang,flex,
glibc*-ar 等也是permission denied。遇到后就果断改chmod。
改后可以继续往下运行了。
[假如编译的是framework-res.apk和framework.jar:那么在编译成功后提示:
install:
out/target/product/fugu/system/framework/framework-res.apk以及framework.jar
还有:make completed successfully.]
[另有些部分是在build系统那篇博文中]
编译完后如何作用在手机上呢?
使用adb push。
但这里有个问题,framework-res.apk,
framework.jar是在/system/framework目录下,而该目录要求root权限才可push。[尽管手机是root了的,但使用adb
push时还是会提示那个目录是read only,因为没有完全root。。。]
网上很多方法是remount,我试过后还是不行。那就曲线路径:
先push到sdcard,然后adb
shell进去,以su权限将sdcard的文件cp到/system/framework目录下。这里还有个问题:因为这些文件原来是存在的,所以要加参数-f,但我试过➕参数后还是不行。。。只能删掉后重新拷贝。
[注]参考
http://blog.csdn.net/droyon/article/details/8655031