[GUIDE|ROM]MT65XX移植手册

前言:

你好朋友,我们都知道有很多基于开源的Android的ROM。
但是可能并不适用于您的设备。
现在,本指南将帮助您学会为您钟爱的设备移植这些原本不适用于您的设备的ROM

适用于:

1.MT65XX同平台移植(包括但不限于MT6582机型相互移植)
2.MT65XX跨平台移植(包括但不限于MT6582机型移植MT6592机型)
3.移植后一些BUG的修复
4.同安卓版本或者跨安卓版本移植

必备条件:

用于制作脚本的电脑或者手机
MT管理器(推荐)
Notepad++编辑软件安装程序文件(手机可以使用MT管理器实现)
设备与CWM / TWRP Recovery等测试您移植的ROM
7z或WinRAR或任何其他使zip压缩工具(手机可以使用MT管理器实现)
坚持下去的决心
创造性思维和使用计算机或者手机的一些基本知识

笔者:贴吧ID-装机狂魔
欢迎加入玩机交流群:230667346

Q&A:

Q:指南中所提到的文件来自哪里?
A:来自于您设备的官方ROM

Q:我的官方ROM里缺少指南中所提到的文件怎么办?
A:直接忽略掉它就行

Q:我可不可以使用一键移植Boot?
A:可以,但是不推荐,因为这可能会导致无法启动或者产生致命BUG

Q:指南中所提到的替换是不是直接覆盖对应文件夹或者文件?
A:请删除后再复制!

第一章::移植ROM

1.1 MT65XX同平台移植

1.1.1 替换文件与文件夹

需要替换的文件夹:

1
2
3
4
5
6
7
8
9
10
11
12
-etc:
/system/etc/buletooth
/system/etc/firmeware
/system/etc/mddb
/system/etc/wifi
-lib:
/system/lib/hw
-usr:
/system/usr/keychars
/system/usr/keylayout
-vendor:
/system/usr/lib

需要替换的文件:

1
2
3
-lib:
/system/lib/libaudio.primary.default.so
/system/lib/libcameracustom.so

1.1.2 移植Boot:

1
利用互联网上的搜索引擎,你会学习到许多有用的知识

1.2 MT65XX跨平台移植

1.2.1 替换文件与文件夹

需要替换的文件夹:

1
2
3
4
5
6
7
8
9
10
11
12
-etc:
/system/etc/.tp
/system/etc/firmware
/system/etc/permission
-lib:
/system/lib/hw
/system/lib/soundfx
-usr:
/system/usr/keychars
/system/usr/keylayuot
-vendor:
/system/vendor/lib

需要替换的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
-bin:
/system/bin/ipod
/system/bin/mtkbt
-etc:
/system/etc/agps_profiles_conf.xml
-lib:
/system/lib/lib3a.so
/system/lib/libaudio.primary.default.so
/system/lib/libaudioflinger.so
/system/lib/libbluetooth_jni.so
/system/lib/libbluetooth_mtk.so
/system/lib/libcam.camadapter.so
/system/lib/libcam.campipe.so
/system/lib/libcam.camshot.so
/system/lib/libcam.client.so
/system/lib/libcam.device1.so
/system/lib/libcam.exif.so
/system/lib/libcam.paramsmgr.so
/system/lib/libcam.utils.so
/system/lib/libcamalgo.so
/system/lib/libcamdrv.so
/system/lib/libcamera_client.so
/system/lib/libcameracustom.so
/system/lib/libcustom_nvram.so
/system/lib/libdpframework.so
/system/lib/libfeatureio.so
/system/lib/libimageio.so
/system/lib/libimageio_plat_drv.so
/system/lib/libjpeg.so
/system/lib/libJpgDecPipe.so
/system/lib/libJpgEncPipe.so
/system/lib/libMali.so
/system/lib/libmnl.so
/system/lib/libmtkxxx(所有以libmtk开头的so)
/system/lib/libnbaio.so
/system/lib/libsensorservice.so
/system/lib/libshowlogo.so
/system/lib/libvcodec_oal.so
/system/lib/libvcodec_utility.so
/system/lib/libvcodecdrv.so

