您的位置:首页 > 编程语言 > Java开发

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二代。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: