想知道什么是预安装功能、预安装的原理的,就慢慢的看帖子吧。直接想知道怎么添加的,那就跳过我这些废话,直接看添加教程吧,教程其实很简单。 废话开始: 每次刷完机后,大家都要安装一些自己经常使用的软件,不得不说这对我来说是一件痛苦的事。每次享受完刷机的乐趣后就要面对需要安装的一大堆软件。 首次见到预安装技术是在G大的包里,一直没有时间研究。这几天终于给搞定了,对喜欢刷机的机油来说这确实可以省去刷完机后一个个安装软件的麻烦。今天的教程就是要教给大家怎样给自己的ROM添加预安装的功能。 那么什么是预安装呢??其实为什么叫预安装,我也不知道。 预安装其实就是一种静默安装,在不需要操作界面的情况下完成apk的安装。/system/app下的apk其实就是静默安装的,在刷完机首次开机时系统会自动完成其目录下apk 的安装。静默安装的命令是pm install [-l] [-r] PATH,adb install命令背后也是调用的pm命令安装的。大家可以当成关键词谷歌一下,了解更多的内容。 G大的预安装脚本,安装的是/system/preinstall和/sdcart/preinstall下的apk。要实现这个功能,我们需要一个脚本,脚本用来干什么呢?主要功能是:判断是否是首次开机,是首次开机话就安装预定目录的apk,生成log。总不能每次开机都要安装一遍吧。 脚本有了我们要的是在开机时启动这个脚本。那么就要修改初始化脚本init.rc了。init.rc是一个可配置的初始化文件,通常定制厂商可以配置额外的初始化配置,例如init.%PRODUCT%.rc。它会在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被 init可执行程序解析。 init.rc是在init启动后被执行的首个脚本。我们目标就是修改它。至于shell语法、init.rc的语法这里不做介绍。 修改的思路,就是在init.rc中添加一个service,然后启动它。 废话结束。 教程开始,这里提供两种方法,也就是两种不同的思路。第一种方法我在2.3的系统上测试通过,但在4.0的系统上测试失败。第二种方法在2.3上4.0上均测试通过。那为什么还要说第一种方法呢,因为第一种方法可定制性比较强 自己使用的工具: 1、 解包打包boot.img是使用的厨房 2、 文本编辑器使用的是notepad++
2、解包你的boot.img,解包方法大家可以使用厨房,不做具体讲解。修改init.rc。CM7是在:
- # Run sysinit
- exec /system/bin/sysinit
- class_start default
复制代码
前面添加:
- # Include extra init file
- import /system/etc/init.local.rc
复制代码
其余的一些官方包添加到start sysinit这句话前面。
其实添加到最后也是可以的,但最好添加到这里。因为这句话本该就在这。
最后打包你的boot.img。在/system下建立preinstall目录,放入你要装的apk就行了。普通用户可以在刷机前在SD上建立preinstall目录放入自己apk。Apk不得有空格,不得有中文字符。
|