转换好会放到另一个文件夹谈哗局里面,把原来的文件删掉,把生成的放回去就可以了。如果
转换过程
中失败了,应该是JAVA的版本低了,升级到最新的JRE试一下。当然,也可以不合并,并不影响ROM的移植。.
替换自己手机专用的文件,一般我们要下载近似机型的ROM,我们下载了以后,要先把自己手机专用的文件替换进去:boot.img和bcm4329.ko分别为内核和
无线驱动
,一般来说换内核必换的system/lib/modules/bcm4329.ko,这个文件是wifi和
蓝牙驱动
,不同内核的驱动不同,如果不换wifi和蓝牙只会提示错误。这个可以从
CyanogenMod
7的ROM中提取。也可以到XDA上面下载新的AOSP核心。bin/目录下的2个文件,awb_camera和芦世lsc_camera这2个是相机相关文件,
etc/firmware这整个文件夹都可以替换掉(注意,是etc下面的firmware)
etc/目录下A1026_CFG.csv、AdieHWCodec_WA.csv、AdieHWCodec.csv、media_profiles.xml、NOTICE.html.gz
音频解码和视频相关配置,替换掉
etc/gps.conf
GPS的配置,可以自己去搜一下,了解如何改后,可以自己动手改一下。lib/hw/目录下,从原来ROM中提取后替换掉。
lib/modules/bcm4329.ko为WIFI驱动,替换掉。lib/目录下的.SO文件,可以去CM对应版本的ROM中拿(
CM7
为2.3,
CM9
为4.0,
CM10
为4.1),注意:千万要看好了,是在用官方ROM和基础ROM对比文件大小,不要拿CM7的对比,替换错了会开机卡在第一屏。usr/目录下的keylayout和keychars2个文件夹是键盘相关文件,可以直接从我的ROM中提取替换。到此为止,简单的工作都做完了。
下面要开始修改文件了。
修改
刷机
脚本
updater-script
这个比较简单,一般只要修改前面几行,把条件改一下,再加一段
欢迎词
,请对照我提供的文件进行修改。
修改build.prop
system/build.prop
这含让个文件嘛,一般是留名用的:
主要改以下几个地方:
1、ro.product.locale.language=hdpi(或者有的机型是mdpi
ldpi)
ro.product.locale.region=
改成ro.product.locale.language=zh
ro.product.locale.region=CN
这样开机第一次锁屏的时候就是中文2.ro.build.
description
=
后面改成你想要的,也就是你作品的名字
ro.product.versi
on=
这里也可以改成你作品的名字或者版本号,一般我们留为基于制作的官方系统的驱动版本号
3、
ro.sf.lcd_density=
后面一般为240。
4、
ro.ril.def.agps.mode
=
2
听说改成0可以加速gps定位
省流量
请对照我提供的文件进行修改,
这样,我们的移植就算完成了,接下来就是生成ROM了,我们用压缩工具将ROM打包成
zip格式
,注意目录结构,生成的zip根目录就有MATE-INF和system,别搞错了。将打包好的zip文件拷到
工具包
当中,改成update.zip,再双击sign.bat进行签名,签名后就生成了update_signed.zip了。
(1)下载自己设备的官方ROM(假设文件名是myrom.img)和想移植的第三方自定义ROM(假设文件名是newrom.img)(2)解包。
在网上找到unimg工具。把unimg和ROM文件myrom.img和newrom.img都放在同一个目录下(假设是d:\rom目录)。把myrom.img和newrom.img文件分别拖到unimg上就可以开始解包。解包后,可以得到一个myrom.img.dump和newrom.img.dump的目录。
在d:\rom目录下新建两个目录,myrom和b。把myrom.img.dump目录中的RFSFAT16_BOOT_00000000000文件复租粗制到myrom目录下。把newrom.img.dump目录中的RFSFAT16_BOOT_00000000000复制到newrom目录下。
(3)更新boot分区文件
在网上找bootimg工具。也放到d:\rom目录下。然后打开命令行窗口。依次输入如下命令
d:
cd \rom\myrom
..\bootimg.exe --unpack-bootimg RFSFAT16_BOOT_00000000000
(此命令会输出一些重要的信息,请一定要记下来,等一下打包boot文件时需要用到)
..\bootimg.exe --unpack-ramdisk
cd ..\newrom
..\bootimg.exe --unpack-bootimg RFSFAT16_BOOT_00000000000
..\bootimg.exe --unpack-ramdisk
这样就可以看到在myrom目录和newrom目录下分别解包出如下文件
kernel :Linux内核文件,这个文件不同设备有不同。所以为什么我们直接刷别人的ROM可能会出现白屏问题咐让。
initrd目录 :这其实就是系统的根目录
cpiolist.txt :记录着initrd目录中每个文件的权限和用户信息,这文件是为了等一下打包用的。我们不用管它。
下面,把myrom目录和newrom目录中的initrd目录下的init.sun4i.rc目录分别打开(请不要用记事本或写字板打开这个文件,因为这文件是UNIX格式,如果你用记事本或写字板打开,保存后会自动变成DOS格式,会破坏文件格式)
找到加载驱动的地方,如下图。把myrom目录中init.sun4i.rc文件中对应的内容,替换掉newrom目录中init.sun4i.rc的对应内容。
并记下myrom文件中要使用的驱动的文件名(等一下要更新system分区时需要用到)。
################################
# insmod vibrator
insmod /system/vendor/modules/sun4i-vibrator.ko (这是振动器驱动,如果不想使用振动器,可禁用衡型局这行)
chmod 777 /sys/class/timed_output/sun4i-vibrator/enable (如果禁用了振动器驱动,也要同时禁用这行)
#insmod key &tp driver
insmod /system/vendor/modules/goodix_touch.ko (这就是触控驱动,通常替换这个驱动已经足够)
insmod /system/vendor/modules/sun4i-keyboard.ko
# insmod mali driver
insmod /system/vendor/modules/ump.ko
insmod /system/vendor/modules/mali.ko
#csi module
insmod /system/vendor/modules/videobuf-core.ko
insmod /system/vendor/modules/videobuf-dma-contig.ko
insmod /system/vendor/modules/gt2005.ko
insmod /system/vendor/modules/sun4i_csi0.ko
################################
把更新后的newrom目录中的init.sun4i.rc文件保存到myrom目录中,替换myrom目录的对应的文件。
下面开始重新打包boot分区,请打开命令行窗口,依次输入如下内容:
d:
cd \rom\myrom
..\bootimg.exe --repack-ramdisk
..\bootimg.exe --repack-bootimg 0x40000000 "console=ttyS0,115200 rw init=/init loglevel=8" 2048 2048
(repack-bootimg后面的一大堆参数是根据之前unpack-bootimg时得到,请大家一定要改为自己设备对应的参数,否则无法启动)
打包成功后,得到boot.img文件。把boot.img文件改名为RFSFAT16_BOOT_00000000000,并复制到myrom.img.dump目录下,替换原来的文件。
(4) 更新system分区,如下 *** 作需要在Ubuntu下完成。
把myrom.img.dump和newrom.img.dump中的RFSFAT16_SYSTEM_000000000文件复制到Ubuntu系统下的/root目录,分别改名为system-myrom和system-newrom,
上网下载ext4_utils工具,并编译出simg2img,mkuserimg.sh,make_ext4fs 三个程序。并复制到/root目录下。
然后依次输入如下命令:
cd /root
./simg2img system-myrom system-myrom.img
./simg2img system-newrom system-newrom.img
mkdir /mnt/img /mnt/img2
mount -o loop system-newrom.img /mnt/img
mount -o loop system-myrom.img /mnt/img2
这时候,你就可以看到两个ROM的/system分区的内容。下面我们可以把官方ROM中的驱动复制到新ROM中。
cd /mnt/img/vendor/modules
cp -p /mnt/img2/vendor/modules/需要的文件.ko ./
哪些文件要复制过来,就要看(3)中你的设备要用哪些驱动了。
#########################
下面的文件是否需要替换,就要看你的设备与新ROM的区别大不大了,我的领先版2就没有替换这些文件。
/mnt/img/lib/hw/*.*
/mnt/img/lib/libhardware*.*
#########################
把驱动替换完毕后,就开始打包。
cd /root/
./mkuserimg.sh -s /mnt/img RFSFAT16_SYSTEM_000000000 ext4 system 256M
最后一个参数是说把system打包成一个256MB的分区镜像,如果你的system大于256MB的话,程序执行会出错,试试改为512M。
把RFSFAT16_SYSTEM_000000000复制回到windows中,替换掉myrom.img.dump目录中对应的文件。
最后一步,打包。打开命令行
d:
cd \rom
verifycalc myrom.img.dump\RFSFAT16_SYSTEM_000000000 myrom.img.dump\RFSFAT16_VSYSTEMFS_000000
verifycalc myrom.img.dump\RFSFAT16_BOOT_00000000000 myrom.img.dump\RFSFAT16_VBOOT_0000000000
unimg -e myrom.img
打包后的myrom.img 就可以用livesuite 刷机了。
成功启动后,如果看到显示不正常的话,可能因为移植的ROM与我们设备的分辨率不一样。比如我把极光ROM移植到领先版2后就遇到这个问题。
我是通过添加如下设置到新ROM的/system/build.prop文件来解决的。
################
ro.sf.lcd_density=125
################
125这个值是我试出来,在领先版2下可以正常显示的。你可以自己改成喜欢的数值(在100-200期间改)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)