Android ROM移植
本人是用Arch, 顺便来传一下教
此教程针对 高通和联发科 64位就多替换lib64 等有64字眼的
移植 刷机包/ROM 建议在Linux的平台是 下载个解压软件
移植boot.img
- 步骤: 解压出官方booT和要移植包的boot, 替换进入官方
- 替换文件: dt.img和zlmagewe 没有这个文件的话就无视
可以开机之后 再进行以下操作
刷机脚本修改
- 1.机型验证
- getprop开头的那行删除, 如果安装中断的话就是这行没删完,
- 2.分区挂卸
- 3.删除底层文件刷入
- 底层文件一般在包里面, 正常的包有system(system.dat…), boot.img,META—INF, data其他多余的未知文件和文件夹就是底层文件, 这些必须删除, 不然就可能会黑砖
参考脚本 一般放在META-INF里面
ui_print("Patching firmware images..."); ifelse(msm.boot_update("main"), ( package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tz"); package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hyp"); package_extract_file("firmware-update/sbl1.mbn", "/dev/block/bootdevice/by-name/sbl1"); package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpm"); package_extract_file("firmware-update/emmc_appsboot.mbn", "/dev/block/bootdevice/by-name/aboot"); ), ""); ifelse(msm.boot_update("backup"), ( package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tzbak"); package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hypbak"); package_extract_file("firmware-update/sbl1.mbn", "/dev/block/bootdevice/by-name/sbl1bak"); package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpmbak"); package_extract_file("firmware-update/emmc_appsboot.mbn", "/dev/block/bootdevice/by-name/abootbak"); ), ""); msm.boot_update("finalize"); package_extract_file("firmware-update/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
|
WIFI修复
system/etc/firmware/wlan system/etc/wifi system/lib/modules/pronto system/lib/modules/wlan.ko
|
可以用WIFI之后 再进行以下操作
- 还是不行再看看boot.img里面的init.qcom.rc对比官方boot里面的init.qcom.rc修改 还不行就看刷机脚本, 改里面的wifi软链接
内存卡使用修复
system/etc/permissions/platform.xml
|
修复按键
system/usr/icu system/usr/idc
//不行再多替换 system/usr/keylayout/Generic.kl
|
修复声音
以下文件替换为官方
方法1:对比system里面的bin、etc、lib、vendor/lib (64位多对比lib64、vendor/lib64) , 把官方包多余的加进去, 再替换etc/mixer开头的
方法2:对比system里面的bin、etc、lib、vendor/lib (64位多对比lib64、vendor/lib64) , 把官方包多余的加进去, 再替换system/hw/audio.primary.msmxxxx.so(64位多替换system/lib64/hw/audio.primary.msmxxxx.so)
方法3:对比system里面的bin、etc、lib、vendor/lib (64位多对比lib64、vendor/lib64) , 把官方包多余的加进去, 再替换system/lib/hw/audio开头的 (64位多替换system/lib64/hw/audio)
方法4:对比system里面的bin、etc、lib、vendor/lib (64位多对比lib64、vendor/lib64) , 把官方包多余的加进去, 再替换以下: system/etc/mixer开头的 system/lib/hw/audio.primary.msmxxxx.so (64位多替换system/lib64/hw/audio.primary.msmxxxx.so)
方法5:对比system里面的bin、etc、lib、vendor/lib (64位多对比lib64、vendor/lib64) , 把官方包多余的加进去, 再替换以下: system/etc/audio和mixer开头的 system/lib/hw/audio开头的 (64位多替换system/lib64/hw/audio开头的)
注: lib和lib64文件夹里面的audio开头(不包括hw文件夹)64位替换了不卡屏, 但32位可能会卡屏
|
修改型号
// 品牌 ro.product.brand=xiaomi // 型号 ro.product.name=2 // 关于手机显示的型号 ro.product.model=redmi 2 // 分辨率 ro.sf.lcd_density=320 // 这个也是有关型号的 ro.build.product=2 // 虚拟按键 1是关0是开, 没有这行的就加进去 qemu.hw.mainkeys=0
|
修复相机
// 把System/lib文件夹里面的文件替换成官方包的文件, 可以解决相机打开停止的BUG问题 libcamalgo.so libcamera_client.so libcameracustom.so libcameraservice.so libmhal.so libmhalcontent.so libmhaldrv.so libmhalmdp.so libmhalpipe.so libmhalscenario.so libmhalutility.so
|
修复传感器
// 替换System/lib/hw 文件夹里面 sensors.default.so
|
移植有风险, 不保证无bug
作者: 我叫史迪奇
本文来自于:
https://sdq3.link/Android-ROM-transplant.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议