安卓系统移植经验之谈,教你三分钟移植

上传人:wt****50 文档编号:37477066 上传时间:2018-04-17 格式:DOC 页数:12 大小:472.50KB
返回 下载 相关 举报
安卓系统移植经验之谈,教你三分钟移植_第1页
第1页 / 共12页
安卓系统移植经验之谈,教你三分钟移植_第2页
第2页 / 共12页
安卓系统移植经验之谈,教你三分钟移植_第3页
第3页 / 共12页
安卓系统移植经验之谈,教你三分钟移植_第4页
第4页 / 共12页
安卓系统移植经验之谈,教你三分钟移植_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《安卓系统移植经验之谈,教你三分钟移植》由会员分享,可在线阅读,更多相关《安卓系统移植经验之谈,教你三分钟移植(12页珍藏版)》请在金锄头文库上搜索。

1、每当我闲下来时不发 Rom 时,就会整理一下思路,发发教程啥的,我觉得能带动机油们自己打造、改造 Rom,共同提升,才是 Romer 的追求。发 Rom 也好,教程也好,我的宗旨是不设回复可见,如果你觉得好,回复或者评分鼓励一下,我就很开心了。不过这样做的一个遗憾就是,我的帖子通常回复率不够高,沉得快。好了,闲话少说,上教程。注:可能你会觉得文字教程比较干枯,不够形象生动,但是请精心看,我会尽量讲得具体、清晰。首先,我并不算是移植高手,这个教程只是我在自己移植过程中的的一些收获体会,一些经验之谈。如果你觉得有什么不对或值得改进的地方,欢迎和我交流,我们一起来完善这个教程。因为移植所涉及的机型、

2、配置相当多变和复杂,所以我无法讲具体细节,只能讲大致的原则。可以结合我移植 U8800+的 JoyOS 到 U8860 的例子作为参考进行理解。我把这些原则抽象出来,命名为 Rom 移植 5 步法,具有一定的通用性。Rom 移植的方向有 正向 和 逆向 之分:正向的做法通常就是,找个目标机型的底包,然后把要移植的包的 app 和framework 提取出来替换进去。这样的优点是改动无需太大,非常快捷;缺点是经常因为一些 bin 下的程序或者库文件的差异而导致成功率不够高。逆向的做法是,拿要移植的包作为底包,把目标机型的内核、wifi 驱动、传感器库文件、配置文件等替换进去。这样做要复杂一些,需

3、要准确两个包的差异,知道应该改哪里;优点自然是不成则已,一旦移植成功能最大限度地发挥 Rom 性能,因为框架、程序与底层的契合度要比正向法好。我这个教程以逆向法为例。另外,Rom 移植有风险,刷机测试需谨慎,如有本人操作不当导致出现任何问题,本人概不负责。Rom 移植 5 步法:1.Rom 移植涉及的东西比较偏底层,所以在移植之前必须清楚目标机型的硬件配置,分区结构。这里的配置不是说主频多少、内存多少,这两个参数基本上不会影响移植的进行。对于移植,最关键的因素是主板平台,通常采用同一系列的 cpu 的不同机型的Rom 移植的成功率要高很多。比如,U8800+和 U8860 均是高通 8255

4、处理器,虽然主频不一样,但它们却同属于同样的 MSM7x30 平台。他们之间的互相移植,绝对要比与 MSM7K 平台的中兴 V880 互相移植来的容易得多。至于为什么要弄清分区结构,会在下面讲到。所以,5 步法的第一步就是弄清楚自己目标机型的配置,从而选定一个合适的Rom 源包。同时,也必须找一个或多个目标机型上能用的合适的底包,尽量与源包同源或者属于同一 Android 版本。例:我要移植 JoyOS 到华为荣耀 U8860,在对比配置和分区结构后选择了华为 U8800+的 JoyOS 包作为 Rom 源包。由于 JoyOS 也是基于 CM7 修改的,所以我找的底包是 U8860 的 CM7

5、.2,同时也把华为官方的 B876 拿出来作为参考。为什么选 U8800+,而不选 U8800?因为 U+采用和荣耀一样的 wifi 芯片,接口均为 eth0,而 U8800 的却是wlan0,自然用 U+会省下不少麻烦。2.第一步里你已经了解了两款机型配置的相同或相近之处,这一步则相反,我们需要找出二者的不同之处。这样做的目的是为了知道我们到底需要改动什么来使一款机器的包能在另一款上使用。首先,二者的底层硬件驱动会有所不同,我们通常都是直接替换内核来解决这个问题,即 boot.img。有时,还需要在 system/bin 文件夹里添加必要的程序和服务。system/usr 下的 key 打头

6、的两个文件夹是按键配置相关的,通常也需要替换。其次,二者的传感器通常会有所差别,system/lib/hw 目录下的库文件都是传感器等相关的。再次,system/etc 文件夹下放置着许多的系统配置文件。我们需要关注的文件或文件夹通常有 bluetooth、firmware、permissions、 wifi 四个文件夹(如果有的话)。还有 enhanced.conf(G 大脚本的配置文件)、media_profiles.xml(媒体配置文件)、vold.fstab(存储分区配置文件)。最后,再检查一下 system 目录下是否还有 vendor、wifi 文件夹。上述不同的地方,通常就先对比

