安卓rom简单移植.docx

上传人:b****2 文档编号:18150313 上传时间:2023-08-13 格式:DOCX 页数:26 大小:3.11MB
下载 相关 举报
安卓rom简单移植.docx_第1页
第1页 / 共26页
安卓rom简单移植.docx_第2页
第2页 / 共26页
安卓rom简单移植.docx_第3页
第3页 / 共26页
安卓rom简单移植.docx_第4页
第4页 / 共26页
安卓rom简单移植.docx_第5页
第5页 / 共26页
安卓rom简单移植.docx_第6页
第6页 / 共26页
安卓rom简单移植.docx_第7页
第7页 / 共26页
安卓rom简单移植.docx_第8页
第8页 / 共26页
安卓rom简单移植.docx_第9页
第9页 / 共26页
安卓rom简单移植.docx_第10页
第10页 / 共26页
安卓rom简单移植.docx_第11页
第11页 / 共26页
安卓rom简单移植.docx_第12页
第12页 / 共26页
安卓rom简单移植.docx_第13页
第13页 / 共26页
安卓rom简单移植.docx_第14页
第14页 / 共26页
安卓rom简单移植.docx_第15页
第15页 / 共26页
安卓rom简单移植.docx_第16页
第16页 / 共26页
安卓rom简单移植.docx_第17页
第17页 / 共26页
安卓rom简单移植.docx_第18页
第18页 / 共26页
安卓rom简单移植.docx_第19页
第19页 / 共26页
安卓rom简单移植.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

安卓rom简单移植.docx

《安卓rom简单移植.docx》由会员分享,可在线阅读,更多相关《安卓rom简单移植.docx(26页珍藏版)》请在冰点文库上搜索。

安卓rom简单移植.docx

安卓rom简单移植

以前移植过华为C8812的,觉得移植内容差不多,所以决定试试,毕竟N881E也有一批用户,下面列出我的一些办法,看看对中兴机子是否可行 

我以前移植华为的办法如下 

移植XX的应用层和framework 框架层(system/appsystem/frameworksystem/tts这三个文件夹我用的是XX云N880E的底包) 

移植lib,不删减添加东西,但是其中的modules使用官方包的,用BeyondCompare3比较多出来的用XX云的包 

移植system/bin和system/xbin文件夹全部用官方的 

移植system/media文件夹整个文件夹必须使用XX的 

移植system/usr文件夹把XX的keychars和keylayout两个文件删除,替换为官方包中的这两个文件夹 

移植system/etc文件夹必须将XX云的文件夹中firmware文件夹删除,替换为官方包中的firmware文件夹 

修改build.prop 

必须使用官方包中官方的build.prop,但是必须在build.prop任意位置加入如下几行(对比了N880EXX和N881E官方的build.prop,发现XX修改和添加了一下prop,移植时如果官方的build.prop有这个属性,替换,没有则增加即可):

 

ro.baidu.build.hardware=N881E 

ro.baidu.build.hardware.version=1.0 

ro.baidu.build.software=yi_3.0 

ro.baidu.build.version.release=2.1 

ro.product.manufacturer=Baidu 

persist.sys.emmc=/mnt/sdcard2 

ro.config.notification_sound=Ding.mp3 

ro.config.ringtone=Echo.mp3 

ro.config.alarm_alert=alarm.mp3 

删除以下几个属性 

ro.operator.optr= 

ro.operator.spec= 

ro.operator.seg= 

移植boot.img 

boot.img启动镜像必须使用自己手机的。

 

修改:

boot.img-ramdisk/default.prop 

ro.secure=1 修改为 ro.secure=0 

ro.debuggable=1修改为ro.debuggable=1 

persist.sys.usb.config=mass_storage修改为persist.sys.usb.config=mass_storage,adb 

修改:

boot.img-ramdisk/init.rc 

a)    添加副卡路径:

在exportEXTERNAL_STORAGE/mnt/sdcard后面加上一行exportSECONDARY_STORAGE/mnt/sdcard2  

b)    将BOOTCLASSPATH改为XX的,为了防止有些jar包遗漏 

c)    另外在onfs下加上 

chownrootroot/system/bin/su 

chmod6755/system/bin/su 

d)    添加以下内容,好像是XX的服务 

servicealljoyn-daemon/system/xbin/alljoyn-daemon--internal--no-switch-user--no-bt 

   classmain 

   oneshot 

serviceWordSegService/system/bin/WordSegService 

     classmain 

     oneshot 

servicebackuprestore/system/bin/backuprestore 

   classmain 

socketbackuprestorestream600systemsystem 

移植完成后的工作 

1.压缩打包为zip刷机包 

META-INF在XX的N880E基础上进行修改 

修改META-INF/com/google/android/updater-script:

 

