开发 Magisk 模块巧妙解决 Android App 开机自启异常


前言

今年淘汰下来一个备用机 Nokia X6, Android 9.0系统,高通636 6+64G 的配置,余温尚存,于是乎我便想拿它再利用一下。

目前的计划是基于 termux 和我自己开发的一系列辅助工具做一个远程 Linux服务器使用,已经解锁bootloader、刷好 Recovery及TWRP;

等我环境也已经搭建完毕之后我发现了一个大问题,我写的开机自启唤醒软件无法正常使用,直接拉起不了程序,尝试了下重新编译依旧无果,搁着了几天,今天心血来潮用magisk写了模块搞定。

面具(Magisk)是什么

Magisk is a suite of open source software for customizing Android, supporting devices higher than Android 5.0.
  • Some highlight features:
  • MagiskSU: Provide root access for applications
  • Magisk Modules: Modify read-only partitions by installing modules
  • MagiskBoot: The most complete tool for unpacking and repacking Android boot images
  • Zygisk: Run code in every Android applications' processes

简单翻译:一个兼具 Root 权限管理同时带有各式各样优化模块的一款APP,使用 magisk 能够将手机性能发挥到极致。

感兴趣可以继续看看这篇文章:每个 Android 玩家都不可错过的神器(一):Magisk 初识与安装

开发日志

先附上官方开发文档,文档写的非常详细;
但是我还是先撸代码~

有图有真相

核心代码

/termux/scripts/start.sh 开机启动脚本
#!/system/bin/sh

MODDIR=${0%/*}

# run my app when Android boot
start_wake () {
  am start -n cn.suroy.autoboot/com.stardust.autojs.inrt.SplashActivity &>> /data/termux-boot/run/service.log & # 拉起我开发的远程定时重启工具
  am start -p com.termux &>> /data/termux-boot/run/service.log & # 拉起termux
}


if [ ! -f /data/termux-boot/manual ] ; then
  start_wake
fi

主要通过一个 adb 命令唤醒App实现,一般手机都不致于有这样莫名其妙的问题,记录一下给个踩坑参考。

以上项目均开源,文末有项目仓库地址,喜欢的可以fork/Star。

更多开发指引可以看看 Magisk模块常用功能编写

搞机建议

未来Magisk框架会发生的变化:

(1)MagiskHide(隐藏root功能)将被移除,将会由一个类似于黑名单的特性代替,比起MagiskHide的「隐瞒修改」,被加入黑名单的App将「不被修改」

(2)Magisk模块仓库(app内在线下载模块)同样将被移除,短期内只能通过zip安装模块,未来有允许用户自定义源的打算,不过没有明确时间

(3)Zygisk:Magisk将嵌入Zygote,将为Magisk模块提供更深入、更强悍的修改能力

综上,若是主力机搞机使用,建议使用 Zygisk

Magisk 仓库

注意检测源码是否包含恶意代码再导入模块!

项目开源地址

有用记得给星星 fork、Start

声明:Grows towards sunlight |版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 开发 Magisk 模块巧妙解决 Android App 开机自启异常


Grows towards sunlight and Carpe Diem