【手册】如何编译/修改三星手机Rom(一)

首先,以下内容来自xda论坛大神AndroidSword,写的《guide-how-to-develop-modify-roms》;本文是翻译,其中也会加入一些我的补充,AndroidSword大神在三星手机的定制方面不可谓不是大神或者专家了,至少他自己是这么理解的,国内基本没有像他这么详细又容易理解的惯有桑星rom定制的文章,基本都是一些很零散的,不成体系的文章;

本篇文章介绍的是三星手机Note5的Rom定制和开发,但是实际上可以适用于所有的安卓设备,包括目前最新的s9以及以后可能出现的note9,s10等;那么我们跟随这位大神来搞搞事情吧;

下面是这位大神给诸位的警告:

我不对你对设备所做任何事情负责,不管你是不是搞砸了,或者你去办公室迟到了,因为警报从未响起,或者你的女朋友因为没有接她的电话而抛弃你(男朋友从来没有这样做过:-p)…我和XDA都不对此负责。

致谢

  • 我的兄弟,我的老师,我的好朋友,@andyaguilar94,这是我第一次通过PM联系他,他很善良地教我什么东西,帮助我学习今天学到的东西…非常感谢兄弟。
  • @CrsMthw和@Androidwizzard,总是帮我解决ROM的问题,并且非常谦虚地倾听我所有的废话并不断支持我…
  • @ karan2012,@ pelpa87@Ather@ diegonnec是我的好朋友,帮助我做各种各样的事情,指出我愚蠢的错误,随时随地为辅助我…
  • @ASSAYYED和@ zxz0O0为他们的牛逼的工具(Kitchen和SamFirm)
  • 如果我忘了提及任何人,我很乐意将它们添加到此列表中…

一些能让你走的更远的工具

  • TWRP或者一些安装在root过的三星手机上的recovery;
  • NotePad++
  • WinRAR or 7-ZIP
  • 熟悉 Windows Explorer
  • 可用的三星手机
  • 一点点耐心和多多益善的时间

在阅读这篇文章之前,我想要告诉你的是,这篇文章不是教你从别人的安卓手机上移植Rom到你的设备,这篇文章教会你让你的手机升级到最新的固件,然后你就能针对你的手机制作自己的固件;值得一提的是,这篇文章适用于大部分的安卓版本,包括Marshmallow (6.0.1) 和Nougat (7.0) 以及以后会出来的各种版本;

文章概要

好了,现在我们回到手册,这份手册会分为五个部分讲解:

  1. 使用Kitchen搞一个最基础的Rom;
  2. 对这个Rom做一些最基本的修改(使用Kitchen);
  3. 学习updater-script 的语法,然后在rom上添加一些额外的功能;
  4. 学习关于添加AROMA 以及aroma-config语法;
  5. 一些让你的rom看起来牛逼的提示或者技巧;

使用KITCHEN搞一个最基本的Rom

好了,这里有两种方式我们能用来开发Rom:

  1. 不使用KITCHEN;
  2. 使用KITCHEN(强烈推荐);

我会尽可能全面的讲解关于更高效更省时的使用的一些方法,而且,不使用kitchen 仅适用于可刷写的Rom,而且kitchen 支持直接从固件的zip文件直接修改出来一个Rom;

安装并了解ASSAYYED KITCHEN

kitchens 的出现基本上是为了让ROM开发人员的生活地更加简单。所有kitchen 提供的功能,基本跟window提供的文件管理器是一样的;但是这个的话更需要经历和时间,所以有很多开发者在使用Kitchens中的某个工具搞一些牛逼的事情;在这个指南中,我们会使用 ASSAYYED KITCHEN (我知道这个软件的开发已经听智乐,但是这个里面还是有很多牛逼的功能供我们轻易上手使用);

首先,让我们下载安装ASSAYYED KITCHEN ;
Step 1:-官网下载ASSAYYED KITCHEN,国内戳这里
Step 2:- 下载好之后,把7zip文件拷贝到你要在你电脑上安装目录;
Step 3:- 使用解压工具解压;
Step 4:- 如果你没有重命名压缩文件,那么你会看到"ASSAYYED_KITCHEN_V1.82_STABLE",等待解压结束;
Step 5:- 进入到目录里面,你会看到一个 "TOOLS"文件夹和一个叫做 “ASSAYYED"的文件,运行可执行文件,加载完成后,你会在黑色屏幕上看到一些选择项;
Step 6:- 现在回到 ASSAYYED所在目录,你会惊奇的发现多了三个目录:- “PLACE”, “READY” 以及"WORK”;
【手册】如何编译/修改三星手机Rom(一)

