该教程不仅适用于t959也同时适用于所有的2.3rom的移植,不过具体出现的bug需要针对性的解决了
yan大写了些相关教程,我把我自己理解的部分简化写成好理解一些的发出来,希望t959移植内核和rom漫天飞扬~ 其实rom移植很简单主要包含了这么几部分: 1.内核部分 就是一个名字是boot.img的文件,这个文件一般都在刷机包的根目录下(刷机包可以直接用rar解压),这是内核但是具体修改内核的事情就超出我能力范围了,也太过复杂鉴于这是一个为了让大家都能学会的教程,这里略过不表; 2.基带部分 一般其他机器rom的基带我们是不能拿过来直接用的,拿过来直接用的结果大部分是无信号或是严重的通话质量问题,所以一般情况下,都要刷回本身机器的基带,跟基带有关的文件有这么几个,也是在刷机包的根目录下:modem.bin(这个就是基带本身了),erase_image,busybox,updater.sh。如果都是2.3这几个文件不需要修改直接拿过来用就可以了,updater.sh这个文件可以用notepad2之类的软件打开,有能力的可以打开看看。 3.键盘布局 在\system\usr这个目录下有keychars和keylayout两个文件夹,如果说我现在要移植一个i9000的rom,这是rom名字是9000,而我需要拿t959刷机包下的keychars和keylayout两个文件夹替换掉9000rom对应路径下的这两个文件夹,如果不替换的话一般情况是触摸屏幕失灵,至少我实验下是这个情况。这两个文件夹直接拿过来去替换就好了,有能力的可以具体研究两个文件夹下文件的作用。 4.wifi部分,这部分不是一定要替换的,有的rom会在修改内核后wifi失灵,我移植cm内核到miui下的时候wifi失灵了,我把修正wifi的方法顺便写出来吧 具体是这几个文件: system\bin目录下的wlan_cu、wlan_loader、wpa_cli、wpa_supplicant这4个文件; system\etc\wifi目录下的tiwlan.ini; wifi\system\lib目录下的libwpa_client.so; system\lib目下的modules文件夹下的所有文件; 我在移植cm内核到miui下的时候,修正wifi只需要把system\lib目下的modules文件夹下的所有文件替换掉就行了,不需要替换其他的。 5.GPS部分 目前修正959gps的补丁包含这两个文件AngryGPS.apk和gpsd,把gpsd移到\system\vendor\bin下,把AngryGPS.apk移到system\app下 关于i9000 rom GPS驱动修改为959驱动的方法目前我也没太搞明白就不具体描述了 6.打包的方法,如果是移植rom的话把上面我提到的文件直接替换到想要移植的9000 rom下就可以了,在rar下操作,不要解压缩,直接在rar下替换就可以了。 如果是制作内核或基带就需要提到updater-script这个文件了,这个文件在\META-INF\com\google\android目录下,这个文件可以直接用notepad2软件打开编辑 下面我写的,就是我之前那个跟进cm内核的补丁下updater-script的内容,简单说包括这些内容:移植cm内核,修正gps补丁,修改wifi文件,以及修改基带。updater-script 具体内容如下: mount("yaffs2", "MTD", "system", "/system"); show_progress(0.200000, 0); ui_print(" "); ui_print("+++ CM 74 ** MI +++"); ui_print(" "); show_progress(0.600000, 0); package_extract_file("bml_over_mtd", "/tmp/bml_over_mtd"); set_perm(0, 0, 0777, "/tmp/bml_over_mtd"); package_extract_file("bml_over_mtd.sh", "/tmp/bml_over_mtd.sh"); set_perm(0, 0, 0777, "/tmp/bml_over_mtd.sh"); show_progress(0.200000, 10); package_extract_dir("system/", "/system/"); show_progress(0.200000, 10); package_extract_file("updater.sh", "/tmp/updater.sh"); set_perm(0, 0, 0777, "/tmp/updater.sh"); package_extract_file("busybox", "/tmp/busybox"); set_perm(0, 0, 0777, "/tmp/busybox"); package_extract_file("erase_image", "/tmp/erase_image"); set_perm(0, 0, 0777, "/tmp/erase_image"); package_extract_file("modem.bin", "/tmp/modem.bin"); set_perm(0, 0, 0777, "/tmp/modem.bin"); show_progress(0.100000, 0); assert(package_extract_file("boot.img", "/tmp/boot.img"), write_raw_image("/tmp/boot.img", "boot"), run_program("/tmp/bml_over_mtd.sh", "boot", "72", "reservoir", "2004", "/tmp/boot.img"), delete("/tmp/boot.img"), run_program("/tmp/updater.sh") == 0); show_progress(0.100000, 0); unmount("/system"); 如果是做内核的话为了能在recovery刷包,需要把对应rom下\META-INF文件夹的内容完整的复制到你制作的内核中,例如我移植cm内核到miui下就需要把miui rom下的\META-INF文件夹的内容完整的复制到我制作的内核中,然后修改updater-script文件。 嗯具体内容差不多了,等我想起来了再补充 我以前帖子里有我做的cm内核大家可以下下来解压缩后研究下里面的内容,可以少走不少弯路。 |
|
来自: 天马行空之我 > 《手机Android》