如何打包 Android ROM:修订间差异

来自Uotan Wiki · 刷机百科
(突出注意事项)
→‎2. 打包
 
(未显示同一用户的4个中间版本)
第1行: 第1行:
== 提醒事项 ==
== 提醒事项 ==
注意:本教程以在 Windows 10 平台下进行解包操作为例,并确保你拥有可以访问国际网络的能力
注意:本教程以在 Windows 10 平台下进行打包操作为例,并确保你拥有可以访问国际网络的能力


== 格式确认 ==
== 格式确认 ==
在正式开始之前,你需要了解你接下来需要打包的是哪种类型的文件。本教程将介绍
在正式开始之前,你需要了解你接下来需要打包的是哪种类型的文件。本教程将介绍


# img格式
# [[#img格式打包|'''img格式''']]
# dat格式
# [[#dat格式打包|'''dat格式''']]
# br格式
# [[#br格式打包|'''br格式''']]


== img格式打包 ==
== img格式打包 ==


=== 特别注意 ===
=== 特别注意 ===
本章节将分为三个部分,分别是
本章节将分为三个部分,分别是:


# ext4 格式 img 打包
# '''ext4 格式 img 打包'''
# erofs 格式 img 打包
# '''erofs 格式 img 打包'''
# boot/recovery类型 img 打包
# '''boot/recovery类型 img 打包'''


=== 1. ext4 格式打包 ===
=== 1. ext4 格式打包 ===
第26行: 第26行:
==== 1. 通过 make_ext4fs 打包 ====
==== 1. 通过 make_ext4fs 打包 ====


