最近这几天在学习patchrom,由于什么都不懂,凑巧有大神做了tos,为了熟悉流程,快速进入开发,就在大神的指导下做了个tos。现在记录下,希望对于其他人有帮助。

##1.下载源码 这一步实际上不必多说,网上的很多教程这部说得很详细。 而且tos更简单,连repo都没必要下载,直接git clone就可以

1
git clone https://github.com/TOSPlus/TPS

这样代码就下载好了,我也没必要多解释。 这个就是下载下来的结构 tos_structure 这个结构官方文档讲的也比较清楚,主要开发处理的是devices里面的文件,一会做到了再解释。 ##2.创建项目 这分为几步,官方文档解释的也比较清楚。 首先初始化环境变量

1
source build/envsetup.sh

接下来配置目标机型

1
make create brand=IUNI device=U810

这个就是创建机型,然后在机型生成一些特定的文件。

1
cp ota.zip TPS/device/U810/

这个官方文档说复制到机型目录下,实际上直接找个*合并odex*的包,然后托过去就好了! 注意,一定要合并odex! 就是这样,这个ota.zip tos_device 然后就是对目标机型进行配置

1
make config device=U810

接下来就完了,配置些东西就开始吧。 ##3.配置文件 makefile 就像上面那个图,我们看到有个makefile文件,这是一个整体的配置,实际上完全不修改也可以,默认就好。 如果要修改的话makefile上面也都有注释,虽然是英文的。 由于我这个机型的rec有很多人编译,设置的目标机型也都不同,我就直接不让它生成验证脚本了

1
RECOVERY_DEVICE_ASSERT=false

就是这一句,实际上无所谓。 config 这个地方需要几个文件,由于我是编译完成的,你至少得有我那些文件,除了我那个文件夹(这个会自动生成,不用管)。 tos_device_config 这些文件你直接新建出来就好了。 首先这个build.prop,你从官方的里面找点也行,有几个属性是必须得设置的 比如

1
ro.qrom.otapath=/data/media/0

这个你就填这个就可以(实际上除非跟tos合作,谁有办法去做他的接口)。 那个file_context你可以解包boot.img,然后里面就有,拉过来就好了。 keep_files.list我理解的是保留官方包(底包)那些文件,不填就可以。 misc_info.txt主要指的个分去的大小,这个主要修改分区大小就好了,在你解包boot.img出来的文件中打开img_info文件你就能找到。 recovery.fstab在你解包boot.img中有个fstab.qcom,这个就是分区表,实际上都大同小异。 remove_files.list这个我跟人感觉很重要,因为你得从官方包删东西啊. 举个例子,你要删除media文件夹以及app/vpn.apk,那你就可以这么写

1
2
app/vpn.apk
media/

注意,最好把原包的短信以及phone.apk都删除,要不然很容易出问题。 还有tos_system_files.ignore官方说了注入有问题,那就按他的写进去就好了

1
2
bin/mediaserver_injector
lib/libmedia_jni.so

到这实际上就配置完了,接下来就开始动工吧。 ##4.插桩 首先要将文件反编译

1
make prepare

我刚开始不明白,一直提示hmt什么的的jar包,最后发现是忘了合并odex了,所以记得要合并 接下来是patch

1
make patch

这个通常不会有什么问题,就正常过去了,这个速度取决于电脑配置了。反正我推荐做双系统,而不是虚拟机。 当make patch完了后就开始处理冲突吧。 因为怕出问题,所以主要修改的是 patch/smali/target 目录下的文件,具体怎么修复冲突就不再这详细说了。 修改好了就可以

1
make repack

把修改的添加进去,执行

1
make package

做成包就可以了 不过似乎tos打包的boot.img有点问题,你被替换成自己的boot.img,能开机就在修复问题 ##5.最后一点东西

我在上面说了要替换boot.img,但是总不能做一个刷机包就替换一个吧,麻烦还没意义,正巧有个override文件夹,直接把boot.img放到BOOTABLE_IMAGES里面就好了。 加入你想往system文件夹里预置点程序,比如输入法,比如音乐,就打开SYSTEM文件夹,创建相应的文件夹,文件粘贴进去就可以了。 tos_override 比如你想往app里添加个baidushurufa.apk,那就在SYSTEM这个文件夹里面创建个app文件夹,把baidushurufa.apk放到app文件夹就好啦。 这个是我添加的 tos_override_tree

----------------------------------我是分割线-------------------------

到这似乎步骤就完了,也确实是完了。我在这想多说点东西。针对我等小白的。 1.老生常谈,必须得坚持下去,毕竟过程很枯燥,而且最好对着感兴趣,要不然做着做着就想放弃了。 2.最好找个大神做后盾。这个不是说遇到不懂的就要问他,而是这样会心里面有底,真出现错误了自己也不会怕,有帮着自己的人。但是遇到问题了能自己解决就自己解决,这样才会印象深刻。大婶可以给你信心勇气,但是一切得靠自己。 3.用好beyondcompare这些工具,以及一些常用的linux命令,我当时就用了很多grep查找命令。用好了事半功倍。

最后还是要感谢大神对我的指导帮助,原来在群里我还嫌他一直开车没少说他,对他也不好,大婶不计前嫌,指导我做出来包!感谢大神! 我的device有时间发出来吧,大婶的device我已经替他上传了,感兴趣的同学可以学习学习!