XX的N880E在这里添加了:

 

assert(getprop("ro.product.device")=="N881E"|| 

    getprop("ro.build.product")=="N881E"|| 

    getprop("ro.product.device")=="n881e"|| 

    getprop("ro.build.product")=="n881e"); 

删除assert(package_extract_file("recovery.img","/tmp/recovery.img"), 

    write_raw_image("/tmp/recovery.img","recovery"), 

    delete("/tmp/recovery.img")); 

二、移植boot.img

移植安卓rom首先要移植boot.img,这里我只说一下要重点修改boot.img里面的内容,此外怎么解包和打包boot.img就不在这里谈及了,网上有很多教程,多用搜索功能。

我推荐用厨房软件解包boot.img,解包boot.img后有BOOT-EXTRACTED文件夹,BOOT-EXTRACTED文件夹里面有boot.img-ramdisk文件夹和zImage内核,我们找到boot.img-ramdisk文件夹里面的init.rc文件,移植boot.img全部就在init.rc文件,init.rc文件我理解就是一个启动文件,我们开机后通过init.rc文件启动系统。

好,现在我们用文本编辑打开init.rc文件,找到exportBOOTCLASSPATH这一项,这一项后面就是启动系统的相关项目,不同机型不同系统这一项启动内容都不一样,那么我们怎么修改这个呢?

很简单,比如我们解包G14的sense4的rom,找到G14的内核boot.img,然后解包G14的boot.img,找到init.rc文件,然后用文本打开将exportBOOTCLASSPATH这一项后面的内容全部复制,然后再到22的init.rc,把exportBOOTCLASSPATH这一项的内容复制上去,简单的说就是将G11的启动内容复制到G22的启动内容上,到这里,boot.img的移植就完成了,最后将G22的boot.img打包回来。

本教程在随风6577移植教程基础上,专门针对mtk6589系列移植乐蛙进行进一步说明。

一、修改脚本

打开要移植的基准包,如果给U956移植,推荐中兴V987,mtk6589的u,720p的屏。

用记事本或notepad+(推荐用notepad+)打开META-IND/com/google/android/updater-script

1.删除下面机型验证信息(如果脚本中没有这些语句,则跳到下一步)

assert(getprop("ro.product.device")=="v987_jb2"||getprop("ro.build.product")=="v987_jb2"|| 

    getprop("ro.product.device")=="ztenj89_we_jb2"||getprop("ro.build.product")=="ztenj89_we_jb2"|| 

    getprop("ro.product.device")=="v987"||getprop("ro.build.product")=="v987"|| 

    getprop("ro.product.device")=="V987"||getprop("ro.build.product")=="V987"|| 

    getprop("ro.product.device")=="P188F04"||getprop("ro.build.product")=="P188F04");

2.删除刷入recovery命令(如果脚本中没有下面语句,则跳到下一步)

assert(package_extract_file("recovery.img","/tmp/recovery.img"),

write_raw_image("/tmp/recovery.img","recovery"),

delete("/tmp/recovery.img"))

同时删除包中的recovery.img

3修改挂载system分区

有些要移植的ROM,挂载system分区和U956的不一样,则需改成和U956一样的,如康佳W970的

挂载system分区如下

format("ext4","EMMC","/dev/block/mmcblk0p4","0","/system");

mount("ext4","EMMC","/dev/block/mmcblk0p4","/system");

需改为和U956一样的,修改后如下

format("ext4","EMMC","/dev/block/mmcblk0p5","0","/system");

mount("ext4","EMMC","/dev/block/mmcblk0p5","/system");

怎么知道要改成的分区是多少呢,这个可以查看自己机型官方包中的脚本,改成和官方的一样就可以了

4删除其它(如果有下面的语句也删除掉,没有则跳过此步)

assert(package_extract_file("uboot.img","/tmp/uboot.img"),

    write_raw_image("/tmp/uboot.img","uboot"),

    delete("/tmp/uboot.img"));

同时删除包中的uboot.img

二、替换System/lib和system/etc/firmware

1.将基准包V987包中的System/lib里的modules文件整个删掉,换成U956的。

2.替换System/lib里的hw(传感器相关)。

