Magsik 官网 https://github.com/topjohnwu/Magisk/

一、下载 Magsik 源码

git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git

二、下载 jni 依赖子模块源码

进入刚刚下载好的 Magisk 根目录执行如下命令

git submodule update --init --recursive

所依赖的子模块如下

看你网络情况,大概率你是下载不全的。下载到的模块信息如下

PS E:\github_workspace\Magisk> git submodule update --init --recursive
Submodule path ‘native/jni/external/dtc’: checked out ‘c0c2e115f82ed3bc5f9d3f9e5380f0f7e81a1c21’
Submodule path ‘native/jni/external/lz4’: checked out ‘d44371841a2f1728a3f36839fd4b7e872d0927d3’
Submodule path ‘native/jni/external/nanopb’: checked out ‘c9124132a604047d0ef97a09c0e99cd9bed2c818’
Submodule path ‘native/jni/external/parallel-hashmap’: checked out ‘7684faf186806e2c88554a78188c18185b21f127’
Submodule path ‘native/jni/external/pcre’: checked out ‘8e12681a1a252fd581830b2f65d1e154a2030bb9’
Submodule path ‘native/jni/external/xz’: checked out ‘2327a461e1afce862c22269b80d3517801103c1b’

下载不全编译就出各种错误,经过我仔细查看后得到解决办法

单独去 clone 下载失败的子模块源码,然后将其 copy 到 Magisk\native\jni\external 对应文件夹

子模块对应的下载 url 可以在 Magisk.gitmodules 中找到,其中 zlib 和 pcre 需要替换成清华源

比如这里面的 libcxx 和 zlib,单独建个临时文件夹,然后执行

git clone https://github.com/topjohnwu/libcxx.git

git clone https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/external/zlib

git clone https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/external/pcre

如果出现 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 问题,就多尝试就好,

github 网站有时候访问不太稳定

三、安装编译环境

python 3.8 下载安装

openJDk11 下载安装

android-studio-2021.1.1.21 下载安装

说明,最新版本的 Magisk 使用 jdk11 而且需要高版本 AS 才能编译成功。

四、导入 Magisk 源码到 AndroidStudio 编译

第一次编译需要先下载 ndk,执行指令 build.py ndk

出现错误

Traceback (most recent call last):
File “E:\github_workspace\Magisk\build.py”, line 42, in
import colorama
ModuleNotFoundError: No module named ‘colorama’

解决办法

执行 pip install colorama

然后再次执行 build.py ndk

出现错误

Please add Android SDK path to ANDROID_SDK_ROOT environment variable!

解决办法

Magisk\build.py 中 52 行之前增加 ANDROID_SDK_ROOT 对应路径,你自己的 AS sdk 路径可打开

local.properties 查看

os.environ.setdefault('ANDROID_SDK_ROOT', "D:\AndroidDevelop\sdk")if 'ANDROID_SDK_ROOT' not in os.environ:error('Please add Android SDK path to ANDROID_SDK_ROOT environment variable!')

然后再次执行 build.py ndk

E:\github_workspace\Magisk>build.py ndk

  • Downloading android-ndk-r23b-windows.zip

至此 ndk 下载成功

接下来开始 Magsik apk

继续执行指令 build.py all

出现错误

e: E:\github_workspace\Magisk\buildSrc\src\main\java\Codegen.kt: (235, 16): Unresolved reference: transferTo
e: E:\github_workspace\Magisk\buildSrc\src\main\java\Setup.kt: (216, 79): Unresolved reference: transferTo
e: E:\github_workspace\Magisk\buildSrc\src\main\java\Setup.kt: (223, 74): Unresolved reference: transferTo

解决办法

根据提示将对应 transferTo 调用注释,这个我在 github issues 中查过,并没有什么好的解决办法

继续执行指令 build.py all

出现错误

D:/AndroidDevelop/sdk/ndk/magisk/build//…/build/core/build-binary.mk:643: Android NDK: Module magisk depends on undefined modules: cxx
D:/AndroidDevelop/sdk/ndk/magisk/build//…/build/core/build-binary.mk:656: *** Android NDK: Note that old versions of ndk-build silently ignored this error case. If your project worked
on those versions, the missing libraries were not needed and you can remove those dependencies from the module to fix your build. Alternatively, set APP_ALLOW_MISSING_DEPS=true to allow
missing dependencies. . Stop.

Build binary failed!

解决办法

这个是由于一开始我的子模块 libcxx 源码没有下载完全导致的,后来重新 clone 后再编译通过了。

继续执行指令 build.py all

出现错误

  • Building binaries: magisk magiskinit magiskboot busybox

