
前言:
任何的适配第三方rom都需要了解一下系统的基本架构和安卓分区的基本常识。兴趣的友友可以参考以往相关博文
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
作者: Ranshen_Cervine 网址:KittenHyper
本教程以线刷包为基础;Redmi Note 12 Turbo 欧版Hyper作为底包,Redmi K70 Pro 国行Hyper作为移植包
Redmi Note 12 Turbo 欧版HyperOS版本 | Redmi K70 Pro 国行HyperOS版本 |
---|
OS1.0.4.0.UMREUXM | OS1.0.12.0.UNMCNXM |
移植思路:
- 移植system、system_ext、product、mi_ext分区
- 修改官方刷机bat,去除回滚、vbmeta、vbmeta_ext校验
- 安装来自Android、Microsoft、Nvidia、Qualcomm的驱动
- 配置ADB、Fastboot环境
注意事项:
- super.img位于*/images中
- 将你的工程目录添加到杀毒软件的排查列表中,一些涉及底层的安卓文件可能会使杀毒软件误报
- 你需要有访问谷歌的能力,以便于配置ADB、Fastboot环境
1. 修复教程
1. 修复移植8Gen3机型的包卡第一屏
- 解包 底包super.img
- 解包 移植包super.img
- 解包 底包system_ext.img
- 解包 移植包system_ext.img
- 将 底包/system_ext/apex 复制到 移植包/system_ext/apex
2. 修复屏幕圆角、状态栏、刷新率选项、息屏显示等
-
解包 底包product.img
-
解包 线刷包product.img
-
底包/product/etc/device_features 找到
底包/product/etc/device_features |
---|
marble.xml |
marblein.xml |
复制到 移植包/product/etc/device_features
- 底包/product/overlay 找到
底包/product/overlay |
---|
DevicesAndroidOverlay.apk |
DevicesOverlay.apk |
MiuiBiometricResOverlay.apk |
MiuiBtRRODeviceConfigOverlay.apk |
MiuiFrameworkResOverlay.apk |
替换掉 移植包/product/overlay 里相同的文件
- 底包/product/priv-app/MIUIAod 替换掉 移植包/product/priv-app/MIUIAod
3. 修复自动亮度、死机
- 底包/product/etc/displayconfig 替换掉 移植包/product/etc/displayconfig
4. 修复人脸识别
- 删除 移植包/product/app/Biometric 文件夹
- 复制 底包/product/app/Biometric 文件夹粘贴到 移植包/product/app
5. 修复相机
- 复制 底包/product/priv-app/MIUICamera 文件夹
- 替换到 移植包/product/priv-app
6. 修复NFC/小米智能卡
-
删除 移植包/product/pangu/system/app/NQNfcNci 文件夹,复制 底包/product/pangu/system/app/NQNfcNci 文件夹到 移植包/product/pangu/system/app
-
复制 移植包/product/pangu/system 下所有文件到 移植包/product
-
解包 底包vendor.img
-
打开 底包/vendor/build.prop
将以下内容
1
| ro.vendor.se.type=HCE,UICC
PROP |
改为
1
| ro.vendor.se.type=HCE,UICC,eSE
ELM |
7. 修复桌面卡死闪退
- 底包/vendor 找到
底包/vendor |
---|
marble_build.prop |
marblein_build.prop |
marble_build.prop 修改如下
1
2
3
4
5
6
7
8
9
10
11
12
| # begin sku build properties
# autogenerated by build/make/tools/buildinfo_sku.sh
ro.vendor.build.fingerprint=POCO/marble_eea/marble:12/SKQ1.230401.001/V816.0.4.0.UMREUXM:user/release-keys
ro.product.vendor.brand=Redmi
ro.product.vendor.device=marble
ro.product.vendor.manufacturer=Xiaomi
ro.product.vendor.model=23049RAD8C
ro.product.vendor.cert=23049RAD8C
ro.product.vendor.name=marble
ro.product.vendor.marketname=Redmi Note 12 Turbo
# end sku build properties
ro.product.board=marble
PROP |
marblein_build.prop 修改如下
1
2
3
4
5
6
7
8
9
10
11
12
| # begin sku build properties
# autogenerated by build/make/tools/buildinfo_sku.sh
ro.vendor.build.fingerprint=POCO/marblein/marblein:12/SKQ1.230401.001/V816.0.4.0.UMREUXM:user/release-keys
ro.product.vendor.brand=Redmi
ro.product.vendor.device=marble
ro.product.vendor.manufacturer=Xiaomi
ro.product.vendor.model=23049RAD8C
ro.product.vendor.cert=23049RAD8C
ro.product.vendor.name=marble
ro.product.vendor.marketname=Redmi Note 12 Turbo
# end sku build properties
ro.product.board=marble
PROP |
-
解包 底包odm.img
-
底包/odm/etc 找到
底包/odm/etc |
---|
marble_build.prop |
marblein_build.prop |
marble_build.prop修改如下
1
2
3
4
5
6
7
8
9
10
11
| # begin sku build properties
# autogenerated by build/make/tools/buildinfo_sku.sh
ro.odm.build.fingerprint=POCO/marble_eea/marble:12/SKQ1.230401.001/V816.0.4.0.UMREUXM:user/release-keys
ro.product.odm.brand=Redmi
ro.product.odm.device=marble
ro.product.odm.manufacturer=Xiaomi
ro.product.odm.model=23049RAD8C
ro.product.odm.cert=23049RAD8C
ro.product.odm.name=marble
ro.product.odm.marketname=Redmi Note 12 Turbo
# end sku build properties
PROP |
marblein_build.prop修改如下
1
2
3
4
5
6
7
8
9
10
11
| # begin sku build properties
# autogenerated by build/make/tools/buildinfo_sku.sh
ro.odm.build.fingerprint=POCO/marblein/marblein:12/SKQ1.230401.001/V816.0.4.0.UMREUXM:user/release-keys
ro.product.odm.brand=Redmi
ro.product.odm.device=marble
ro.product.odm.manufacturer=Xiaomi
ro.product.odm.model=23049RAD8C
ro.product.odm.cert=23049RAD8C
ro.product.odm.name=marble
ro.product.odm.marketname=Redmi Note 12 Turbo
# end sku build properties
PROP |
8. 修复开机后的安全性报错
-
解包 移植包system.img
-
移植包/system/system/framework 找到
移植包/system/system/framework |
---|
framework.jar |
打开 framework.jar 反编译 classes3.dex ,找到方法
1
| isBuildConsistent()
SMALI |
将整个方法修改为
1
2
3
4
5
| .method public static isBuildConsistent()Z
.registers 1
const/4 v0, 0x1
return v0
.end method
SMALI |
9. 精简大小
- 解包 底包cust.img
- 除文件夹外其余内容全部删除
2. 打包教程
1. 打包super.img
-
将前面解包的内容重新打包
-
将打包后的 移植包system.img、system_ext.img、product.img、mi_ext.img 覆盖 底包system.img、system_ext.img、product.img、mi_ext.img
-
重新将修改后的底包打包,以 Redmi Note 12 Turbo 欧版HyperOS版本 OS1.0.4.0.UMREUXM 为例,super.img有如下内容
OS1.0.4.0.UMREUXM super.img |
---|
mi_ext.img |
odm.img |
product.img |
super.img |
system.img |
system_ext.img |
vendor.img |
vendor_dlkm.img |
- 打包时注意选择分区类型,Redmi Note 12 Turbo 的super.img分区类型为 A/B。错误的打包分区可能导致无法进入第二屏
- 将打包好的super.img放回 */images
2. 修改官方刷机bat
-
删除flash_all_lock.bat和flash_all_lock.sh
-
编辑flash_all.bat,删除如下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| fastboot %* getvar product 2>&1 | findstr /r /c:"^product: *marble" || echo Missmatching image and device
fastboot %* getvar product 2>&1 | findstr /r /c:"^product: *marble" || exit /B 1
::check anti_version
if exist "%~dp0images\anti_version.txt" (for /f "usebackq" %%a in ("%~dp0images\anti_version.txt") do (set CURRENT_ANTI_VER=%%a))
if [%CURRENT_ANTI_VER%] EQU [] set CURRENT_ANTI_VER=0
for /f "tokens=2 delims=: " %%i in ('fastboot %* getvar anti 2^>^&1 ^| findstr /r /c:"anti:"') do (set version=%%i)
if [%version%] EQU [] set version=0
set anticheck="antirollback check pass"
if %version% GTR %CURRENT_ANTI_VER% set anticheck="Current device antirollback version is greater than this pakcage"
echo %anticheck% | findstr /r /c:"pass" || @echo "Antirollback check error" && exit /B 1
fastboot %* getvar crc 2>&1 | findstr /r /c:"^crc: 1" && if %errorlevel% equ 0 (
fastboot %* flash crclist %~dp0images\crclist.txt || @echo "Flash crclist error" && exit /B 1
fastboot %* flash sparsecrclist %~dp0images\sparsecrclist.txt || @echo "Flash sparsecrclist error" && exit /B 1
)
BAT |
- 找到如下代码
1
| fastboot %* flash misc %~dp0images\misc.img || @echo "Flash misc error" && exit /B 1
BAT |
1
2
| fastboot %* --disable-verity --disable-verification flash vbmeta %~dp0images/vbmeta.img || @echo "Flash vbmeta error" && exit 1
fastboot %* --disable-verity --disable-verification flash vbmeta_system %~dp0images/vbmeta_system.img || @echo "Flash vbmeta_system error" && exit 1
BAT |
- 编辑flash_all_except_storage.bat,步骤与编辑flash_all.bat相同
3. 安装驱动
- 下载MiFlash
- 安装来自Android、Microsoft、Nvidia、Qualcomm的驱动
- 移植包不推荐使用MiFlash刷机
4. 配置环境
-
下载ADB和Fastboot
-
将下载的内容解压后放置到flash_all.bat、flash_all_except_storage.bat相同目录
-
