开发环境
推荐使用Ubuntu14.04及其以上系统
自用镜像:https://pan.baidu.com/s/1b17o0u
需要安装的依赖:curl、git、openjdk-7、android-tools-adb
当然miui适配工具还是支持macOS平台、mac用户也可以下载玩耍
同步代码
下载repo
魔趣的repo不需要挂ss下载,推荐使用!
下载适配代码
miui开源地址在这里 https://github.com/MiCode
下载miui代码命令:
整个代码同步大概需要一小时左右,请喝杯茶等待,如果发现速度过慢,请自带梯子,传送门: http://www.jianshu.com/p/b085b4832fd0
选择合适的底包
由于miui开发的代码是针对android6.0也就是marshmallow、所以你的底包也应该是基于Android 6.0 的推荐开发者在有实际手机的情况下进行适配,一方面,在 Android 6.0 上,有一些必要的文件信息需要从手机上获取;另一方面,很多适配出现的问题,是需要在真机上调试才能解决的。
拉取底包vendor
首先新建机型目录
|
|
然后将手机重启到rec模式、
|
|
接下来运行如下命令来拉取vendor
|
|
“-r”的意思是在rec模式下拉包
拷贝makefile并进行配置
从angler文件夹拷贝makefile、参考它进行相关配置
反编译framework
在 makefile 准备完毕后,便可以开始构建新的机型工程。以下命令会自动反编译
首次插桩
在新机型工程生成完毕之后,执行以下命令会完成自动插桩:
此时工具将会自动进行插桩、
由于原厂rom和miui官方逻辑问题、会导致部分patch失败、从而产生冲突、产生的冲突在temp/rej下。
解决冲突
有些smali冲突容易解决,甚至可以瞬间解决。一些难以解决的冲突依赖于冲突位置处的上下文,很多时候都是由于 board 和 vendor 在 smali 寄存器变量的使用差异导致的,我们需要从上下文中判断出寄存器变量的语义。这考察开发者着耐心。
没有相关基础的同学、朕赐你一本秘籍: https://pan.baidu.com/s/1dFHqyvZ
打包
运行如下命令即可在out目录下面生成fullota.zip刷机包
如果你需要重新编译rom、则需要运行
clean完成了再次fullota即可
调试
对新手来讲,适配miui是个相对很难的过程,仅仅解决了冲突并不一定能直接开机。那就需要运用好logcat来抓取错误log、进行相关的分析
Github上面有很多优秀开发者的开源miui项目,可以参考他们的开源项目进行冲突的修改以及bug的修复。