打开/关闭搜索
搜索
打开/关闭菜单
通知
打开/关闭个人菜单
查看“如何打包 Android ROM”的源代码
来自Uotan Wiki · 刷机百科
查看
阅读
查看源代码
查看历史
associated-pages
页面
讨论
更多操作
←
如何打包 Android ROM
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
== 提醒事项 == 注意:本教程以在 Windows 10 平台下进行解包操作为例,并确保你拥有可以访问国际网络的能力 == 格式确认 == 在正式开始之前,你需要了解你接下来需要打包的是哪种类型的文件。本教程将介绍 # [[#img格式打包|'''img格式''']] # [[#dat格式打包|'''dat格式''']] # [[#br格式打包|'''br格式''']] == img格式打包 == === 特别注意 === 本章节将分为三个部分,分别是: # '''ext4 格式 img 打包''' # '''erofs 格式 img 打包''' # '''boot/recovery类型 img 打包''' === 1. ext4 格式打包 === 本部分将分为两个部分(两种打包方式),分别是 # 通过 make_ext4fs 打包 # 通过 mke2fs + e2fsdroid 打包 ==== 1. 通过 make_ext4fs 打包 ==== ===== 1.获得所需工具 - make_ext4fs - [https://github.com/ColdWindScholar/MIO-KITCHEN-SOURCE/blob/main/bin/Windows/AMD64/make_ext4fs.exe GitHub] ===== <p style="color: gray;">访问工具链接并点击 '''下载图标''' 下载文件</p> ===== 2. 打包 ===== # 将工具放置到'''所需打包分区'''所在目录 # 在'''该目录'''下打开 cmd 命令行 # 记录 '''config\分区名_size.txt''' 内数值 # 输入:<pre>make_ext4fs.exe -J -T 1167580800 -S config\分区名_file_contexts -l 上一步记录的数值 -C config\分区名_fs_config -L 分区名 -a 分区名 打包文件名 分区文件夹名</pre>示例:<pre>make_ext4fs.exe -J -T 1167580800 -S config\vendor_file_contexts -l 1145141919 -C config\vendor_fs_config -L vendor -a vendor vendor_new.img vendor</pre> # 小等一会将会打包完成 ===== 注意 ===== * 打包要求您的文件需要'''严格按照解包后的结构'''(即'''所需打包文件夹 + config文件夹''')存放,避免造成找不到文件的情况。如果您的机器是动态分区,请参考第二种打包方式 * 正确存放示例:<code>vendor config make_ext4fs.exe</code> ==== 2. 通过 mke2fs + e2fsdroid 打包 ==== ===== 1. 获得所需工具 - mke2fs + e2fsdroid ===== '''所需环境:Python''' - [https://www.python.org/ 官网] 所需工具: * mke2fs - [https://github.com/ColdWindScholar/MIO-KITCHEN-SOURCE/blob/main/bin/Windows/AMD64/mke2fs.exe GitHub] * e2fsdroid - [https://github.com/ColdWindScholar/MIO-KITCHEN-SOURCE/blob/main/bin/Windows/AMD64/e2fsdroid.exe GitHub] * 工具运行库 - [https://github.com/ColdWindScholar/MIO-KITCHEN-SOURCE/blob/main/bin/Windows/AMD64/cygwin1.dll GitHub] <p style="color: gray;">访问对应链接 并点击 '''下载图标''' 下载文件</p> * fspatch - [https://github.com/affggh/fspatch GitHub] <p style="color: gray;">访问 fspatch 仓库并点击 '''Code - Download zip''' 下载</p> ===== 2. 打包 ===== # 将工具及运行库放置到'''所需打包分区'''所在目录 # 在'''该目录'''下打开 cmd 命令行 # 输入:<pre>python fspatch.py 分区文件夹名 config\分区名_fs_config</pre> 示例:<pre>python fspatch.py vendor config\vendor_fs_config</pre> # 记录'''config\分区名_size.txt'''内数值,并除以'''4096'''后的数值 (例如: 11451419 / 4096)。如果有'''小数点'''(如 114514.19),请去除小数点并 '''+1'''(即 114515) # 输入:<pre>mke2fs -O ^has_journal -L 分区名 -I 256 -M /分区名 -m 0 -t ext4 -b 4096 打包文件名 上一步记录的数值</pre>示例:<pre>mke2fs -O ^has_journal -L vendor -I 256 -M /vendor -m 0 -t ext4 -b 4096 vendor_new.img 114515</pre> # 输入:<pre>e2fsdroid -e -T 1167580800 -S 分区名_fs_config的绝对路径 -C 分区名_fs_config的绝对路径 -a /分区名 -f 分区文件夹名 上一步输入的打包文件名</pre>示例:<pre>e2fsdroid -e -T 1167580800 -S D:\homo\config\vendor_file_contexts -C D:\homo\config\vendor_fs_config -a /vendor -f vendor vendor_new.img</pre> # 小等一会将会打包完成 ===== 注意 ===== * 打包要求您的文件需要'''严格按照解包后的结构'''(即'''所需打包文件夹 + config文件夹''')存放,避免造成找不到文件的情况。 * 正确存放示例:<code>vendor config mke2fs.exe e2fsdroid.exe cygwin1.dll fspatch.py</code> === 2. erofs 格式打包 === ==== 1. 获得所需工具 - mkfs.erofs ==== 所需环境:Python - [https://www.python.org/ 官网] 所需工具: * mkfs.erofs - [https://github.com/sekaiacg/erofs-utils GitHub] <p style="color: gray;">访问工具 GitHub 仓库并从 '''Release''' 内下载工具</p> * fspatch - [https://github.com/affggh/fspatch GitHub] <p style="color: gray;">访问 fspatch 仓库并点击 '''Code - Download zip''' 下载</p> ==== 2. 打包 ==== # 将工具内所有文件放置到'''所需打包分区'''所在目录 # 在'''该目录'''下打开 cmd 命令行 # 输入:<pre>python fspatch.py 分区文件夹名 config\分区名_fs_config</pre>示例:<pre>python fspatch.py vendor config\vendor_fs_config</pre> # 输入:<pre>mkfs.erofs -zlz4hc,8 -T 1167580800 --mount-point=/分区名 --fs-config-file=分区名_fs_config的绝对路径 --file-contexts=分区名_file_contexts的绝对路径 打包文件名 分区文件夹名</pre>示例:<pre>mkfs.erofs -zlz4hc,8 -T 1167580800 --mount-point=/vendor --fs-config-file=D:\homo\config\vendor_fs_config --file-contexts=D:\homo\config\vendor_file_contexts vendor_new.img vendor</pre> # 小等一会将会打包完成 ===== 注意 ===== * 打包要求您的文件需要'''严格按照解包后的结构'''(即'''所需打包文件夹 + config文件夹''')存放,避免造成找不到文件的情况。 * 正确存放示例:<code>vendor config mkfs.erofs.exe winfsp-x64.dll cygwin1.dll fspatch.py</code> === 3. boot/recovery类型 img 打包 === ==== 1. 获得所需工具 - magiskboot([https://github.com/ookiineko/magiskboot_build GitHub]) ==== 请访问工具 GitHub 仓库并从 Release 内下载工具 ==== 2. 打包 ==== # 将工具放置到'''所需打包的boot/recovery'''的'''所在目录''' # 在'''该目录'''下打开 cmd 命令行 # 输入:<pre>magiskboot.exe repack 原img文件 新img文件</pre>示例:<pre>magiskboot.exe repack boot.img boot_new.img</pre> # 小等一会将会打包完成 ===== 注意 ===== * 请'''严格按照'''解包教程内的'''解包方法'''操作才可使用本方法进行打包 == dat格式打包 == === 1. 获得所需工具 - img2sdat([https://kkgithub.com/xpirt/img2sdat GitHub]) === 所需环境: Python([https://www.python.org/ 官网]) 访问 img2sdat 仓库并点击 Code - Download zip 下载 === 2. 打包 === # 将工具解压到 img文件 所在目录 # 在该目录下打开 cmd 命令行 # 输入 <pre>python img2sdat.py img文件 -v 4 [-p 分区名]</pre>示例:<pre>python img2sdat.py system.img -v 4 -p system</pre> # 小等一会将会打包完成 ===== 注意 ===== # <code>[-p 分区名]</code> 为可选项 不传入此参数打包得到的 dat 名称默认为 <code>system.new.dat</code>, <code>system.patch.dat</code>, <code>system.transfer.list</code> == br格式打包 == === 1. 获得所需工具 - brotli([https://github.com/google/brotli/releases GitHub]) === 请访问工具 GitHub 仓库并从 Release 内下载工具 === 2. 打包 === # 将工具解压到 br文件 所在目录 # 在该目录下打开 cmd 命令行 # 输入:<pre>brotli -q 5 dat文件 -o 输出的br文件</pre>示例:<pre>brotli -q 5 system.new.dat -o system.new.dat.br</pre> # 小等一会,br文件将会被解压,解压后的文件在'''同目录''' ===== 注意 ===== * '''-q''' 后的数字为压缩等级,可选1 - 9。数字越大,压缩率越高,耗时越长。
返回
如何打包 Android ROM
。