okay,让我们来完成kitchen的设定,在实际开发和定制之前,我来向你们解释一下关于上述这些文件夹以及我们要拿来做什么;

"PLACE" 目录用来存放基础Rom包的zip文件或者framework固件的zip文件;这个跟目录实质上放的是你用来工作的ROM/FIRMWARE,你需要把 firmware zip放在这里(这个我后面会说),这是基础包,也就是我们要在这个上面做定制修改的包;
"READY" 目录会包含你生成的Rom 的zip文件,也就是要刷入到手机的Rom的zip包;
"WORK" 下面是Rom文件,就如文件名所示,这个文件夹使我们工作的地方,这里包含整个Rom文件(我后面会说);
"TOOLS" 这个文件夹我们暂时用不到,实际上这里面放的是一些我们可能用的到的重要的文件和应用;

就如你看到的,kitchen 有很多可选项,我没办法一次就把这些东西讲明白,但是在接下来的篇幅我会一一提到;
现在我们终于把kitchen 相关的东西搞定了,接下来我们下载手机最新的固件,好了,让我想你展示一下,我是怎么样下载固件的;

首先下载SamFirm 点击这里(国内点击这里)从Post #1选择最新的压缩包;这是一个过时的玩意,但是这对于高速下载最新的firmwares 非常有用,否则的话,你可能下载速度非常慢;

然后,入到这个网址,然后在下拉菜单里面核对(注意不是下载)一下和你手机的型号以及国家匹配的最新的固件;(竟然没有针对中国区的sm-g9600的更新,真是郁闷)

使用SAMFIRMTOOL 下载固件
Step 1:- 下载好之后,解压 SamFirm_v0.3.1.zip到你想要的目录(前面提到的);
Step 2:- 在解压目录中,在解压后的文件中有好几个文件,你不要去点他们,运行"SamFirm.exe"就可以了;
Step 3:- 这会打开一个新的窗口,你会看到有两列命名为"Firmware Info" 和"Download";
Step 4:- 在"Model" 和"Region"框分别填入前面提到的更新列表上自己设备的"Model"和"Region"(三星s9的是SM-G9600,CHC)勾选下面的auto(如果没有勾上);
Step 5:- 点击"Check Update" 按钮,会在后台请求服务器最新的固件,请求完成你会发现"Download" 按钮可以点击了;
Step 6:- 到这一步,你显然知道之前发生了什么,点击"Download"按钮,会弹出一个对话框提示选择保存路径,我这里是选择SamFirm_v0.3.1所在目录,然后就开始下载了,等待下载完成;
Step 7:- 一旦下载完了,你应该点击"Decrypt".当然如果之前勾选了Decrypt automatically,那么会自动解密;
Step 8:- 这个搞定之后,你会在你刚刚选择的目录下面看到一个压缩文件;
Step 9:- 把这个压缩文件拷贝到ASSAYYED kitchen目录下的 “PLACE” 文件夹,这个我前面提到过的;

现在firmware 和kitchen已经归位了,我们正式开始Rom的开发;

创建第一个你可启动的Rom

Step 1:- 从你的kitchen 目录下启动 “ASSAYYED.exe”;
Step 2:- 正如你看到的,在众多选项中我们需要着手的选项是"START CREATING PROJECT",在ASSAYYED中,我们通过输入对应的数字选择我们需要的选项,然后按回车,举个例子,我们需要选择"START CREATING PROJECT",我们看到它对应的是1,那么我们输入1,回车;
Step 3:- 然后它就会问,Where to Get the Firmware(在哪里获取到固件),我们很清楚我们把它放在了"PLACE" 文件夹,但是根据提示我们发现默认的文件夹就是 “PLACE_FOLDER” ,所以我们直接按回车就好;
Step 4:- 然后kitchen 会自动搜索"PLACE"找到他需要的zip文件,根据它的提示,输入正确的数字选择需要的文件,比如在这个项目中,我们选择1,回车;
Step 5:- 现在输入你的项目的名称,你可以输入任何字符哪怕是一个空格,然后按下回车;好了,现在你可以休息一下让kitchen 把它手头的事情做完;
Step 6:- 当kitchen执行完之后,你会看到 "PRESS ENTER TO CONTINUE"的字样按下回车他就会消失,然后我们进入到 "WORK"文件夹;
【手册】如何编译/修改三星手机Rom(一)

