MagiskBoot编译解包打包boot.img

news2024/11/15 23:50:48

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/

编译环境准备

1. Windows下启用开发者模式,因为需要 symbolic link 支持
image.png

image.png

2. 安装 python3.8+,并配置PATH环境变量

# 查看python版本信息
py --version
# 查看所有已安装的 Python 解释器路径
py -0p

3. git 启用 symbolic links

# 启用 symbolic links
git config --global core.symlinks true
# 查看 git 配置
git config --global --list

4. 安装 Android Studio ,设置环境变量 ANDROID_HOME 为 Android SDK 文件夹的路径。该路径可以在 Android Studio 的设置中找到。

5. 下载 Magisk 源码

# 下载 Magisk 源码
git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git

# 如果子模块克隆失败,可以手动克隆这些子模块。进入对应的子模块路径,然后执行以下命令
git submodule update --init --recursive

6. 运行 ./build.py ndk,下载并安装 NDK。

py .\build.py ndk

编译MagiskBoot

# 编译 native 模块,包括 magiskinit magisk magiskboot magiskpolicy
py .\build.py native

# 编译所有模块
py .\build.py all

编译成功后,在 Magisk\native\out\arm64-v8a 目录下可以看到 magiskboot 文件已经生成
image.png

使用 magiskboot 解包&打包内核

# 解包 boot.img
./magiskboot unpack boot.img

# 重新打包 img,得到一个 new-boot.img
./magiskboot repack boot.img

在Windows下使用magiskboot

在 magiskboot_build 上下载 magiskboot-e159716-release-windows-mingw-w64-msvcrt-i686-standalone.zip 并解压到 D:\App\magiskboot 目录下

image.png

新建 unpack.bat,扩展 magiskboot 使其可指定解压目录

@echo off
:: 检查是否提供了 IMG_PATH 参数
if "%~1"=="" (
    echo 请提供boot.img文件的路径作为参数!
    exit /b 1
)

:: 获取当前批处理文件所在的目录
set "SCRIPT_DIR=%~dp0"

:: 将相对路径转换为绝对路径
for %%I in ("%~1") do (
    set "IMG_PATH=%%~fI"
    set "OUTPUT_DIR=%%~dpI%%~nI"
)

:: 创建输出目录(如果不存在)
if not exist "%OUTPUT_DIR%" (
    mkdir "%OUTPUT_DIR%"
)

:: 解包 boot.img 到输出目录
cd "%OUTPUT_DIR%"
"%SCRIPT_DIR%magiskboot" unpack "%IMG_PATH%"

echo 解包完成,文件已解包到 "%OUTPUT_DIR%" 目录中。

新建 repack.bat,根据指定解压目录重新打包 img,并把 new-boot.img 存放在解压目录下

@echo off
:: 检查是否提供了解包目录路径作为参数
if "%~1"=="" (
    echo 请提供解包目录的路径作为参数!
    exit /b 1
)

:: 获取当前批处理文件所在的目录
set "SCRIPT_DIR=%~dp0"

:: 将相对路径转换为绝对路径并获取解包目录名称
for %%I in ("%~1\.") do (
    set "UNPACK_DIR=%%~fI"
    set "UNPACK_NAME=%%~nxI"
)

:: 检查是否成功获取目录名称
if "%UNPACK_NAME%"=="" (
    echo 无法获取解包目录的名称!
    exit /b 1
)

:: 获取 UNPACK_DIR 的父目录路径
for %%I in ("%UNPACK_DIR%\..") do (
    set "PARENT_DIR=%%~fI"
)

:: 设置新的 BOOT_IMG 路径,位于 UNPACK_DIR 的父目录
set "BOOT_IMG=%PARENT_DIR%\%UNPACK_NAME%.img"

:: 切换到解包目录
cd "%UNPACK_DIR%"

:: 打包回 boot.img
"%SCRIPT_DIR%magiskboot" repack "%BOOT_IMG%"

echo 打包完成,新的 "%BOOT_IMG%" 已生成并存放在 "%UNPACK_DIR%"。

将 magiskboot 解压路径添加到系统 Path 环境变量
image.png

# 解包 boot.img
unpack .\boot.img
# 重新打包 img,得到一个 new-boot.img 在 boot 目录下
repack .\boot\

源码地址:https://github.com/CYRUS-STUDIO/MagiskBootWindows

参考:
Magisk V26.1 编译
在 macOS/Windows/Linux 上使用 magiskboot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kali——sqlmap的使用

目录 前言 sqlmap在kali中的使用 检测注入点 产看所有数据库 查看当前网站使用的数据库 产看数据表 查看字段 查看字段数据 查看数据库用户 查看所有用户 获取数据库用户密码 查看用户权限 判断当前数据库用户是否是管理员 批量自动化扫描 post请求注入 cookie…

html+css+js网页设计 婚庆类型 金夫人婚庆5个页面

htmlcssjs网页设计 婚庆类型 金夫人婚庆5个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 …

时序预测 | 基于WTC+transformer时间序列组合预测模型(pytorch)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 WTCtransformer时间序列组合预测模型 WTC,transformer 创新点,超级新。先发先得,高精度代码。 预测主模型transformer也可以改其他WTC-former系列,比如WTC-informer/autoformer等等…

STM32ADC(逐次逼近型)

1 ADC Analogto DigitalConverter 1 模拟信号转换器数字信号 2 幅度上是离散的(也就是把自然界的信息转换成单片机里面的信息) 2 12位逐次逼近型ADC 1 采样深度是指:用多少位二进制数来表示一个采样点 ADC的采样深度越深 转…

