Edxposed研究之Magisk源码下载编译的详细实战教程
The following article is from 卓码空间 Author QDroid88888
说明:本文操作在Windows 平台实现。
一、Magisk源码下载
在终端执行如下git命令下载Magisk源码。
E:\workspace\androidstudio\EdXposedProj\20210109>git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git
以上命令执行完成之后,pcre模块会下载失败。是由于Magisk子模块"pcre"是从"https://android.googlesource.com/"下载,国内不能访问"https://android.googlesource.com/"。解决办法是把下载的地址改成清华源。
(1)、在Magisk源码根目录中修改.gitmodules的下载url。
文件路径为:
E:\workspace\androidstudio\EdXposedProj\20210109\Magisk\.gitmodules
修改之前:
...省略
[submodule "pcre"]
path = native/jni/external/pcre
url = https://android.googlesource.com/platform/external/pcre
...省略
修改之后:
...省略
[submodule "pcre"]
path = native/jni/external/pcre
url = https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/external/pcre
...省略
(2)、在Magisk源码根目录.git目录中修改config文件的下载url。
文件路径为:
E:\workspace\androidstudio\EdXposedProj\20210109\Magisk\.git\config
修改之前:
...省略
[submodule "pcre"]
url = https://android.googlesource.com/platform/external/pcre
[submodule "selinux"]re
...省略
修改之后:
...省略
[submodule "pcre"]
url = https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/external/pcre
...省略
(3)、在Magisk源码根目录执行git submodule命令下载子模块
参考命令如下:
E:\workspace\androidstudio\EdXposedProj\20210109\Magisk>git submodule update --init --recursive
Submodule path 'native/jni/external/pcre': checked out '986dc24ace8aea66189a95510813747155fa3800'
源码同步完成之后就可以用android studio加载Magisk工程源码了。如果同步过程中出现问题,可以参考如下文章配置maven下载源:
年轻人不讲武德之Android Studio中gradle文件下载慢解决办法
二、源码编译环境配置
(1)、安装python 3.7及以上版本,并将python加到系统PATH环境变量。比如python路径:
C:\Users\Qiang\AppData\Local\Programs\Python\Python37
python路径加到PATH环境变量之后如下所示:
(2)、安装JDK并配置jdk中bin所在路径到系统PATH环境变量,比如jdk bin路径:
C:\Program Files\Java\jdk1.8.0_74\bin
jdk bin加到PATH环境变量之后如下所示:
(3)、添加环境变量ANDROID_SDK_ROOT,并设置值为android studio配置的sdk路径。
Magisk同步完成之后,可以在Magisk工程根目录文件"local.properties"中获取sdk路径,比如local.properties可能的sdk路径配置:
...省略
sdk.dir=C\:\\Users\\Qiang\\AppData\\Local\\Android\\Sdk
...省略
配置之后如下图所示:
三、编译Magisk工程
编译之前首先用Android studio打开Magisk工程。并打开Android Studio "Terminal"终端,并在终端切换到Magisk源码根目录。如下所示:
Magisk工程中提供了脚本"build.py"来构建Magisk模块,终端执行"build.py"命令可以查看提供的编译命令参数。如下所示:
E:\workspace\androidstudio\EdXposedProj\20210109\Magisk>build.py
usage: build.py [-h] [-r] [-v] [-c CONFIG]
{all,binary,app,stub,snet,zip,uninstaller,clean,ndk} ...
Magisk build script
optional arguments:
-h, --help show this help message and exit
-r, --release compile in release mode
-v, --verbose verbose output
-c CONFIG, --config CONFIG
custom config file (default: config.prop)
actions:
{all,binary,app,stub,snet,zip,uninstaller,clean,ndk}
all build binaries, apks, zips
binary build binaries
app build Magisk Manager
stub build stub Magisk Manager
snet build snet extension
zip zip Magisk into a flashable zip
uninstaller create flashable uninstaller
clean cleanup
ndk setup Magisk NDK
(1)、如果是第一次编译,执行如下命令安装"ndk"编译环境。
E:\workspace\androidstudio\EdXposedProj\20210109\Magisk>build.py ndk
* Downloading android-ndk-r21d-windows-x86_64.zip
执行完成之后,ndk会被安装到ANDROID_SDK_ROOT指向的根目录。如下所示:
(2)、执行如下命令编译Magisk相关的模块
E:\workspace\androidstudio\EdXposedProj\20210109\Magisk>build.py all
* Building Magisk Manager stub
编译完成之后,在Magisk工程根目录out文件中可以看到生成的Magisk刷机包。如下所示:
Magisk刷机包编译完成之后,就可以使用twrp刷入到手机设备。Magisk刷入手机可以参考如下文章:
Edxposed学习研究(一)手把手教你安装Edxposed
上一篇Edxposed学习研究(三)免Magisk使用adb命令安装Edxposed
Edxposed学习研究相关文章:
Edxposed学习研究(一)手把手教你安装Edxposed
Edxposed学习研究(二)手把手编译Riru和Edxposed工程源码
Edxposed学习研究(三)免Magisk使用adb命令安装Edxposed
每天阅读分享的文章,是您最大的支持,还未关注的各位大佬们留个关注再走呗,后续每天会分享安全研究、Android系统源码定制开发等精彩文章