接下来是解读时间_,打开 “WORK” 文件夹后,你会看到两个文件夹和一个文件;

第一个是 “META-INF” 这个文件夹是TWRP 或者其他三方的recovery在你需要刷入任何东西的时候寻找的;这个文件夹是必须要有的,没有的话再牛逼的Rom也起不来;

然后还有一个"system" 文件夹,这里包含主要的 ROM,我们在可以在这里做细微或者大量的改动,实际上你可以把这个文件夹就当做Rom本身;

最后,这里还有一个叫做 “boot” 或者 "boot.img"的文件,这个实际上就是Rom的内核库,它其实也是ROM zip的一部分,而且你必须篡改这个文件,除非你很清楚现在在干的什么事;

现在我们进入到system文件夹,我们会看到好多子目录;让我向你解释一下 “system” 文件夹下的内容:

"app" :就跟文件夹名一样,这里面包含了运行在你的Rom上的各种各样的app和Service,如果你进入到app目录,你会看到好多好多的子文件夹,这里面放的就是app列表;
"cameradata" 文件夹包含的是Camera正常工作所需要的一些列文件夹;
"csc" 目录下放的是所有Rom定制者的宝藏;绝大部分的Rom定制只需要在这个文件夹里面添加一行代码就能搞定;
"fonts" 里面包含了Rom里面用到的各种字体;
"framework" 文件夹实质上是 ROM的一部分,这里面包含了很多的jar和一些apk,这些能让Rom运行起来非常棒;
"lib" 包含了ROM所需各种各样的lib文件,要牢记于心的是永远不要篡改 “lib64” 文件夹下的东西;如果你这么做了,ROM 可能就起不来了, “lib” 文件夹在某种程度上能被修改,比如deknoxing(这个我会在后面说);
"media" 文件夹包含了一些音频文件比如铃声,通知声,闹钟声音,以及其他的系统的声音;
"priv-app" 文件夹包含了一系列的 “privilaged apps”,私有的,因为需要一些特定的权限来运行;
"build.prop" 这是你的Rom里面最重要的一个文件,没有这个文件,你的Rom是死活-永远起不来的;

Step 7:- 我们首先从修改Rom名字入手,在System目录下,使用NotePad++找到并打开build.prop(前面废话太多了,为了简化我后面会这样称呼:system/build.prop);
Step 8:- 找到"ro.build.display.id"这行(这样该是文件开头那几行);在=后面应该是一连串的字符,比如我这里是N920CXXU3CQD1,你的可能会有细微的区别,这个取决于你的机型;你可以把这个字符改成任何你想要的,比如在我的N-FUEL Rom,我把它叫做"N-FUEL-XL1-N920CXXU3CQD1",希望你能明白我这种说法;
Step 9:- 现在可以开始刷你的Rom了,但是小伙伴,在这之前我们要把这个Rom打包成zip形式,是的你打开 ASSAYYED kitchen,找到"BUILD ROM FOR FLASHING"这一项(对应的应该是数字7),然后我们输入数字7,按下回车键;
Step 10:- 现在我们需要一个zip文件,根据提示我们知道对应的数字是3,所以输入3然后回车;然后他会要求你审核 updater-script(我接下来会告诉你 关于updater-script 和他的语法),在这里你让他选择"N0",这个是默认选项;然后他会问你是否要zipalign apk,这里你选择"YES".;
Step 11:- 然后你需要移植把压缩级别设置为5(如你所见,这个是默认的),然后你会看到他开始打包zip文件了,然后他会要你命名一下ROM zip,然后这里就搞定了;
Step 12:- 这个搞定之后,他会要求你给zip文件签名,这个是可选的,反正我是从来没有签名过;
Step 13:- 好了,现在我们已经完成了Rom定制之旅,接下来就是测试我们的Rom了;进入到"READY"目录,我们刚刚编译的东西就在这里;
Step 14:- 现在把这个Rom放在你手机的内置存储,然后进入到recovery模式,在这之前你要把你现在的Rom和data备份起来,然后清除e system, cache, dalvik and data,最后点击 FLASH YOUR ROM!!!

在下一篇文章,我会介绍Odexed /Deodexed ROMS, Debloating 和一些其他的东西,下篇文章见;