1.2.2 移植Boot:

1
参考同平台

第二章:修改build.prop中的一些内容

build文件的位置:

1
/system/build.prop

请保持build.prop文件的编码为UTF-8

本步骤可以忽略,但是您的ROM可能会出现一下状况
不会显示正确的品牌与机型
DPI可能会出现问题
语言和时区可能会不与您所在的地区相符

注:您可以参考您官方ROM的build.prop中的内容进行修改

2.1 修改机型

在您的build.prop找到以下字段,它们会在比较靠前的位置

1
2
3
4
5
6
7
ro.product.model=
ro.product.brand=
ro.product.name=
ro.product.device=
ro.product.board=
ro.product.manufacturer=
ro.build.product=

按下面所展示的内容进行修改

1
2
3
4
5
6
7
ro.product.model=品牌+机型
ro.product.brand=品牌
ro.product.name=机型
ro.product.device=机型
ro.product.board=机型
ro.product.manufacturer=品牌(使用大写字母)
ro.build.product=机型

就像这样

1
2
3
4
5
6
7
ro.product.model=Lenovo A3800-d
ro.product.brand=Lenovo
ro.product.name=A3800-d
ro.product.device=A3800-d
ro.product.board=A3800-d
ro.product.manufacturer=LENOVO
ro.build.product=A3800-d

2.2 修改语言与时区

在您的build.prop找到以下字段,它们会在比较靠前的位置

1
2
ro.product.locale.language=
ro.product.locale.region=

按下面所展示的内容进行修改

1
2
ro.product.locale.language=语言
ro.product.locale.region=地区

就像这样

1
2
ro.product.locale.language=zh
ro.product.locale.region=CN

2.3 修改ROM的DPI

注:如果找不到决定DPI的字段,您还有以下几种选择
1.手动将决定DPI的字段加入到build.prop中
2.跳过此步骤

在您的build.prop找到以下字段,它们所处的位置并不确定

1
ro.sf.lcd_density=

按下面所展示的内容进行修改

1
ro.sf.lcd_density=和您的设备的屏幕分辨率相对应的DPI,它是一个整数

就像这样

1
ro.sf.lcd_density=240

附:各种常见分辨率所对应的DPI

1
2
3
4
5
LDPI ( 240x320 / QVGA )=120
MDPI ( 320x480 / HVGA )=160
HDPI ( 480x800 / WVGA )=240
XHDPI ( 1280x720 / WVGA )=320
XXHDPI ( 1920x1080 / WVGA )=480

第三章:修改刷机脚本中的内容

脚本文件路径

1
/META-INF/google/android/updater-script

请保持update-script文件的编码为UTF-8

3.1 去掉机型验证,如果脚本中不存在机型验证的内容就跳过此步骤

将updater-script中类似于

1
2
assert(getprop("ro.product.device") == "xxx" ||
getprop("ro.build.product") == "xxx" || getprop("ro.build.product") == "xxx");

的内容去掉即可

3.2)修改和分区有关的内容

将updater-script中带有mount字样的语句替换为官方updater-script中带有mount的语句

就像这样

这是目标ROM中相关的内容

1
2
mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p7", "/data");

这是官方ROM中相关的内容

1
2
mount("ext4", "EMMC", "/dev/block/mmcblk0p6", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p6", "/data");

差别很明显,但是不要用我提供的内容进行替换

3.3)在刷机过程中显示一些信息
这一步骤是无关紧要的,可忽略

在你认为合适的地方加入一些

1
ui_print(" ");

并在引号内加入你想要展示的信息

就像这样

1
2
ui_print("本ROM制作者:装机狂魔 ");
ui_print("发布日期:2017-08-07 ");

3.4)判断并解决一些刷机脚本的错误