===== 1.获得所需工具 - make_ext4fs([https://github.com/ColdWindScholar/MIO-KITCHEN-SOURCE/blob/main/bin/Windows/AMD64/make_ext4fs.exe GitHub]) =====
===== 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. 打包 =====
===== 2. 打包 =====
# 将工具放置到 所需打包分区 所在目录
# 将工具放置到'''所需打包分区'''所在目录
# 在该目录下打开 cmd 命令行
# 在'''该目录'''下打开 cmd 命令行
# 记录 config\分区名_size.txt 内数值
# 记录 '''config\分区名_size.txt''' 内数值
# 输入 <code>make_ext4fs.exe -J -T 1167580800 -S config\分区名_file_contexts -l 上一步记录的数值 -C config\分区名_fs_config -L 分区名 -a 分区名 打包文件名 分区文件夹名</code>   (示例: <code>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</code>)
# 输入:<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文件夹)存放,避免造成找不到文件的情况。如果您的机器是动态分区,请参考第二种打包方式
* 打包要求您的文件需要'''严格按照解包后的结构'''(即'''所需打包文件夹 + config文件夹''')存放,避免造成找不到文件的情况。如果您的机器是动态分区,请参考第二种打包方式
* 正确存放示例:<code>vendor config make_ext4fs.exe</code>


正确存放示例:vendor config make_ext4fs.exe


==== 2. 通过 mke2fs + e2fsdroid 打包 ====
==== 2. 通过 mke2fs + e2fsdroid 打包 ====


===== 1. 获得所需工具 - mke2fs + e2fsdroid =====
===== 1. 获得所需工具 - mke2fs + e2fsdroid =====
所需环境: Python([https://www.python.org/ 官网])
'''所需环境: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]


mke2fs - [https://github.com/ColdWindScholar/MIO-KITCHEN-SOURCE/blob/main/bin/Windows/AMD64/mke2fs.exe GitHub]
<p style="color: gray;">访问对应链接 并点击 '''下载图标''' 下载文件</p>
 
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]
* fspatch - [https://github.com/affggh/fspatch GitHub]


访问对应链接 并点击 下载图标 下载文件
<p style="color: gray;">访问 fspatch 仓库并点击 '''Code - Download zip''' 下载</p>
 
fspatch - [https://github.com/affggh/fspatch GitHub]
 
访问 fspatch 仓库并点击 Code - Download zip 下载


===== 2. 打包 =====
===== 2. 打包 =====


# 将工具及运行库放置到 所需打包分区 所在目录
# 将工具及运行库放置到'''所需打包分区'''所在目录
# 在该目录下打开 cmd 命令行
# 在'''该目录'''下打开 cmd 命令行
# 输入 <code>python fspatch.py 分区文件夹名 config\分区名_fs_config</code> (示例: <code>python fspatch.py vendor config\vendor_fs_config</code>)
# 输入:<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)
# 记录'''config\分区名_size.txt'''内数值,并除以'''4096'''后的数值 (例如: 11451419 / 4096)。如果有'''小数点'''(如 114514.19),请向上取整(如 114515)
# 输入 <code>mke2fs -O ^has_journal -L 分区名 -I 256 -M /分区名 -m 0 -t ext4 -b 4096 打包文件名 上一步记录的数值</code> (示例: <code>mke2fs -O ^has_journal -L vendor -I 256 -M /vendor -m 0 -t ext4 -b 4096 vendor_new.img 114515</code>)
# 输入:<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>
# 输入 <code>e2fsdroid -e -T 1167580800 -S 分区名_fs_config的绝对路径 -C 分区名_fs_config的绝对路径 -a /分区名 -f 分区文件夹名 上一步输入的打包文件名</code> (示例: <code>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</code>)
# 输入:<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文件夹)存放,避免造成找不到文件的情况。
* 打包要求您的文件需要'''严格按照解包后的结构'''(即'''所需打包文件夹 + config文件夹''')存放,避免造成找不到文件的情况。
# 正确存放示例:vendor config mke2fs.exe e2fsdroid.exe cygwin1.dll fspatch.py
* 正确存放示例:<code>vendor config mke2fs.exe e2fsdroid.exe cygwin1.dll fspatch.py</code>


=== 2. erofs 格式打包 ===
=== 2. erofs 格式打包 ===


==== 1. 获得所需工具 - mkfs.erofs ====
==== 1. 获得所需工具 - mkfs.erofs ====
所需环境: Python([https://www.python.org/ 官网])
所需环境:Python - [https://www.python.org/ 官网]


所需工具:
所需工具:
 
* mkfs.erofs - [https://github.com/sekaiacg/erofs-utils GitHub]
mkfs.erofs - [https://github.com/sekaiacg/erofs-utils GitHub]
<p style="color: gray;">访问工具 GitHub 仓库并从 '''Release''' 内下载工具</p>
 
* fspatch - [https://github.com/affggh/fspatch GitHub]
请访问工具 GitHub 仓库并从 Release 内下载工具
<p style="color: gray;">访问 fspatch 仓库并点击 '''Code - Download zip''' 下载</p>
 
fspatch - [https://github.com/affggh/fspatch GitHub]
 
访问 fspatch 仓库并点击 Code - Download zip 下载


==== 2. 打包 ====
==== 2. 打包 ====


# 将工具内所有文件放置到 所需打包分区 所在目录
# 将工具内所有文件放置到'''所需打包分区'''所在目录
# 在该目录下打开 cmd 命令行
# 在'''该目录'''下打开 cmd 命令行
# 输入 <code>python fspatch.py 分区文件夹名 config\分区名_fs_config</code> (示例: <code>python fspatch.py vendor config\vendor_fs_config</code>)
# 输入:<pre>python fspatch.py 分区文件夹名 config\分区名_fs_config</pre>示例:<pre>python fspatch.py vendor config\vendor_fs_config</pre>
# 输入 <code>mkfs.erofs -zlz4hc,8 -T 1167580800 --mount-point=/分区名 --fs-config-file=分区名_fs_config的绝对路径 --file-contexts=分区名_file_contexts的绝对路径 打包文件名 分区文件夹名</code> (示例: <code>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</code>)
# 输入:<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文件夹)存放,避免造成找不到文件的情况。
* 打包要求您的文件需要'''严格按照解包后的结构'''(即'''所需打包文件夹 + config文件夹''')存放,避免造成找不到文件的情况。
# 正确存放示例:vendor config mkfs.erofs.exe winfsp-x64.dll cygwin1.dll fspatch.py
* 正确存放示例:<code>vendor config mkfs.erofs.exe winfsp-x64.dll cygwin1.dll fspatch.py</code>


=== 3. boot/recovery类型 img 打包 ===
=== 3. boot/recovery类型 img 打包 ===
第110行: 第103行:
==== 2. 打包 ====
==== 2. 打包 ====


# 将工具放置到 所需打包boot/recovery 所在目录
# 将工具放置到'''所需打包的boot/recovery'''的'''所在目录'''
# 在该目录下打开 cmd 命令行
# 在'''该目录'''下打开 cmd 命令行
# 输入 <code>magiskboot.exe repack 原img文件 新img文件</code> (示例: <code>magiskboot.exe repack boot.img boot_new.img</code>)
# 输入:<pre>magiskboot.exe repack 原img文件 新img文件</pre>示例:<pre>magiskboot.exe repack boot.img boot_new.img</pre>
# 小等一会将会打包完成
# 小等一会将会打包完成


===== 注意 =====
===== 注意 =====


# 请严格按照解包教程内的 解包方法 操作才可使用本方法进行打包
* 请'''严格按照'''解包教程内的'''解包方法'''操作才可使用本方法进行打包


== dat格式打包 ==
== dat格式打包 ==
第130行: 第123行:
# 将工具解压到 img文件 所在目录
# 将工具解压到 img文件 所在目录
# 在该目录下打开 cmd 命令行
# 在该目录下打开 cmd 命令行
# 输入 <code>python img2sdat.py img文件 -v 4 [-p 分区名]</code> (示例: <code>python img2sdat.py system.img -v 4 -p system</code>)
# 输入 <pre>python img2sdat.py img文件 -v 4 [-p 分区名]</pre>示例:<pre>python img2sdat.py system.img -v 4 -p system</pre>
# 小等一会将会打包完成
# 小等一会将会打包完成


第146行: 第139行:
# 将工具解压到 br文件 所在目录
# 将工具解压到 br文件 所在目录
# 在该目录下打开 cmd 命令行
# 在该目录下打开 cmd 命令行
# 输入 <code>brotli -q 5 dat文件 -o 输出的br文件</code> (示例: <code>brotli -q 5 system.new.dat -o system.new.dat.br</code>)
# 输入:<pre>brotli -q 5 dat文件 -o 输出的br文件</pre>示例:<pre>brotli -q 5 system.new.dat -o system.new.dat.br</pre>
# 小等一会 br文件 将会被解压 解压后的文件在同目录
# 小等一会,br文件将会被解压,解压后的文件在'''同目录'''


===== 注意 =====
===== 注意 =====


# -q 后的数字为压缩等级,可选1 - 9,数字越大 压缩率越高 耗时越长
* '''-q''' 后的数字为压缩等级,可选1 - 9。数字越大,压缩率越高,耗时越长。

2024年2月17日 (六) 02:30的最新版本

提醒事项

注意:本教程以在 Windows 10 平台下进行打包操作为例,并确保你拥有可以访问国际网络的能力

格式确认

在正式开始之前,你需要了解你接下来需要打包的是哪种类型的文件。本教程将介绍

  1. img格式
  2. dat格式
  3. br格式

img格式打包

特别注意

本章节将分为三个部分,分别是:

  1. ext4 格式 img 打包
  2. erofs 格式 img 打包
  3. boot/recovery类型 img 打包

1. ext4 格式打包

本部分将分为两个部分(两种打包方式),分别是

  1. 通过 make_ext4fs 打包
  2. 通过 mke2fs + e2fsdroid 打包

1. 通过 make_ext4fs 打包

1.获得所需工具 - make_ext4fs - GitHub

访问工具链接并点击 下载图标 下载文件

2. 打包
  1. 将工具放置到所需打包分区所在目录
  2. 该目录下打开 cmd 命令行
  3. 记录 config\分区名_size.txt 内数值
  4. 输入:
    make_ext4fs.exe -J -T 1167580800 -S config\分区名_file_contexts -l 上一步记录的数值 -C config\分区名_fs_config -L 分区名 -a 分区名 打包文件名 分区文件夹名
    示例:
    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
  5. 小等一会将会打包完成
注意
  • 打包要求您的文件需要严格按照解包后的结构(即所需打包文件夹 + config文件夹)存放,避免造成找不到文件的情况。如果您的机器是动态分区,请参考第二种打包方式
  • 正确存放示例:vendor config make_ext4fs.exe


2. 通过 mke2fs + e2fsdroid 打包

1. 获得所需工具 - mke2fs + e2fsdroid

所需环境:Python - 官网

所需工具:

访问对应链接 并点击 下载图标 下载文件

访问 fspatch 仓库并点击 Code - Download zip 下载

2. 打包
  1. 将工具及运行库放置到所需打包分区所在目录
  2. 该目录下打开 cmd 命令行
  3. 输入:
    python fspatch.py 分区文件夹名 config\分区名_fs_config
    示例:
    python fspatch.py vendor config\vendor_fs_config
  4. 记录config\分区名_size.txt内数值,并除以4096后的数值 (例如: 11451419 / 4096)。如果有小数点(如 114514.19),请向上取整(如 114515)
  5. 输入:
    mke2fs -O ^has_journal -L 分区名 -I 256 -M /分区名 -m 0 -t ext4 -b 4096 打包文件名 上一步记录的数值
    示例:
    mke2fs -O ^has_journal -L vendor -I 256 -M /vendor -m 0 -t ext4 -b 4096 vendor_new.img 114515
  6. 输入:
    e2fsdroid -e -T 1167580800 -S 分区名_fs_config的绝对路径 -C 分区名_fs_config的绝对路径 -a /分区名 -f 分区文件夹名 上一步输入的打包文件名
    示例:
    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
  7. 小等一会将会打包完成
注意
  • 打包要求您的文件需要严格按照解包后的结构(即所需打包文件夹 + config文件夹)存放,避免造成找不到文件的情况。
  • 正确存放示例:vendor config mke2fs.exe e2fsdroid.exe cygwin1.dll fspatch.py

2. erofs 格式打包

1. 获得所需工具 - mkfs.erofs

所需环境:Python - 官网

所需工具:

访问工具 GitHub 仓库并从 Release 内下载工具

访问 fspatch 仓库并点击 Code - Download zip 下载

2. 打包

  1. 将工具内所有文件放置到所需打包分区所在目录
  2. 该目录下打开 cmd 命令行
  3. 输入:
    python fspatch.py 分区文件夹名 config\分区名_fs_config
    示例:
    python fspatch.py vendor config\vendor_fs_config
  4. 输入:
    mkfs.erofs -zlz4hc,8 -T 1167580800 --mount-point=/分区名 --fs-config-file=分区名_fs_config的绝对路径 --file-contexts=分区名_file_contexts的绝对路径 打包文件名 分区文件夹名
    示例:
    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
  5. 小等一会将会打包完成
注意
  • 打包要求您的文件需要严格按照解包后的结构(即所需打包文件夹 + config文件夹)存放,避免造成找不到文件的情况。
  • 正确存放示例:vendor config mkfs.erofs.exe winfsp-x64.dll cygwin1.dll fspatch.py

3. boot/recovery类型 img 打包

1. 获得所需工具 - magiskboot(GitHub)

请访问工具 GitHub 仓库并从 Release 内下载工具

2. 打包

  1. 将工具放置到所需打包的boot/recovery所在目录
  2. 该目录下打开 cmd 命令行
  3. 输入:
    magiskboot.exe repack 原img文件 新img文件
    示例:
    magiskboot.exe repack boot.img boot_new.img
  4. 小等一会将会打包完成
注意
  • 严格按照解包教程内的解包方法操作才可使用本方法进行打包

dat格式打包

1. 获得所需工具 - img2sdat(GitHub)

所需环境: Python(官网)

访问 img2sdat 仓库并点击 Code - Download zip 下载

2. 打包

  1. 将工具解压到 img文件 所在目录
  2. 在该目录下打开 cmd 命令行
  3. 输入
    python img2sdat.py img文件 -v 4 [-p 分区名]
    示例:
    python img2sdat.py system.img -v 4 -p system
  4. 小等一会将会打包完成
注意
  1. [-p 分区名] 为可选项 不传入此参数打包得到的 dat 名称默认为 system.new.dat, system.patch.dat, system.transfer.list

br格式打包

1. 获得所需工具 - brotli(GitHub)

请访问工具 GitHub 仓库并从 Release 内下载工具

2. 打包

  1. 将工具解压到 br文件 所在目录
  2. 在该目录下打开 cmd 命令行
  3. 输入:
    brotli -q 5 dat文件 -o 输出的br文件
    示例:
    brotli -q 5 system.new.dat -o system.new.dat.br
  4. 小等一会,br文件将会被解压,解压后的文件在同目录
注意
  • -q 后的数字为压缩等级,可选1 - 9。数字越大,压缩率越高,耗时越长。