Magisk 开始认识

介绍:     

       使用root这块的话,开始使用SuperSu 发现有一些问题,没有实时更新,又没办法修改【不是开源的】,magisk则是开源项目,作者很热情的修复bug,实时更新开源项目。 

     Magisk 是出自一位台湾学生 @topjohnwu 开发的 Android 框架,目前来说很牛逼的框架,很多地方都可以使用到。

      Xposed和magisk 在功能上有共同性,Xposed 通过劫持 Android 系统的 zygote 进程来加载自定义进程,看zip脚本可以看出替换app_process可执行文件,目前只能针对android 7.1之前的系统,android8.0以上系统,安装xposed 会出现开机不了文件。Magisk 则是通过启动时在 boot 中创建钩子,把 /data/magisk.img 挂载到 /magisk,构建出一个在 system 基础上能够自定义替换,增加以及删除的文件系统,所有操作都在启动的时候完成,实际上并没有对 /system 分区进行修改(即 systemless 接口,以不触动 /system 的方式修改 /system),magisk 相当于android系统的另一个分区,是独立开了的

Magisk 开始认识_第1张图片

 

Magisk 源码编译

         目前magisk最新版本已经到19.1 支持9.0系统下载地址:https://github.com/topjohnwu/Magisk/releases
          magisk是个开源项目,可以根据需求,编译属于直接的magisk版本
1.编译环境:
          python 环境要3.+以上版本
          java 环境 jdk 8
          需要配置ANDROID_NDK_HOME ndk 环境,下载地址(https://github.com/topjohnwu/FrankeNDK)
2.构建注释和说明
         带子模块克隆下来:`git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git`
         配置ndk环境,系统环境变量增加ANDROID_NDK_HOME 指向本地FrankeNDK(下载地址:https://github.com/topjohnwu/FrankeNDK)
         在`config.prop`中设置配置(`config.prop.sample`例子),修改后需要把`config.prop.sample`修改成`config.prop`即可,这里提示config.prop配置参数 version=  versionCode= 是magisk版本号,这里版本最好写正确,这个版本号是Magisk manager应用会验证的版本号【很多manager应用提示版本过低,就是这两个参数】

         编译指令 python build.py all [如果需要正式版本 加个参数 -r],build文件夹下会生成完整文件,zip是在recovery环境下进行刷入
这里提供一个twrp recovery下载地址:https://twrp.me/Devices/  覆盖很多刷机的设备的recovery

Magisk 安装  

    这里有两个方法
    第一方法:进入recovery,刷magisk-****.zip 包,这种是刷机常用的办法,一般是组合刷机包【META-INF\com\google\android\updater-script】
    第二方法:magisk原理实际是在系统中创建一个独立的分区,这里再boot.img创建独立的分区。
              (1)从当前固件的 boot.img 文件,将它传入到安装了 Magisk Manager 的手机中
              (2)进入 Magisk Manager —— 安装(install)—— install —— 修补 boot 镜像文件
              (3)然后选择传入的 boot.img 文件进行生成,并将生成后的 boot—Patched.img 传输到电脑上。
              (4)boot-patched.img 就是还有magisk 的boot.img
              (5)刷boot.img[还有magisk],进入fastboot ,fastboot flash boot  boot.img路径

         

你可能感兴趣的:(android,系统开发)