7、,如有不同,就需要我们用目标机型的替换之。例:U8800+的平台主板一致,内核可以通用,无需替换。bin 下需要添加 akmd8975 蓝牙芯片相关服务,hdmid HDMI 输出服务(非必要)等,这里要同时参考底包和官方包。弄清这些程序或服务的名字的最好办法是解开关官方的 boot.img,看注释。system/lib/hw 下的传感器库文件有差异,删掉带 u8800 名称的,用来自u8860 的 CM 的相应文件替换。此时也可以参考一下官方包中此文件夹的内容。二者 wifi 芯片一致,system 下的 vendor、wifi 文件夹无需替换(这就是我为什么选 U+,而不选 U8800 的

8、原因)。system/usr 下的按键配置文件一致,无需替换。etc 下的 bluetooth、firmware、wifi 一致,无需替换。enhanced.conf 文件不一致,U+是 1G 主频,荣耀是 1.4,需要替换。media_profiles.xml 不一致,U+无前置摄像头,荣耀有,需要替换。vold.fstab 一致,二者均有内部存储分区和 sd,而且挂载点也是一致的,无需替换。以上操作,建议用 beyond compare 程序进行对比,能用文本编辑器打开的简单文件也可肉眼比对。找出差异,如有不同,替换即可。3.经过上面两步,该相近或者相同的地方我们已经利用了,不同的关键之处

9、我们已经修改为相同了。原则上应该差不多完成了,接下来要检查和修改的有两处。build.prop, 机型改过来,其他必要的参数改过来,前提是你要熟稔这些参数是干什么的,否则暂时只改机型就够了。刷机脚本 ,第一步我们说到要了解机子的分区结构,刷机脚本内含分区挂载和格式化的命令。不同厂商的不同机型的分区结构是不一样的,而且还一般不能做修改。买台电脑回家,我们可以自己任意分区,重装系统,手机却不能这样如果分区结构不同,而刷机脚本不做修改,将不该改动的分区挂载并修改了的话,等着变砖吧。我举个例子:华为荣耀的分区结构是 /dev/block/mmcblk0p1 为 .cust_backup 分区,boot

10、.img 在这里/dev/block/mmcblk0p6 为 cache 分区/dev/block/mmcblk0p12 为 system 分区/dev/block/mmcblk0p13 为 data 分区如果你用文本编辑器(记事本也可以)打开 system/etc 下的 vold.fstab,会看到dev_mount emmc /HWUserData 14 /devices/platform/msm_sdcc.2/mmc_host/mmc0 内部 SD 卡dev_mount sdcard /mnt/sdcard auto /devices/platform/msm_sdcc.4/mmc_ho

11、st/mmc2 SD 卡其他分区暂不需要关注。华为荣耀的分区和 U8800+是一致的,二者 Rom 可以互刷而不会变砖,只是功能会不完善,所以才要移植。三星 i9100 的分区结构则是/dev/block/mmcblk0p9 为 systemdev/block/mmcblk0p7 为 cache/dev/block/mmcblk0p10 为 data假如你要把三星 i9100 的 rom 刷进荣耀(或者你移植 i9100 的 rom 而不修改刷机脚本)的话,那么,惨了。你把荣耀的/dev/block/mmcblk0p9 分区给格式化,把 rom 刷写进去了,结果自然是变砖了。这就是我在 这个帖

12、子 里写下下面这段话的原因。assert(getprop(“ro.product.device“) = “blade“ | getprop(“ro.build.product“) = “blade“ | getprop(“ro.product.board“) = “blade“);获取手机信息,验证你的手机到底是不是 V880,否则将无法刷入。这是为了防止让一些其他机型的小白误刷咱们 V880 的 Rom 从而发生变砖的惨剧。不加这行的 Rom 所有机型都可以刷入,建议 Rom 同行或者补丁制作者们一定要加上,人性化关怀。当然,你不加这些,但在补丁或 Rom 发布时仔细说明适用机型的话也是可以

13、的。4.接下来就是测试了,一般如果内核与库文件、库文件与上层框架兼容的话,至少能开机。如果卡第一屏了,分析原因,一点点排查,看脚本有无问题,看内核是否的确已经替换,看传感器等库文件是否合理替换.失败并不可拍,怕的就是没有正视失败,重头再来的勇气。5.如果能成功进入系统,最后就是要一点点地完善了。如声音不正常那个,可更换 system/lib 下声音相关的库文件;相机不正常,同样是这个目录下的有关文件;这个过程要遵循单一变量原则,一次性尽可能只改动你确定的一点点,否则你无法确定到底是哪出修改发挥了作用。遇见最多的自然是 wifi、蓝牙、相机、信号等问题。这时要善于利用手边的 rom 包,尤其是别

14、人已经在本机型或相近机型移植成功的包。看看他们是怎么修改的,或者能联系到 Rom 作者本人,向他们咨询那是最好的。能开机进入系统是移植成功的第一步,真正好需要完善的东西是上层的应用,这是后话。例如:JoyOS 没做过 500 万以上像素的机型,所以,移植过来的相机的参数设置最大只能 500 万,囧。这时只好用 cm 或者 mq 的的相机替换了。能静下心看懂这些步骤的话,移植的基本思路和方法就差不多了。只是移植的环境复杂多变,具体场合还请各位具体摸索,我就不多说了。我标题所说的,三分钟内就可以把 JoyOS 移植到荣耀,这个三分钟当然不是说看完此贴并掌握只需三分钟。是指熟练操作后可以很简单地进行

15、移植,当然,源包很重要!-想想不能光说不练,顺手把最新移植的 JoyOS-1.1.8 传上来。已精简谷歌服务,加入 RE 管理器和关机重启,替换可以 800 万的相机。加入百度输入法,附上 iphone 皮肤一款,解压点击即可安装,然后去输入法里切花皮肤即可。Rom 下载地址 http:/ 皮肤:baiduinput-iphone5.zip(668.81 KB, 下载次数: 187)最后,送想要移植的朋友们一段话:选源包和底包切忌不清不楚,找不同之处时要记得不急不躁,能开机之后要不骄不闹,好好测试完善之后再发布出来,别让机油的手机死得不明不白。精简过后程序数量仅占满一屏切换 iphone 皮肤后的百度输入法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号