Prometheus之Blackbox监控

Prometheus之Blackbox监控 部署Blackbox 下载地址 https://github.com/prometheus/blackbox_exporter这里使用amd64架构的软件包,根据自己设备架构选择 右键复制链接地址 下载软件包 wget https://github.com/prometheus/blackbox_exporter/releases/download/v0…

海绵城市雨水监测系统

海绵城市雨水监测系统主要有:数据采集、无线数据传输、后台云服务、终端平台显示等部分组成。系统通过前端数据采集水质(ss\cod\浊度、PH等)、雨水雨量、流量、水位、土壤湿度、气象等数据。通过无线数据传输通讯(4G、5G、以太网、…

电力电容器一般用多久更换

电力电容器的更换周期取决于多个因素,包括其工作环境、使用条件、维护情况等。一般情况下,电力电容器的更换周期可以参考以下几个方面: 一、标准使用寿命 1、普通电力电容器: 使用寿命:通常为 8 到 15 年。这个范围可…

新神器!分享6款毕业AI论文写作推荐免费网站

在当今学术研究和写作领域,AI论文写作工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿,还能进行内容优化、查重和排版等操作。以下是六款值得推荐的AI毕业论文开题报告一键生成网站: 一、千笔-AIpassp…

软件测试——测试分类

测试分类 按照测试目标测试 界面测试 页面内展示的所有内容/元素都需要测试 参考UI图找不同 功能测试 ​ 如何设计功能测试用例? 参考产品规格说明书进行用例的编写,具体的测试用例需要使用黑盒设计测 试用例的方法,如等价类、边界值、…

zdppy+vue3+onlyoffice文档管理系统实战 20240829上课笔记 Python验证码框架完成

遗留的问题 还没有测试校验的功能 测试校验验证码的功能 生成验证码 from .tobase64 import get_base64 from .validate import is_captchadef captcha(api, cache, num4, expire60):""":param cache: 缓存对象:param num: 验证码的个数:param expire: 验证…

【cocos creator】养成游戏简易事件系统,每日随机事件,每日行动点重置,根据数据检测多结局

const { ccclass, property } cc._decorator;let actionEvent {EVENT1: { name: "工作", need: { ap: 1 }, cost: { ap: 1 }, award: { coin: 50 }, count: 7, max_count: 5 },EVENT2: { name: "练功", need: { ap: 1 }, cost: { ap: 1 }, award: { atta…

渲染农场的收费会受到哪些因素的影响?

我们使用渲染农场时,其实渲染农场的单价并不是最终的单价,因为渲染农场的收费受到很多因素的影响,影响渲染农场收费标准的因素主要包括以下几个方面: 渲染类型 GPU渲染与CPU渲染:通常,GPU渲染由于其高性…

Zookeeper官网Java示例代码解读(一)

2024-08-22 1. 基本信息 官网地址: https://zookeeper.apache.org/doc/r3.8.4/javaExample.html 示例设计思路 Conventionally, ZooKeeper applications are broken into two units, one which maintains the connection, and the other which monitors data. I…

昇思AI框架实践2:基于T5的SQL语句生成模型推理

MindSpore 基于T5的SQL语句生成项目实施 基于T5的SQL语句生成项目介绍 本项目旨在开发一个基于T5-small模型的自然语言转SQL语句生成器。该生成器能够将用户以自然语言形式提出的查询请求转换为对应的SQL查询语句,从而使得即使是不熟悉SQL语言的用户也能够轻松地从…

【Java EE】JVM

目录 1. JVM简介 2.JVM运行流程 3.JVM运行时数据区 3.1 堆(线程共享) 3.2 Java虚拟机栈(线程私有) 1. JVM简介 JVM是 Java Virtual Machine 的简称,意为Java虚拟机。 虚拟机是指通过软件模拟的具有完整硬件功能的…

马克·古尔曼:预计苹果新款Macs要到10月才会发布

马克古尔曼当地时间8月24日在社交媒体平台推特平台发文称,从以往模式来看,预计苹果公司新款Mac要到10月才会发布。 古尔曼称,预计Mac mini将是今年最值得关注的、配置M4芯片的Mac,但预计苹果还会发布新款MacBook Pro。他表示&…

【Qt】网格布局管理器QGridLayout

网格布局管理器QGridLayout Qt中提供QGridLayout用来实现网格布局的效果。 核心属性 整体和 QVBoxLayout 以及 QHBoxLayout 相似. 但是设置 spacing 的时候是按照垂直⽔平两个 ⽅向来设置的. 属性说明 layoutLeftMargin 左侧边距 layoutRightMargin 右侧边距 layoutTo…

类与Object.create之间的继承

前言 ● 下面是一段之前学习Object.create的一段代码 const PersonProto {calcAge() {console.log(2037 - this.birthYear);},init(firstName, birthYear) {this.firstName firstName;this.birthYear birthYear;} };const zhangsan Object.create(PersonProto); ● 和之前…

day-43 括号生成

思路 通过深度优先遍历,把所有可能的组合枚举出来,然后依次判断是否符合括号规则,符合则加入链表 解题过程 判断是否括号规则:第一个位置只能是(,维护一个val值(初始值为0),遍历字符串,每当加入…

深度强化学习算法(四)(附带MATLAB程序)

深度强化学习(Deep Reinforcement Learning, DRL)结合了深度学习和强化学习的优点,能够处理具有高维状态和动作空间的复杂任务。它的核心思想是利用深度神经网络来逼近强化学习中的策略函数和价值函数,从而提高学习能力和决策效率…