根据网上的一些制作 magisk 模块的模板, 制作一个模块如果要对 apk 进行修改则只能用修改后的 apk 文件整体替换原文件. 一个 apk 文件可能会达到几十 MB, 但实际需要修改的可能只有几百 KB. 而且整体替换会因系统版本更新导致有几率变砖.
根据网上的一些制作 magisk 模块的模板, 制作一个模块如果要对 apk 进行修改则只能用修改后的 apk 文件整体替换原文件. 一个 apk 文件可能会达到几十 MB, 但实际需要修改的可能只有几百 KB. 而且整体替换会因系统版本更新导致有几率变砖.
此帖终结. 已经找到了方法, 但不完全依赖 Magisk:
zip -g <apkfile> <file1> [file2] [file3] ... 命令向现有 apk 文件追加要替换的文件.zipalign 命令对 apk 文件进行处理. 前面提到因为修改 apk 导致变砖可以尝试这个.对于 zip -g 命令, 要追加的文件最好和 apk 处于同一路径, 在命令行里可以用 ./*/*.* 之类的相对路径, 这样可以使追加到压缩包内的文件也使用相对路径. 例如 zip -g /system/framework/framework-res.apk ./res/drawable-nodpi-v4/spot_down_01.png ./res/drawable-nodpi-v4/spot_down_02.png ./res/drawable-nodpi-v4/spot_down_03.png
每次刷机后执行带有以上命令的 shell 脚本即可. 如果系统没有内置 zip 命令, 可以在 magisk 中安装 ZipSinger & Zip for Android NDK 模块.
1
ReferenceE Apr 20, 2021 via Android
" 而且整体替换会因系统版本更新导致有几率变砖."
请问这个是怎么做到的?( |
2
YamatoRyou OP @ReferenceE "整体替换" 相对于整个 apk 文件而言. 我现在用的是欧版 MIUI 12.6, 曾经遇到过因为替换 framework-res.apk 之后又经过系统更新后手机变砖 (进不去系统, 只能进 rec) 的现象. 虽然后来救砖成功, 但每更新一次系统, 这个模块就要重做一次.
|
3
i0error Apr 20, 2021
可以考虑安装 apktool ?
然后做一遍修改的过程,之前似乎看到过这样的模块。 |
4
YamatoRyou OP @i0error 并非对其进行反编译, 只是替换里面的几个资源文件 (如位图 / 字体).
|
5
ysc3839 Apr 21, 2021 via Android 没办法,最多只能实现安装时跑个脚本进行替换,然后把替换后的结果保存下来。
另外你说是修改 framework-res.apk ,应该优先考虑 Runtime Resource Overlays 。 |
6
ysc3839 Apr 21, 2021 via Android
最后建议说出原始需求,避免 X-Y Problem 。
关于 X-Y Problem 请看 https://coolshell.cn/articles/10804.html |
7
YamatoRyou OP @ysc3839 我刚才发现 Magisk 仓库有一个 zip 命令支持, 用 termux 执行命令操作 apk 时卡在了 /system 分区空间不足的问题上, 鉴于空间问题目前无解, 也就没法确定即使空间充裕了, 下一个问题是不是操作 apk 的时候也会遭遇我没料到的障碍. 进而最终失败. 我会去找别的方法. 至于 "原始需求", 无非是字体或一些图案的替换.
|
8
300 Apr 21, 2021 via Android
用 xposed ?
|
9
yukiww233 Apr 21, 2021
|