SystemUI源码提取到eclipse中编译
2015-10-13 11:14
309 查看
SystemUI源码提取到eclipse中编译
SystemUI本身和系统的关联性比较大,在4.4以后,SystemUI和锁屏又整合在一起了。为了方便看代码和调试,将5.1的SystemUI提取出来(包括锁屏).以下是具体的步骤:
Step 1
将/frameworks/base/packages/SystemUI copy出来,在eclipse中导入工程。将/frameworks/base/packages/Keyguard 里面src下的文件都拷贝到工程中
完成以后如图所示
Step 2
因为SystemUI里面用到了很多系统接口,所以要把系统jar包作为lib加进来,需要用到的jar包为out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
out/target/common/obj/JAVA_LIBRARIES/service_intermediates/classes.jar
out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/javalib.jar
将这个三个jar作为systemlib添加进来。
Step 3
这个时候工程里会报很多错,一般先解决资源报错问题。将Keyguard文件夹里res下面的资源都弄过来,文件名重复的,可以改文件名,也可以把Keyguard里面的资源copy到SystemUI中,比如把2个strings.xml整合在一起。注意eclipse要选java 1.7版本。这一步将会花大量的时间去弄(反正我第一次弄了很久)。
Step 4
把Keyguard里面AndroidManifest.xml里的权限都拷贝到SystemUI的AndroidManifest中,重复的删掉给SystemUI AndroidManifest.xml中增加一个versionCode和versionName,因为机器启动安装priv-app的时候会检查这个权限
最好设置一个minSdkVersion,当然也可以不设置,不设置有可能图片会被拉伸。
代码里用到EventLog的会报错,这个其实可以屏蔽掉就好
Step 5
这个时候工程里应该没有什么错误了,开始编出一个apk。我们将编译出来的apk push到system/priv-app/SystemUI/中,重启之后发现SystemUI没出来或者出错。是因为SystemUI中用到了系统用户的权限,而要获得这个权限,必须用系统的签名。我们编译的是用eclipse默认的签名,当然不行。于是下一步需要改权限~_~,还真是麻烦,不过快好了。Step 6
将源码下的Build/target/product/security/下的platform.x509.pemplatform.pk8拷贝出来
out/host/linux-x86/framework/signapk.jar 拷贝出来
将编译出来的apk解压,删除里面的META-INF文件夹
运行java -jar signapk.jar platform.x509.pem platform.pk8 SystemUI.apk New_SystemUI.apk
重新push 重启以后应该可以运行了。
以上操作,基于android 5.1源码,机器为Nexus 7二代。
相关文章推荐
- java swing 窗口界面关闭事件响应
- Struts2
- java中的hashcode()和equals()
- Java基础——数组的使用
- 基于Spring4的全注解实现Restful开发
- Gradle 笔记——Java构建入门
- java-Collections工具类使用
- SpringMVC整合Shiro
- 深入详解Struts2——struts2框架的调用流程
- java垃圾回收
- flot 绘图文档API
- 公共技术点之 Java 反射 Reflection
- java HashSet 如何判断元素是否存在
- java HashSet 如何判断元素是否存在
- 分享Java常用几种加密算法(四种)
- java MD5加密
- selenium exceptionin java (org.openqa.selenium.remote.UnreachableBrowserException)
- SpringMVC Ajax例子
- java实现xml-rpc客户端和服务端
- JAVA从入门到精通读书笔记 第一章