1
2
3
4
5
6
7
status 1 :错误的原因是传入的参加少于4个。导致错误的地方是install.c::try_update_binary() ,解决方案是换一个Recovery
status 2 :错误的原因是传入的参加中的第二个参加,RECOVERY_API_VERSION,错误,不是 '1', '2', '3',这个要去修改源代码中的Android.mk,所以建议换一个 Recovery
status 3 : 刷机包本身有问题,无法被打开, 解决方案,去换一个好的刷机包,或者是重新下载刷机包。
status 4 :无法在刷机包中找到刷机脚本,updater-script ,解决方案,对刷机包重新打包往里面加入updater-script.
status 5 :读取刷机脚本updater-script错误 ,解决方案:重写刷机脚本
status 6 :处理刷机脚本的时候出错 , 解决方案,重写刷机脚本
status 7 :分析刷机脚本的时候出错了。解决方案,重写刷机脚本,改编码为utf8-no-bom

第四章:修复一些BUG

4.1 通讯录fc

1
2
3
4
这个只要替换
libsqlite.so
libsqlite_jni.so
这两个文件到ROM即可

4.2 卡第一屏

1
2
3
4
5
6
这个其实没什么
替换
libandroid_runtime.so
即可

注:卡第一屏也可能是Boot出现了问题,可以通过Logcat确定

4.3 照相机拍不了照或者拍照卡死或重启

1
2
3
同样是替换
libandroid_runtime.so
即可

4.4 通话时对方听不到我方声音

1
2
3
4
5
6
7
反编译phone.apk
找到
res\values\bools.xml
文件

<bool name="send_mic_mute_to_AudioManager">true</bool>
语句中的true改成false

4.5 手机要求激活

1
2
3
4
--桌面上按菜单键->设置->无线和网络->移动网络->CDMA订阅->RUIM/SIM
--长按关机键->启动飞行模式
--长按关机键->关闭飞行模式
--如有必要重启一次手机

4.6 手机出现漫游标志

1
2
--设置->无线和网络->移动网络->系统选择->仅本网
--如有必要重复手机要求激活的步骤

4.7 不显示开机动画

1
使用官方ROM的/system/bin/bootanimation文件替换到ROM里

4.8 彩信不可用

1
2
3
4
在MMSC里面写:http://mmsc.vent.mobi 
彩信代理写:10.0.0.200
彩信端口选:80
这就为ctnet设置了彩信代理,就可以使选择ctnet联网方式照常接收彩信。

4.9 通话声音或者音乐无声音等BUG

1
2
3
4
5
6
7
8
9
10
首先替换bin 下 
audioloop 应该是音频相关的
stagefright 应该是播放声音相关的
mediaserver 媒体服务
然后是lib

audio开头全部替换 音频驱动
hw/下 audio开头的全部替换 这里面应该是话筒 啊!!扬声器这些的驱动
libstagefright 开头的全部替换 播放声音的驱动
libmedia 开头的全部替换 媒体相关的驱动 .

4.10 移植成功触屏无法使用

1
替换system/sps文件夹(整个替换)

4.11)照相机倒置,白屏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
system/etc/media_profiles.xml

打开:media_profiles.xml

修改里面的代码
<EncoderProfile quality="high" fileFormat="mp4" duration="60">
<Video codec="m4v"
bitRate="3078000"
width="640"
height="480"
frameRate="30" />

为:

<EncoderProfile quality="high" fileFormat="mp4" duration="60">
<Video codec="m4v"
bitRate="3078000"
width="320"
height="240"
frameRate="30" />


修改代码:

<VideoEncoderCap name="m4v" enabled="true"
minBitRate="96100" maxBitRate="2500000"
minFrameWidth="176" maxFrameWidth="640"
minFrameHeight="144" maxFrameHeight="480"
minFrameRate="1" maxFrameRate="30" />

为:

<VideoEncoderCap name="m4v" enabled="true"
minBitRate="96100" maxBitRate="2500000"
minFrameWidth="176" maxFrameWidth="320"
minFrameHeight="144" maxFrameHeight="240"
minFrameRate="1" maxFrameRate="30" />
修改后保存即可

尾声…

指南中部分内容来自互联网
现在您已经为您所钟爱的设备成功地移植了一个ROM
这是关于移植ROM的基础支持……
我已经覆盖了所有的常用的基本指南

向开源致敬!

官方QQ群: 点击加入
官方贴吧:点击访问(求关注)

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器