主页 分类 关于

Android ROM移植

本人是用Arch, 顺便来传一下教

此教程针对 高通和联发科 64位就多替换lib64 等有64字眼的

移植 刷机包/ROM 建议在Linux的平台是 下载个解压软件

  • 推荐sdat2

移植boot.img

  • 步骤: 解压出官方booT和要移植包的boot, 替换进入官方
    • 替换文件: dt.img和zlmagewe 没有这个文件的话就无视

可以开机之后 再进行以下操作

  • 开机失败就替换fstab.qcom为官方

刷机脚本修改

  • 1.机型验证
    • getprop开头的那行删除, 如果安装中断的话就是这行没删完,
  • 2.分区挂卸
    • 分区注意mmcblk0p字眼的记得改成官方的
  • 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) 协议