以修改Settings.apk 为例
以 /home/a/apk 为工作目录
一 初始化
2. 复制工程下文件到 工作目录
out\host\linux-x86\bin\aapt
out\host\linux-x86\framework\signapk.jar
build\target\product\security\platform.pk8
build\target\product\security\platform.x509.pem
out\target\product\rk30sdk\system\framework\framework-res.apk
3.
临时将工作目录增加到 PATH 中
export PATH=$PATH:/home/a/apk
4. 安装系统资源
java -jar
apktool.jar if
/home/a/apk/
framework-res.apk
三 解压包
java -jar apktool.jar d Settings.apk Settings
四 进行修改资源文件等操作
五 再打包
java -jar apktool.jar b Settings Settings_u.apk
六 签名 (APK 中 AndroidManifest.xml 有 <manifest android:sharedUserId="android.uid.system" 才需要系统级别签名
)
java
-
jar
signapk.jar
platform
.x509.pem
platform
.pk8
Settings_u.apk
Settings_n.apk
Settings_n.apk 为修改后的apk 改名 再放系统之中打包 就可以了。
apktool 下载地址:
apktool反编译工具使用详解
linux 解包
java -jar apktool.jar d Settings.apk Setttings
再打包
java -jar apktool.jar b Settings Settings.apk
错误处理:
报 aapt 命令不能执行:
...could not exec command: [aapt, p ...
|
需要 复制 out\host\linux-x86\bin\aapt
临时将当前目录增加到 PATH 中
export PATH=$PATH:/home/fibo/apk
不然 同样不能调用aapt
报告少资源
复制 out\target\product\rk30sdk\system\framework\framework-res.apk
使用以下代码进行安装
java -jar apktool.jar if framework-res.apk
apktool if tzframework-res.apk
签名命令:
java -jar signapk.jar platform.x509.pem platform.pk8 update.apk update_signed.apk
这条命令的意义是:通过signapk.jar这个可执行jar包,以“platform.x509.pem”这个公钥文件和“platform.pk8”这个私钥文件对“update.apk”进行签名,签名后的文件保存为“update_signed.apk”。
使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,首先找到密钥文件,在我的Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在"build\tools\signapk"下,用法为"signapk platform.x509.pem platform.pk8 input.apk output.apk",文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。
build\target\product\security\platform.pk8
build\target\product\security\platform.x509.pem
out\host\linux-x86\framework\signapk.jar