jni/magiskboot/compress.cpp:111:45: error: use of undeclared identifier ‘crc32_z’; did you mean ‘crc32’?
zo{}, out(nullptr), outsize(0), crc(crc32_z(0L, Z_NULL, 0)), in_total(0), bp(0) {
^~~~~~~
crc32
jni/external/zlib\zlib.h:1780:23: note: ‘crc32’ declared here
ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
^
jni/magiskboot/compress.cpp:159:15: error: use of undeclared identifier ‘crc32_z’; did you mean ‘crc32’?
crc = crc32_z(crc, in, len);
^~~~~~~
crc32
jni/external/zlib\zlib.h:1780:23: note: ‘crc32’ declared here
ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
^
2 errors generated.
make: *** [D:/AndroidDevelop/sdk/ndk/magisk/build//…/build/core/build-binary.mk:478: obj/local/armeabi-v7a/objs/magiskboot/magiskboot/compress.o] Error 1
make: *** Waiting for unfinished jobs…

Build binary failed!

解决办法

根据提示找到 compress.cpp 将 crc32_z 调用改成 crc32 即可

再次重新执行指令 build.py all,漫长的等待终于编译成功

E:\github_workspace\Magisk>build.py all

  • Building the stub app

注: E:\github_workspace\Magisk\stub\src\main\java\com\topjohnwu\magisk\DownloadActivity.java使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

Output: out\stub-release.apk

  • Building binaries: magisk magiskinit magiskboot busybox

  • Building the Magisk app

注: E:\github_workspace\Magisk\app\shared\src\main\java\com\topjohnwu\magisk\StubApk.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

Output: out\app-debug.apk

最终 out 文件下的 app-debug.apk 就是我们期待已久的面具,安装到设备上完美运行,接下来就可以魔改了

Magisk 最新版本 V24.1 源码编译踩坑集锦相关推荐

  1. kibana 5.5 源码编译踩坑记录

    由于项目需要定制开发kibana,因此需要编译kibana,在开发环境下运行. 注意:必须下载kibana 5.5的源码才能正常编译,下载release或者snapshot版本是不行的,运行npm s ...

  2. 基于onnxruntime的C++版本CPU/GPU源码编译

    基于onnxruntime的C++版本CPU/GPU源码编译 提示:基于onnxruntime的CPU/GPU源码编译,C++版本 文章目录 基于onnxruntime的C++版本CPU/GPU源码编 ...

  3. 撸啊撸,再次撸HashMap源码,踩坑源码中构造方法!!!每次都有收获

    前言 点赞在看,养成习惯. 点赞收藏,人生辉煌. 点击关注[微信搜索公众号:编程背锅侠],第一时间获得最新文章. HashMap系列文章 第一篇 HashMap源码中的成员变量你还不懂? 来来来!!! ...

  4. 最好用的Redis Desktop Manager 0.9.3 版本下载 以及源码编译教程

    文章目录 一.前言 二.编译教程 2.1 [redis destop manager 的源码地址](https://github.com/uglide/RedisDesktopManager) 2.2 ...

  5. Oryx 2.1.2版本: src源码编译

    2019独角兽企业重金招聘Python工程师标准>>> 1)打开 https://github.com/OryxProject/oryx/releases 2)下载 选择最新版本: ...

  6. android 编译 oserror,jdk/java版本与Android源码编译中的错误

    错误一:javap未指向有效的java版本 Traceback (most recent call last): File"../../base/android/jni_generator/ ...

  7. zookeeper源码编译的坑

    ant安装 我们知道项目构建工具有ant.maven.gradle zookeeper是一个比较老的项目,基于eclipse与ant 官网下载:https://ant.apache.org/bindo ...

  8. 利用TortoiseSVN获取最新版本的OpenCV源码

    转自: http://blog.csdn.net/vsooda/article/details/7555969 1.下载安装TortoiseSVN:http://tortoisesvn.net/dow ...

  9. 项目编译失败_Swift源码编译让底层更清晰

    WWDC2020 大会将通过 Apple Developer App 和 Apple Developer网站免费向所有开发者开放! 从去年火遍全网的 SwiftUI 以及 Combine 到今年全新的 ...

  10. pip安装wxpython报错traceback_使用源码编译wxpython-基于python2.7

    1.前言 本文主要讲述在linux环境下进行编译wxpython,在windows下面安装wxpython很简单,只要下载,然后直接执行exe文件,下一步下一步即可安装,在linux下面,则具有很多步 ...

最新文章

  1. 【码书】一本经典且内容全面算法书籍,学算法必备
  2. 黄河科技学院计算机补考好过吗,学生吐槽:重修费每学分240元不该收 黄河科技学院回应:收费合理...
  3. 观察内核linux行为,观察linux行为 实验报告.doc
  4. 在Apache Hadoop(多节点群集)中运行Map-Reduce作业
  5. 只看影子就能还原视频,MIT新算法让摄像头无死角
  6. ros下的python代码的编写与回调函数
  7. servlet下根据相对路径找资源
  8. JAVA 他人博客收藏 (To be continue)
  9. 高性能负载均衡是如何架构的?
  10. 视频编解码基础--01
  11. Python Excel教程之如何将多个 excel 文件合并为一个文件(教程含源码)
  12. 分析拼多多分享文案的技巧
  13. 休问情怀谁得似——冰雪小五台苦旅记(十完结篇)
  14. python防止源码泄露_ctf常见源码泄露 - Lmg66 - 博客园
  15. 不想玩大数据的厨子都不是冒险家
  16. 【Unity入门】24.碰撞检测
  17. android 角标框架,Android 实现桌面未读角标
  18. 基于java web的网上书店系统
  19. 微信跳转手机默认浏览器打开指定HTML链接 微信点击链接直接下载安装包实现方式及源码
  20. 你的跳槽涨薪幅度是多少?

热门文章

  1. java jco sap 重连_Java连接SAP,使用SAPJCO3.jar
  2. [转]3D Ripper DX模型截取器
  3. 迪兰RX550超能4G,这玩意儿居然可以开核?!!
  4. 数据库系统概念第六版
  5. php 读取文件函数效率,php使用file函数、fseek函数读取大文件效率分析
  6. Vmware 的一些序列号
  7. VAR模型及格兰杰因果检验——基于tushare平台的数据
  8. hustoj 配置java_HUSTOJ增加其他语言出现RuntimeError解决办法
  9. dell R740secure boot_凯诺 10月13日 DELL 电脑报价
  10. 质性数据分析软件NVivo教程:自动编码情感