安卓版本:4.1.2
包大小:270.8MB
安卓版本:4.1.2
包大小:256.2MB
安卓版本:4.0.4
包大小:166MB
安卓版本:4.0.4
包大小:173MB
安卓版本:4.2.1
包大小:324.7MB
请输入验证码:
信壹网络旗下产品红米手机 &
骨灰级手机控
扫码下载App一键签到 升级加速
Android ROM制作教程,让你拥有自己喜欢的ROM
扫一扫!手机看帖更爽
关键词:java环境配置制作工具 update-编写美化 集成 编译反编译一.制作目的:1.培养个人兴趣,感受动手动脑的快乐。2.学习手机基本知识,最终动手制作自己的ROM。3.帮助那些需要帮助的朋友(说不定有人喜欢你制作的ROM)二.制作原理:1.安卓基础知识普及:Android一词的本义指“机器人”,同时也是Google于日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4Gingerbread和Android 3.0Honeycomb。①底包:官方的系统包,相当于我们的Windows的操作系统,事实上它相当于一个纯净版或者内核版的系统包,是最底层的东西。扩展名为sbf,底包通常是官方发布的,ROM作者直接拿来用的,可以选择的版本不会太多,通常更新也不会频繁。底包通常使用PC端刷机工具(RSD)配合Bootloader的工程模式完成刷入。②升级包(镜像包):广大玩家制作的底包增强包,通常表现为一个update.zip文件。升级包是对底包的扩展和增强,包含一系列的辅助工具和服务,没有中文的底包通过升级包可以实现中文。当然,很多功能也是通过升级包来实现的。可以说,在刷新了底包后,配合刷新相应的升级包,这样才形成一个完整系统。升级包通常通过Recovery工具,从SD卡读取刷入。③Bootloader&&:相当于电脑里面的bios(基本输入输出系统),手机一开机,控制手机的就是Bootloader。我们通常所说的进入Bootloader,实际上是指进入Bootloader的工程模式,既是刷机模式,在此模式下可以将moto的sbf文件(底包)刷到机器里面。④Recovery : Moto 手机内置的一个独立备份恢复工具,类似电脑上的一些一键还原系统,既是在系统出现问题的时候仍然可以打开的一个模式。Moto 的 Recovery 主要提供了WIPE(硬启,清除数据,恢复出厂设置)和Update(通常用于***升级包,update.zip)功能。 Recovery是不能直接刷新的底包的,通常它刷新的升级包(update.zip)的方式是:自动寻找SD卡上的特定文件,然后写入。⑤基带(Baseband):是手机中的一块专门的代码,或者可以理解成为一个专门负责通讯的BIOS,负责完成移**络中无线信号的解调、解扰、解扩和解码工作。基带的不同会造成信号效果的不同。因为各地、各网络实际情况不同,需要大家自己选择适合自己的基带。⑥WIPE :wipe后就恢复了出厂设置,包括联系人、短信、***的软件等全部删除。俗称硬启,恢复出厂设置。注意,wipe后app2sd和root权限需要重新做。而且app2sd重要的分区步骤也要重新来过。某些说法提到在刷新底包或者升级包前需要进行WIPE操作,我对此操作的必要性不是很确定。⑦OpenRecovery(简称OR) :由于MOTO很蛋疼的在update.zip上做了一些手脚,这些东西影响到了升级包的制作。于是高手们就搞出了一个OpenRecovery,这其实就一个第三方的增强版的Recovery工具,某些OpenRecovery已经发展成为一个具有很多功能的小系统了(类似WindowsPE),在这个OR中,可以完成很多东西,我们完全可以把OR想象成电脑上用的应急PE系统,在上面可以调整超频、基带、app2sd、更换启动画面、wipe、改变时区、调整键盘布局,甚至链接USB当读卡器等等,凡是recovery能做的,OR都可以做,recovery不能做到,OR可以做到。一般OpenRecovery在sd卡上有两个部分存在:update.zip和OpenRecovery目录,最新的GOT底包添加了新的一个OpenRecovery-CFG目录,用来存放各种个人文件。update.zip就是用来坑MOTO一个标准的的zip升级包,而真正的升级包要放在/sdcard/OpenRecovery/updates目录下。⑧App2sd :说白了,其实很简单,就是把APK文件***到sd卡上,android是Linux脱胎而来,App2sd的原理就是对SD卡进行分区,然后把SD上划分出来的某个分区合并到系统分区中去(听不懂,不要紧),划分出来的分区是Ext2格式,一般Windows不能识别,不要惊慌,正常现象。App2sd对sd卡要求比较高,如果感觉app2sd后比较慢,可以试试换一张C4的sd卡。因为在2.1的环境下,app2sd需要对sd进行分区,操作比较复杂,E文不好的小白或者电脑基础薄弱的小白容易失误。建议对Android非常熟悉了再做App2sd。⑨Root :大家都知道android系统脱胎自Linux,也正是这个开源的内核让广大玩家可以自由发挥。Root是Linux系统下的系统级账号,拥有系统的全部权限,Android设计上的不开放这个用户的,目的是为了保护系统安全,但是这个保护似乎也带来很多不便。于是就一些工具和方法来开放这个账号。开放Root账号的方法似乎有很多,这里就不再细说。原理上分析,root的账号,应该通过在Android系统***某个系统级别的服务,该服务具有root权限,然后其它需要root权限的程序再向这个服务请求root权限。WIPE、刷机都有可能会造成root权限失效,需要重新root权限。额外说明:①从原理上分析,通常底包,Bootloader,Recovery,基带都是可以刷新替换的,升级包当然更可以。但是底包、Bootloader很少会有第三方开发或者修改的,一般都使用官方发布的。底包有时候会内置Bootloader、Recovery,这样的底包刷新时会连上述两者一起更新(推测结果,不确定)。更新这样的底包是有危险的,有可能会造成Bootloader损坏,这个东西损坏了,基本就是变砖了,真正的变砖,只能花钱去修了。只有这个东西没坏,就不是砖。②我们通常所说的刷机ROM实际是升级包,升级包是对应于特定的底包制作的,所以刷机时务必确保使用的底包和升级包版本上保持一致。③需要注意版本号的还有:Bootloader版本、基带版本、Recovery版本④目前有些OpenRecovery工具支持底包、升级包一起从SD卡读取刷入⑤似乎刷机前确保系统干净整洁是很重要的,很多教程提到要通过 WIPE - 刷底包的步骤来确保刷机前的干净,实际上如果底包版本没有变化,刷底包似乎、也许、大概、可能是不必要的。2.系统结构及文件简单剖析:一个常见的自制ROM根目录会有以下几个文件夹及文件:data,-IN,system,boot.img(锁了BL的可以无视这个,但制作时需要它,打包时把它拿出来。)系统目录说明①应用程序***目录1) 系统应用程序所在目录/system/app/*.apk2)用户***应用程序所在目录/data/app/*.apk3) 注意:a)在模拟器中,每重启一次,/system/app/下的应用都会被还原,有时/data/app下也会被清除b)若在/system/app和/data/app下有重名的应用,不一定会启动哪一个,尤其是在adb install杀死正在运行的程序时,有时旧的就会被启动②.用户数据所在目录/data/data/应用包名/shared_prefs配置文件/data/data/应用包名/databases/*库文件所在目录③. SD卡对应目录/sdcard/而我们需要处理的只是两个文件夹里面的内容:data/app ----该文件夹里的文件可以全删,也可以自由添加自已所需***的应用软件,刷机***后可以自由删除。system/app ----在这个文件夹下的程序为系统默认的组件,可以看到都是以APK格式结尾的文件,但有些系统自带的ROM里面还有和APK文件名对应的odex文件。我们主要是针对该文件夹里的文件进行精简,如果有odex文件的,删除APK文件名时同时也删除与其对应的odex文件。虽然一般定制时只是对以上两个文件夹里的文件做相应的增减,但我们还是一起来了解system相应目录常见相应文件的用途吧。rom版本不同,里面的APK也会不一样,其它文件夹下需要改动的较少,或者不需要改动。但app文件下是制作时的重点,所以详细列出:\\system\\app\\system\\app\\AlarmClock.apk闹钟\\system\\app\\Browser.apk浏览器\\system\\app\\Bugreport.apk Bug报告\\system\\app\\Calculator.apk计算器\system\app\Calendar.apk日历\\system\\app\\CalendarProvider.apk日历提供\\system\\app\\Camera.apk照相机\\system\\app\\Contacts.apk联系人\\system\\app\\DownloadProvider.apk下载提供\\system\\app\\DrmProvider.apk DRM数字版权提供\\system\\app\\Email.apk电子邮件客户端\\system\\app\\FieldTest.apk测试程序\\system\\app\\GDataFeedsProvider.apk GoogleData提供\\system\\app\\Gmail.apk Gmail电子邮件\\system\\app\\GmailProvider.apk Gmail提供\\system\\app\\GoogleApps.apk谷歌程序包\\system\\app\\GoogleSearch.apk搜索工具\\system\\app\\gtalkservice.apk GTalk服务\\system\\app\\HTMLViewer.apk HTML查看器\\system\\app\\Htc**.apk集成**客户端PEEP\\system\\app\\IM.apk即使通讯组件包含MSN、yahoo通\\system\\app\\Launcher.apk启动加载器\\system\\app\\Maps.apk电子地图\\system\\app\\MediaProvider.apk多媒体播放提供\\system\\app\\Mms.apk短信、彩信\\system\\app\\Music.apk音乐播放器\\system\\app\\PackageInstaller.apk apk***程序\\system\\app\\Phone.apk***拨号器\\system\\app\\Settings.apk系统设置\\system\\app\\SettingsProvider.apk设置提供\\system\\app\\SetupWizard.apk设置向导\\system\\app\\SoundRecorder.apk录音工具\\system\\app\\Street.apk街景地图\\system\\app\\Sync.apk同步程序\\system\\app\\Talk.apk语音程序\\system\\app\\TelephonyProvider.apk***提供\\system\\app\\Updater.apk更新程序\\system\\app\\***Services.apk ***服务\\system\\app\\Vending.apk制造商信息\\system\\app\\VoiceDialer.apk语音拨号器\\system\\app\\VoiceSearch.apk语音搜索app文件夹内放的就是内置软件,有不想要的,直接删除之。请在删除之前先弄清楚它能不能删除。有些官方内置的软件,删除了ROM就废了。当然,你也可以在没弄清楚的情况下乱删一气,只要在刷机完发现问题之后,把删除的软件,一个个放回去排查,刷个十遍八遍,大约也就搞定了。所以我们要佩服那么敢于探索的先驱,不容易啊。fonts文件夹放的是手机的字体,如果没有美术细胞的人就不要乱改,改字体有时候会死人的,刺眼、字形不协调、大小不一致等等诸如此类。要改也刷机完以后再改。具体方法要参见自己区的人发的帖子。lib文件夹顾名思义,是内置软件的库文件。有些软件需要动态库支持才能正常使用的,比如常见的输入法之类的。所以,如果你向一个原本可以正常使用的ROM中加入了新的软件之后,反而出现某程序意外关闭某程序意外结束的情况后,那么基本上就是你忘了把库文件给它移动过去。bin文件夹中放的是系统内置的工具,像什么busybox,su之类的都在里面,没事不要删除它,可以添加,但不要删除。etc文件夹中放置的是系统的设置,诸如无线、GPS、DHCP、拨号、APN列表之类的设置。这个目录中,如果你改了重要的CONF文件,则可能系统出问题。也可以改一部分不重要的东西(比如说APN列表)而不出现问题,但貌似APN列表没必要改。framework目录就是系统的UI了,想改界面的人应该改这个目录中的文件。。大约也就是替换一些什么图片,换掉界面框架什么的,改改字体颜色什么的?以达到改换界面的目的。& &media目录是系统内置的媒体文件,如开机音乐,内置的通话铃声、信息铃声、闹钟铃声,可以改,但格式是OGG的,可以自己去搜索如何换格式。usr目录是系统的部分使用配置,包括键盘映射表什么的,没事不要改。。。xbin目录,好吧,这个目录可以放一些工具,而且貌似官方本身在里面放了一个tcpdump,是截获网络数据包的。没试过删除它,推荐有冒险精神的可以删除之,再将结果告诉我们。& && &system:系统分区.我们刷机器一般就是刷的这个分区.& && &userdata:数据分区.& && &cache:缓存分区& && &recovery:Recovery分区,相当于建立在hboot与android系统间的一个中间层,如名字一般,主要用于系统调试和恢复。.& && &boot:存放内核和ramdisk的分区.& && &hboot:这个是SPL所在的分区,即 bootloader& && &splash1:这个就是开机第一屏幕了.& && &radio:这个是无线所在的分区,即基带所在分区。& && & misc:其他分区3.创建一个刷机包,update-脚本语法说明①简单举例:创建一个update.zip文件是很简单的事情,你所需要做的就是将文件放置到与Android文件系统中相对应的文件夹中,然后编写一个用来复制这些文件到手机对应位置的update-, 文件。作为举例,比如***Calculator.apk到system/app文件夹,复制libsec-ril.so文件到system/lib文件夹:新建一个空文件夹(本文例:G:\android)新建用来放置Calculator.apk的文件夹C:\android\system\app以及用来放置libsec-ril.so的文件夹G:\android\system\lib。创建用来放置update-文件的文件夹G:\android\-INF\com\google\android。创建一个名为updater-的文件,其内容如下:1.show_progress 0.1 02.3.copy_dir PACKAGE:systemSYSTEM:4.5.show_progress 0.1 106.行1和行5:显示进度条行3:复制刷机包中的system文件夹到Android的/system注意:你应该在文件的最末尾多添加一个空行(也就是行6)将C:\android压缩中的所有内容压缩为zip包(千万记住:是压缩android这个文件夹中的内容,不是android文件夹本身)为android.zip签名②基础语法篇1.copy_dir语法:copy_dir ⑩默认时区。在/system/default.prop中修改persist.sys.timezone(如果没有该项,则手动添加)的值为Asia/Shanghai(即东八区),即persist.sys.timezone=Asia/Shanghai注:如果没有/system/default.prop,也可以在/system/build.prop中修改或添加。⑾锁了bl的同学,在修改时注意看运行时的语句,凡是涉及到的功能修改了boot.img,你就趁早删了update-相关语句重来吧,不然也不会出什么大事,就是手机卡在第一屏进不去,或者一直进入恢复模式。解决办法如果你先前备份了,那就还原一下。如果没备份,重刷底包吧。⑿接下来就是打包签名,按照提示一步一步来就OK了。
扫描二维码,手机查看本帖
最近想学习。
&创建一个名为updater-的文件,文件格式为什么呢?能否具体一点怎么为android升级包签名?
楼主应该配图片,更精彩。
京ICP证110507号 京ICP备号