且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ROM制作与修改第十三课:系统APK反编译和编译

更新时间:2022-05-21 15:00:49


系统APK的编译和反编译主要使用工具为apktool和压缩软件,WINRAR/7Z/好压均可。

在这我们主要讲系统APK的反编译和编译。

其实系统APK的反编译和编译和apk的区别不大,主要区别在于,系统APK涉及共享签名的问题,还有就是在反编译和编译前需要将两个依赖项进行IF命令操作,也可以理解为安装。

一、依赖项的IF命令:

1、提取你系统的system\framework下面的com.htc.resources.apk和framework-res.apk(原则上每个不同的系统都提取一次;注意修改过的这两个文件反编译或编译可能会失败);

2、将上面两项放入C盘根目录下,这个随便你放,只要在命令输入时路径相同就可以;

3、打开CMD或命令提示符,即DOS窗口;

4、在DOS窗口输入:

apktool if C:\com.htc.resources.apk 输入完成后回车键回车

apktool if C:\framework-res.apk 输入完成后回车键回车

5、这样IF命令和安装已经结束,这是系统APK编译必须的

二、反编译系统APK

所谓反编译系统APK就是将系统APK分解,让不可以识别的XML文件变为可以识别。

将需要反编译的系统APK放入C盘,我个人喜欢放C盘,个人自己去体会。

以framework-res.apk这个反编译为例:

命令: apktool d C:\framework-res.apk C:\framework-res回车

完成后会在C盘出现一个framework-res名称的文件夹。请注意,反编译完成总共只有5-6行,多出就是错误了。但是不是完全的错误,这个需要实际去查看错误原因了。

三、编译系统APK

编译系统APK就是将修改后的系统文件合成。

以上面反编译系统APK继续:

命令: apktool b C:\framework-res回车

完成后会在framework-res文件夹内build文件夹或dist文件夹内生成一个新的APK文件,这就是修改后的合成的新的APK文件。

四、如何使用修改后的系统APK

将合成的新的系统APK解压,获取你修改后的APK中的文件。然后用压缩软件打开未修改的原来的系统APK文件,将你修改后的文件替换进去,如果你修改的是values文件夹或者以values开头的文件夹内容,那么你就把解压后的新的文件resources.arsc替换进原来的系统APK中即可。如果你修改的其他文件夹的内容就替换其中的内容。用这种方式可以避免共享签名的问题,如果你纯粹使用使用新的APK文件放入系统,会造成死在第一屏或第二屏无限重启。

关于DEX后缀名的编译,暂时不推荐大家去修改,这个DEX反编译后生成的是smail文件夹。

实例:

一、打开默认第三方程序安装(未知源勾选):这个不需要上面说的依赖项支持

这里我只讲操作步骤,大家不要去懂得原理,可以参考此修改去修改其他的设置,但不是很推荐。

1、提取SettingsProvider.apk,按上面的方式反编译:apktool d C:\SettingsProvider.apk C:\SettingsProvider回车

2、用文本编辑器,找到:SettingsProvider\res\values\bools.xml

3、找到: <bool name="def_install_non_market_apps">false</bool>,将false修改为true,保存;

4、合成: apktool b C:\SettingsProvider回车

5、提取新的合成的新的文件resources.arsc文件替换到原来的SettingsProvider.apk中即可。

二、电量数字百分比编译:必须依赖项支持

电量百分比编译包括两部分:电量显示数字百分比和充电跑马灯显示

电量数字百分比显示:

1、提取framework-res.apk文件;

2、反编译framework-res.apk :apktool d C:\framework-res.apk C:\framework-res回车

3、打开两个文本编辑器:一个文本编辑器找到framework-res\res\drawable\stat_sys_battery.xml文件打开,删除其中的全部内容,另一个打开我下面提供的下载stat_sys_battery.xml文件或你自己的电量百分比文件,打开后全选,复制全部内容,黏贴到前一个文本文件内,然后保存;

4、将数字电量图片,大概100张或多102张图片替换至framework-res\res\drawable-hdpi文件夹中;

5、合成修改的文件为新的APK文件:apktool b C:\framework-res回车

6、解压新的APK文件,提取framework-res\res\drawable\stat_sys_battery.xml文件替换到原来未编译的framework-res.apk相同位置中,再把数字电量的图片同时替换到framework-res\res\drawable-hdpi文件夹中,即可。

电量跑马灯显示方式一样,只不过修改的是framework-res\res\drawable\stat_sys_battery_charge.xml文件,方法和上面相同。

电量百分比显示都一样,但是跑马灯效果有几种,我提供一种方式下载,提供的文件为反编译后可识别文件。