1、恢复原锁,需要从ROM中提取以下文件
“120113官方版”ROM提取system\framework\framework-res.apk
“120113官方版”ROM提取system\framework\android.policy.jar
“11月官方版”ROM提取system\framework\framework-res.apk
“11月官方版”ROM提取system\framework\android.policy.jar
2、先反编译两个framework-res.apk来对比查看public.xml文件中资源的定义。反编译后先放到一边,过一会要用到。用“11月官方版”framework-res.apk中的res\layout\keyguard_screen_tab_unlock.xml替换“120113官方版”中的,然后编译“120113官方版”framework-res.apk接下来的事就不多说了。
3、反编译android.policy.jar
smali\com\android\internal\policy\impl目录下以LockScreen开头的文件就是锁屏文件。
4、删除“120113官方版”android.policy.jar 目录中LockScreen开头的所有文件,并复制“11月官方版ROM”android.policy.jar目录中LockScreen开头的所有文件到“120113官方版”android.policy.jar 目录中,其它文件不要动。其它文件关系密码锁、路径锁、关机菜单等。(LockScreen后面有$的文件是LockScreen.smali的子文件)。
5、11月版LockScreen.smali调用的资源与“120113官方版”的不一样,所有接下来我们需要修改LockScreen.smali中的代码,它的子文件不用修改。
6、从framework-res.apk中的public.xml文件看出,所有资源都有被赋予了一个16进制的ID,而在原锁代码中所以的资源应用都在LockScreen.smali中,它的子程序不用管,用文件编辑器打开它,搜索文本0x1,可以找到很多包括0x1的9位16进制代码,而在public.xml中的ID定义都是10位,这里的技巧是,LockScreen.smali中的0x后面都舍去了一个0,如0x1000001在public.xml中对应的是0x01000001。
7、知道了这个,这简单了,在LockScreen.smali中找到这些ID(ID就是0。。。的)然后在“11月官方版”public.xml中找到对应的资源名,再在“120113官方版”public.xml中用资源名找到对应的ID,接下来用“120113官方版”对应的资源ID换下LockScreen.smali中的ID,这是个细活,一定要有耐心。(这里是最重要的!我改的时候有点晕,全部改完一次以后,又从头搜索修改了一遍,结果全改错了,只好又重改了一次。这里推荐使用Beyond Compare软件对比查找能省很多工作。)
8、改完保存,编译“120113官方版”android.policy.jar。
“120113官方版”ROM提取system\framework\framework-res.apk
“120113官方版”ROM提取system\framework\android.policy.jar
“11月官方版”ROM提取system\framework\framework-res.apk
“11月官方版”ROM提取system\framework\android.policy.jar
2、先反编译两个framework-res.apk来对比查看public.xml文件中资源的定义。反编译后先放到一边,过一会要用到。用“11月官方版”framework-res.apk中的res\layout\keyguard_screen_tab_unlock.xml替换“120113官方版”中的,然后编译“120113官方版”framework-res.apk接下来的事就不多说了。
3、反编译android.policy.jar
smali\com\android\internal\policy\impl目录下以LockScreen开头的文件就是锁屏文件。
4、删除“120113官方版”android.policy.jar 目录中LockScreen开头的所有文件,并复制“11月官方版ROM”android.policy.jar目录中LockScreen开头的所有文件到“120113官方版”android.policy.jar 目录中,其它文件不要动。其它文件关系密码锁、路径锁、关机菜单等。(LockScreen后面有$的文件是LockScreen.smali的子文件)。
5、11月版LockScreen.smali调用的资源与“120113官方版”的不一样,所有接下来我们需要修改LockScreen.smali中的代码,它的子文件不用修改。
6、从framework-res.apk中的public.xml文件看出,所有资源都有被赋予了一个16进制的ID,而在原锁代码中所以的资源应用都在LockScreen.smali中,它的子程序不用管,用文件编辑器打开它,搜索文本0x1,可以找到很多包括0x1的9位16进制代码,而在public.xml中的ID定义都是10位,这里的技巧是,LockScreen.smali中的0x后面都舍去了一个0,如0x1000001在public.xml中对应的是0x01000001。
7、知道了这个,这简单了,在LockScreen.smali中找到这些ID(ID就是0。。。的)然后在“11月官方版”public.xml中找到对应的资源名,再在“120113官方版”public.xml中用资源名找到对应的ID,接下来用“120113官方版”对应的资源ID换下LockScreen.smali中的ID,这是个细活,一定要有耐心。(这里是最重要的!我改的时候有点晕,全部改完一次以后,又从头搜索修改了一遍,结果全改错了,只好又重改了一次。这里推荐使用Beyond Compare软件对比查找能省很多工作。)
8、改完保存,编译“120113官方版”android.policy.jar。