Magisk 如何对单个 apk 文件内部的文件进行替换?

2021-04-20 21:28:10 +08:00
 YamatoRyou

根据网上的一些制作 magisk 模块的模板, 制作一个模块如果要对 apk 进行修改则只能用修改后的 apk 文件整体替换原文件. 一个 apk 文件可能会达到几十 MB, 但实际需要修改的可能只有几百 KB. 而且整体替换会因系统版本更新导致有几率变砖.

5365 次点击
所在节点    Android
9 条回复
ReferenceE
2021-04-20 21:32:25 +08:00
" 而且整体替换会因系统版本更新导致有几率变砖."
请问这个是怎么做到的?(
YamatoRyou
2021-04-20 21:36:41 +08:00
@ReferenceE "整体替换" 相对于整个 apk 文件而言. 我现在用的是欧版 MIUI 12.6, 曾经遇到过因为替换 framework-res.apk 之后又经过系统更新后手机变砖 (进不去系统, 只能进 rec) 的现象. 虽然后来救砖成功, 但每更新一次系统, 这个模块就要重做一次.
i0error
2021-04-20 23:45:35 +08:00
可以考虑安装 apktool ?
然后做一遍修改的过程,之前似乎看到过这样的模块。
YamatoRyou
2021-04-21 02:34:12 +08:00
@i0error 并非对其进行反编译, 只是替换里面的几个资源文件 (如位图 / 字体).
ysc3839
2021-04-21 03:21:08 +08:00
没办法,最多只能实现安装时跑个脚本进行替换,然后把替换后的结果保存下来。
另外你说是修改 framework-res.apk ,应该优先考虑 Runtime Resource Overlays 。
ysc3839
2021-04-21 03:22:21 +08:00
最后建议说出原始需求,避免 X-Y Problem 。
关于 X-Y Problem 请看 https://coolshell.cn/articles/10804.html
YamatoRyou
2021-04-21 03:34:03 +08:00
@ysc3839 我刚才发现 Magisk 仓库有一个 zip 命令支持, 用 termux 执行命令操作 apk 时卡在了 /system 分区空间不足的问题上, 鉴于空间问题目前无解, 也就没法确定即使空间充裕了, 下一个问题是不是操作 apk 的时候也会遭遇我没料到的障碍. 进而最终失败. 我会去找别的方法. 至于 "原始需求", 无非是字体或一些图案的替换.
winterbells
2021-04-21 08:16:31 +08:00
用 xposed ?
yukiww233
2021-04-21 10:00:56 +08:00

参考这个, magisk module 直接放个脚本和替换的资源, 开机前完成解压修改替换

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772000

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX