跟着才烁数码网一起认识patchrom,希望本文能解答你当下的一些困惑。
如何patchrom

本帖教程只是经验之谈,不过也有一些素材来自网络,本人对此不负任何责任
这个教程介于入门和进阶之间,也就是说比如简单一点的像:rom的大体结构啊、android的基本原理啊、linux的基本操作啊。这个教程都一概略过。而比较深入的像:apk的修改、开发,源代码的修改、编写,smali插桩,移植适配其他非官方机型。这也一概没有。
本教程仅介绍如何利用MIUI放出的patchrom资源完成编译MIUI的流程,适用于对自制rom以及linux有一定了解,喜欢miui,喜欢DIY,但不太熟悉如何使用patchrom以及其基本流程的发烧友
如果你对android、linux完全是一个门外汉的话,这个教程对你来说可能会有不少无法理解的地方。而如果你如果已经是了,希望多多指点,跟大家交流一下你的经验。
--------------------------------------------------------------------------------
第一部分:介绍一些基本概念
首先介绍几个比较基本教程的链接
MIUI官方提供的教程:
CM官方wiki上的CM编译教程:
android官方提供的AOSP编译教程:
要学习利用开源源代码编译android rom的话,看完后面两个基本就够了,CM、PA这类的rom都可以根据CM的编译方法来编译,而AOKP这类的rom可以根据AOSP的编译方法来编译
大部分开源rom在他们的github上也会写上相关的编译流程以及主要的命令,比如PA除了用CM的编译方法手动输入每条命令来编译,也可以直接运行他们写好的build.sh来进行编译,基本上还是以实际文件和github上写明的流程为准
而MIUI当然跟这两种的编译方法都不一样,因为MIUI不是利用android源代码编译出来的,而是反编译现成的rom,修改相关smali来适配各种机型的,所以MIUI自己配置了一套编译平台,这也就是patchrom项目
都知道,android是基于linux内核的,而且谷歌也并没有提供适用于windows平台进行编译的相关代码和工具,所以要从源代码编译android是需要一个linux环境的
虽然谷歌同样也支持在苹果的mac系统上编译,但一方面mac的环境配置较为复杂,另一方面mac用户不如pc用户多,要装mac也远不如装linux方便,所以搞这个的,大部分人都是使用的linux
而基于linux内核的操作系统其实有很多,这些不同的linux系统也叫Linux发行版,最主流最常见最通用的一个版本,就是ubuntu(我个人是opensuse党,也在opensuse上编译过CM、MIUI,不过opensuse相对更复杂,而ubuntu现成的软件也更多更方便一点,所以这个教程里是使用的64位ubuntu 12.10来介绍的),而因此也有很多基于ubuntu修改的Linux发行版,比如深度的Linux Deepin和雨林木风的StartOS,所以相对来说,不论是原版ubuntu还是Linux Deepin和StartOS都比较适合刚接触linux的新手使用
以下所有输入命令的行为全是在“终端”程序中进行的,下文可能会有多处省略,所以你看到输命令可别问输在哪。
-----------------------------------------------------------------------
第二部分:编译环境的搭建
我本来是使用的12.04,64位桌面版,后来12.10出来了,就顺着更新上来了,因为我这里运营商强制上网得用他的拨号软件,所以我是在虚拟机里搭建的,其实我是推荐直接装在真机上,这样性能更好,编译也更快
ubuntu版本的选择、下载、安装、更换源、系统更新等等,我就不介绍了,网上教程一堆一堆的
在装好了ubuntu之后,我们就要开始android rom编译的环境配置了,大致的说一下,需要下载的文件总共有五步。
patchrom是什么
PatchROM实际上是通过Smali Injection技术将第三方ROM的代码注入原生系统的Framework,让该ROM的App能够正常运行,并且使得该ROM所修改的功能能够在原生系统中得到体现,将原生系统的ROM变成该ROM的一种适配方式;同时PatchROM平台指的是将需要注入的Smali代码开放出来,并提供一些自动化的编译环境,规整注入的Smali代码,使得第三方开发者能够快速的将系统原生ROM适配为该ROM的一个开放平台。Smail Injection技术指的是通过Android的反编译技术,将需要注入的Smali代码注入原有代码当中,使其拥有修改过的API和功能的技术。
插庄适配是什么意思
插桩适配是基于MIUI开源项目patchROM,将MIUI代码插到原厂ROM中去,是适配MIUI的一种方式,理论上可以最大限度的利用手机性能,获得最佳兼容性,并具有可以跨芯片移植的优点。而且由于不涉及内核与hal硬件层的修改,可以大幅度降低适配难度,提高适配。普通的拼包移植往往会出现各种各样的bug难以修复,而插桩适配可以更好的修复它们。