3.libcameracustom.so,这是相机驱动,替换成U956的,(lib中还有其他几个

  相机相关文件,我一般是相机出错时才替换。

5.其它蓝牙驱动啊,收音机驱动啊等等,我都是省事不替换的,你们可以换一下。

这里必须替换system/lib/libaudio*.so和system/lib/soundfx,不然会出现打电话无声的问题。

(我的这个帖子

6.system/etc/firmware这个是基带等文件在里面,整个删除,然后替换成U956

  的(我有时候只替换firmware里面的部分文件,小白整个替换吧)

三、替换System/usr

    把V987中的system/usr/keychars,keylayout文件夹删除,替换成U956的,不然home键可能不能用。

四、替换system/vendor/lib

    这个文件有些机型是不用替换的,比如移植V889S就不用,有些只需要替换里面部

分的文件,为保险,小白把整个文件夹删除,替换为U956的吧。

五、替换内核

把V987包中的内核boot.img删除,替换成U956的内核boot.img

六、System/build.prop修改

    可以自己换下版本号,修改ril.telephony.mode=1为ril.telephony.mode=2,否则无信号。

完成上诉步骤后,你就拿替换好文件后的V987的包来刷吧,一般你能开机了,如果

不能开机看看是不是忘记双清了,是不是卡刷工具不兼容,是不是你的刷机包太大了,如你

移植一个刷机包有600多M,而你的系统system分区只有500M,那么这个一般是不能开机的,

有些超大DATA严重压缩system的空间,这就更加不能开机了,只能精简刷机包,或分给system

足够大的空间,小白先选包比较小的来移植练习吧。

能开机后也许会有BUG。

    移植成功这只是基础,修复BUG才是难点,修复BUG需要一定的基础,有时需要部分移植或修改内核

此处就不详说了。

以上是我移植乐蛙成功的经验结合随风具体教程修改的,成功率几乎是100%,而且bug基本没有,因为V987和U956硬件十分相近,移植版和原生的差距也并不大了

Lib文件夹(本文件夹是系统所需要用到的驱动,库文件的所在,如果某程序FC或者无法正常运转,可能是这里的问题,我把我知道的一些文件的用途说一下:

***Lib/dsp文件夹DSP驱动所在,一般不需要改

***lib/egl显示芯片驱动,一般不需要改

***libaudio.so话筒及音频驱动必须用701的

***libaudioflinger.so音频附属驱动必须用701的

***libbridge.so相机方面 

***libbattd.so  电池驱动

***libcamera.so相机驱动必须用701的

***libcameraservice.so相机服务驱动

***libfmradio.soFM驱动

***libHPImgApi.so图片接口驱动必须用701的

***libLCML.so未知驱动  必须用701的

***liboemcamera.so相机驱动  必须用701的

***libOMX.TI.JPEG.Encoder.so照片编码器  必须用701的否则照片黑

***libOMX.TI.AAC.decode.so  此类型的都是编码器和解码器驱动(多媒体)

(libhardware_legacy.so)第一屏libdme_main.solibmemalloc.so(libqmi.solibqmiservices.solibril.solibulp2.so)电话网络相关

移植步骤:

1把下载下来的2个ROM包放在一起并解压

 

2开启比对软件BeyondCompare3

分别打开2个对应的ROM文件夹。

 

3移植脚本

在比对工具里面双击打开META-INF文件夹

删除里面的android文件夹(机型验证,因为移植,所以不设防)

参考红框框里面的部分

 

然后双击updater-script把右边蓝色框框部分复制过去即可

鼠标拉选文字,复制到左侧,保存关闭

 

复制过去之后的对比图,脚本移植完成

 

4电话驱动配置文件移植

返回总列表(下文中所说总列表均为system文件展开)。

打开system文件夹下面的etc文件夹

红框框的部分的文件全部复制到左侧。

这张图有点大,点击放大看

 

然后把etc下面的permissions文件夹展开,复制一个文件过去

相机方面的。

 

复制完成之后然后删除俩文件,请看截图

 

5移植对应的硬件匹配光感,GPS,wifi库文件

返回总列表,打开lib文件夹,主要是egl文件夹以及hw,modules文件夹

这个egl文件夹移动过去

 

光感硬件驱动移植看截图

 

接下来wifi驱动直接复制过去

 

6机型信息匹配的代码以及版本号

上面驱动什么的都已经OK了。

最后就剩下机型。

返回总列表,双击build.prop

 

继续

 

 

最后一个ro.moddevice=DHD你改也行不改也行,改DesireS

改完之后记得保存,关闭

7内核移植。

这个直接复制吧。

返回总目录。

找到boot.img

复制过去

 

这样移植就完成了,接下来打包。

关闭比对软件,打开DHD的miui-rom文件夹

最新版的应该是miui_DHD_1.9.23_scrfrh37n9_2.3

全选3个文件,右键-添加到压缩文件,重命名update.zip

保存为zip文件

 

结尾:

下载这个工具解压 

 sign.zip (9.64KB,下载次数:

885) ,把update.zip扔进去

双击Sign.bat。

一会之后生成一个update_signed.zip

就是你的ROM了

 

关于键盘布局这里dhd通用,就不用折腾了

怎样很简单吧,复制粘贴你就是高手了。

至于其他个性化的东西,请跟帖或者发帖提问。

我会给大家及时解答

谢谢各位。

DS板块因为有你们而精彩。

2011年9月24日9:

22:

45补充一点,。

相机驱动上面忘记说了,把lib下面的libcameraservice.so文件也要移植过去。

不然前置摄像头不能切换。

sorry

 

1、备份boot.img(前提是必须有root权限的手机)

adb shell

su

cat /proc/mtd

备份boot.img命令举例如下(切记手机不同,命令不一定相同,请核对自己手机上一步的显示):

cat /dev/mtd/mtd1 >/sdcard/boot.img

2、挂载主机的一个文件夹到VMware虚拟机(我比较习惯VMware)。

sudo mount -t vmhgfs .host:

/ /mnt/hgfs/

例如:

挂载主机d:

\123文件夹到虚拟机/mnt/hgfs/目录下,虚拟机访问修改/mnt/hgfs/mmm/文件夹下的文件相当于主机访问修改d:

\123文件夹下的文件(mmm是d:

\123共享到虚拟机的文件名)。

这样做的好处就是linux下解开要修改的文件,然后可以很方便的在windows下修改了。

若要详细设置挂载可以查看我的另一篇博文。

3、将所需工具放入/bin/目录下并添加执行权限:

mv /mnt/hgfs/mmm/split_bootimg.pl /bin/

mv /mnt/hgfs/mmm/mkbootimg /bin/

mv /mnt/hgfs/mmm/mkbootfs /bin/

chmod +x /bin/split_bootimg.pl

chmod +x /bin/mkbootimg

chmod +x /bin/mkbootfs

4、解开boot.img

mkdir /mnt/hgfs/mmm/boot

cp /mnt/hgfs/mmm/boot.img /mnt/hgfs/mmm/boot/

cd /mnt/hgfs/mmm/boot

split_bootimg.pl boot.img

此时BOOT目录下会多出几个文件,boot.img-ramdisk.gz和boot.img-kernel。

mkdir ramdisk

cd ramdisk

gzip -dc ../boot.img-ramdisk.gz | cpio -i

我们对即将要修改的init.rc也备份一下吧:

cp ./init.rc ../init.rc.backup

5、修改init.rc使含有a2sd功能:

a、搜索class_start default,在这一行之前,加入两行代码:

    start a2sd

    on property:

cm.filesystem.ready=1

b、在最末尾加入:

service a2sd /system/bin/logwrapper /system/bin/sh /system/bin/a2sd

    disabled

    oneshot

c、修改system为读写

mount yaffs2 mtd@system /system rw remount

d、修改su的相关代码:

    chown root system /system/bin/su

    chmod 4550 /system/bin/su

改为:

   chown root root/system/bin/su

    chmod 6755 /system/bin/su

6、加入第二屏

要确定到底是那种格式的图片,方法是打开initrd\init文件,搜索logo,就会看到。

a、加入logo.bmp到boot.img\ramdisk.gz\initrd\(官方一般采用这种方法,切记此处的bmp不是一般的bmp)

photoshop制作480*800的图片,然后水平翻转一下,再保存为BMP,BMP保存选项中,选择高级模式:

16位 R5 G6 B5,保存

b、加入initlogo.rle到boot.img\ramdisk.gz\initrd\(一般第三方的boot或者recovery都采用这种方式)

一、将rle转换为png:

(1)将rle要转成raw格式:

from565 -rle logo.rle logo.raw

(2)再将raw转成png格式:

convert -depth 8 -size 480x800 rgb:

logo.raw logo.png

convert为ImageMagick自带命令,如果没有安装,命令如下:

sudo apt-get install imagemagick

二、将png转换为rle:

(1) 制作当前屏幕像素的图片(模拟器默认为320*480)

 使用PS制作一张320*480的图片,保存时选“保存为 Web 所用格式”,然后在弹开的窗口上,“预设”项选择“PNG-24”,保存为android_logo.png

 注:

好像只支持png-24,其他格式生成的rle文件显示不正常,有兴趣大家可以再验证一下。

 

(2) 将图片转换为raw格式

 使用linux下的ImageMagick自带的convert命令,进行raw格式转换,命令为:

  convert -depth 8 android_logo.png rgb:

android_logo.raw

 注:

ubuntu 10.04 默认已经安装ImgageMagick工具,如果当前系统没有安装,可以执行下面的命令安装:

  sudo apt-get install imagemagick 

(3) 将raw格式转化为rle文件

 需要用到android编译后的rgb2565工具,在android/out/host/linux-x86/bin目录下(android为当前源码所在目录),转换命令如下:

 rgb2565 -rle < android_logo.raw > initlogo.rle

到目前为止,启动需要显示的图像已经做好了,就是initlogo.rle,注意文件名必须是这个,如果想改文件名,需要修改android/system/core/init/init.h中的宏:

 #define 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2