分享

[转帖] android系统rom包制作、自己弄个适合自己的rom包

 liumw1203 2013-06-17

在力卓社区看到的。自己想做个rom包。觉得写得很清楚就转帖过来让大家看看。目前一堆的rom包。不知道用那个好。就下一堆下来中和一下。做一个自己的rom包、这样不更爽吗。哈哈。这是转帖。本人也是菜鸟。第一次发这种贴。希望没错。

制作方法
一、ROOT
目前的民间ROM 基本上已经自带ROOT  所以省略此步骤 当然前提得是ROOT过的
二、工具准备
下载安装附件中的R.explorer管理器(rootexplorer.v2.9.4.apk)这个工具的作用是备份APK文件、删除APK文件、查看系统目录里面都有什么
下载附件中的AndroidResEdit_By_hanhualan...解压到电脑里(如果不能运行则说明你需要安装.NET Framework 2.0)我们主要用这个来对定制包签名
三、定制包制作知识
一般定制ROM(不是美化、也不是制作MOD)其实就是对手机内存里的system/app文件夹的内容进行自定义,自己安装的软件将不会出现在这里,而是\data\文件夹中。
系统所有的程序都在这个文件夹里,比如浏览器、拨号器、联系人等
先来看一下通常情况下这个文件夹里都包含什么:
\system\app\AlarmClock.apk 闹钟
\system\app\AlarmClock.odex
\system\app\Browser.apk 浏览器
\system\app\Browser.odex
\system\app\Bugreport.apk Bug报告
\system\app\Bugreport.odex
\system\app\Calculator.apk 计算器
\system\app\Calculator.odex
\system\app\Calendar.apk 日历
\system\app\Calendar.odex
\system\app\CalendarProvider.apk 日历提供
\system\app\CalendarProvider.odex
\system\app\Camera.apk 照相机
\system\app\Camera.odex
\system\app\com.amazon.mp3.apk 亚马逊音乐
\system\app\Contacts.apk 联系人
\system\app\Contacts.odex
\system\app\DownloadProvider.apk 下载提供
\system\app\DownloadProvider.odex
\system\app\DrmProvider.apk DRM数字版权提供
\system\app\DrmProvider.odex
\system\app\Email.apk 电子邮件客户端
\system\app\Email.odex
\system\app\FieldTest.apk 测试程序
\system\app\FieldTest.odex
\system\app\GDataFeedsProvider.apk GoogleData提供
\system\app\GDataFeedsProvider.odex
\system\app\Gmail.apk Gmail电子邮件
\system\app\Gmail.odex
\system\app\GmailProvider.apk Gmail提供
\system\app\GmailProvider.odex
\system\app\GoogleApps.apk 谷歌程序包
\system\app\GoogleApps.odex
\system\app\GoogleSearch.apk 搜索工具
\system\app\GoogleSearch.odex
\system\app\gtalkservice.apk GTalk服务
\system\app\gtalkservice.odex
\system\app\HTMLViewer.apk HTML查看器
\system\app\HTMLViewer.odex
\system\app\IM.apk 即使通讯组件包含MSNyahoo
\system\app\ImCredentialProvider.apk
\system\app\ImProvider.apk
\system\app\ImProvider.odex
\system\app\Launcher.apk 启动加载器
\system\app\Launcher.odex
\system\app\Maps.apk 电子地图
\system\app\Maps.odex
\system\app\MediaProvider.apk 多媒体播放提供
\system\app\MediaProvider.odex
\system\app\Mms.apk 短信、彩信
\system\app\Mms.odex
\system\app\Music.apk 音乐播放器
\system\app\Music.odex
\system\app\MyFaves.apk T-Mobile MyFaves程序
\system\app\MyFaves.odex
\system\app\PackageInstaller.apk apk安装程序
\system\app\PackageInstaller.odex
\system\app\Phone.apk 电话拨号器
\system\app\Phone.odex
\system\app\Settings.apk 系统设置
\system\app\Settings.odex
\system\app\SettingsProvider.apk 设置提供
\system\app\SettingsProvider.odex
\system\app\SetupWizard.apk 设置向导
\system\app\SetupWizard.odex
\system\app\SoundRecorder.apk 录音工具
\system\app\SoundRecorder.odex
\system\app\Street.apk 街景地图
\system\app\Street.odex
\system\app\Sync.apk 同步程序
\system\app\Sync.odex
\system\app\Talk.apk 语音程序
\system\app\Talk.odex
\system\app\TelephonyProvider.apk 电话提供
\system\app\TelephonyProvider.odex
\system\app\Updater.apk 更新程序
\system\app\Updater.odex
\system\app\Vending.apk 制造商信息
\system\app\Vending.odex
\system\app\VoiceDialer.apk 语音拨号器
\system\app\VoiceDialer.odex
\system\app\YouTube.apk Youtube视频
\system\app\YouTube.odex
然后是定制包的结构,定制包的命名一般是XXXX(英文)
.zip内容包括
/system/app/my.apk
(你想要放进系统中的程序)
/META-INF/com/google/update-script
(定制包脚本)
/META-INF/CERT.SF
(签名文件)
/META-INF/CERT.RSA
(签名文件)
/META-INF/MANIFEST.MF
(签名文件)
(附件中的custom.zip为范例,大家可以下载直接进行修改)
首先应将准备好的程序放进这个ZIP包的/system/app目录里,只要将程序拖进附件中custom.zipAPP目录即可
然后删除/META-INF/CERT.RSAMETA-INF/CERT.SF这两个文件,为了签名做准备
下面我们的来看最后一处需要编辑的地方——脚本
四、脚本:
现在我们对里面的文件有了大致的了解,那么举例说明,如果我们要做一个基于以上ROM的定制包,那么大概要进行两种操作
1.
添加目录里的APK程序到ROMsystem/app
2.
ROM里删除APK程序(即瘦身)
3.
显示进程
添加目录的语句为copy_dir PACKAGE:定制包路径 手机内存路径
删除程序的语句为delete 手机内存路径
显示进程语句为show_progress

脚本文件可用TXT、记事本等程序作为打开方式并编辑保存
作为初学者
只需要掌握以下范例即可
show_progress 0.1 0

delete SYSTEM:app/DivXRegCode.odex
delete SYSTEM:app/YouTube.apk

copy_dir PACKAGE:system SYSTEM:

show_progress 0.1 10

其中对前后两个show_progress语句不需要理解,看中间的,
第一句是删除system/spp文件夹内的DivXRegCode.odex文件,
第二句是删除system/spp文件夹内的YouTube.apk文件,
第三句是复制(同时会覆盖已存在的文件)定制包中的system文件夹到手机内存的system文件夹。
需要注意的是不是所有的系统文件都可以替换、删除,一般来说
Layar304-final-market.apk
MetaMidpPlayer.apk 
MidpPlayer.apk 
switchers.apk
Youtube.apk
MySpace.apk
Facebook.apk
这些休闲娱乐类的东西可以删除,像MMSPHONE等重要的程序通常情况下替换或者删除会出问题
掌握了这个就可以轻松地写一般的脚本了,一定要注意,脚本的最后一行下面必须有个空行,即只有一个回车存在的空行(不理解的看看附件中custom.zip里的脚本)
脚本也制作完成后,即可进行下一步:签名
五、签名
现在我们已经有了一个custom.zip文件,里面的/META-INF/CERT.RSAMETA-INF/CERT.SF已经被我们删掉,并且向APP文件夹里添加了文件
现在该对它签名了
我们这步的意义是让定知道了解它里面装的都是什么,相当于对里面的程序进行一次点名,不然使用时会出错
先将我们的custom.zip重命名为custom.apk


解压附件中的AndroidResEdit_By_hanhualangzi_v_1.5.rar


运行AndroidResEdit_By_hanhualangzi_v_1.5.exe(如果不能运行则说明你需要安装.NET Framework 2.0
然后单击工具栏里的签名(S
然后单击签名APK文件(A
按选择按钮
找到并选择custom.apk,点击打开
按下立即签名按钮
点保存~
稍等一会儿,里面的东西越多,ZIP包越大,等的时间越长
提示你签名成功后在你所保存的目录下就会出现custom-SignFile.apk


我们将其重命名为custom-SignFile.zip,这是里面就又有了/META-INF/CERT.RSAMETA-INF/CERT.SF两个文件,并且和原来的不同,这是属于你这个定制包的签名文件
将它放进SD卡的根目录里
六、安装
提醒一下!如果对自己做的定制包不是非常有信心,而且不想重新刷机,一定要备份ROM
安装定制包方法:
进入recovery模式),用方向键选择apply any zip from sd,然后选择custom-SignFile.zip,按OK键,然后会有提示让你按小房子键,按下小房子键即可。
全部运行完毕后,返回选择第一项reboot重启。
进入系统之后,如果成功的话,发现你在脚本中想删掉的程序已经不再菜单里了,而添加进system/app的程序出现在菜单里,这样一套基本的制作定制包的过程就结束了。
你已经可以制作各种定制包以备刷机后使用~

七、新手进阶
如果已经对制作定制包熟悉了的话
那么只要稍微动些脑子就可以做一些替换系统字体、修复联系人BUG等定制包~
提醒一下字体文件在system/font里,中文字体的文件名为DroidSansFallback.ttf
替换字体即是只要将字体文件命名为DroidSansFallback.ttf放入system/font文件夹里,用复制SYSTEM的语句正常刷进去即可
修复联系人BUG只需将联系人补丁内除了META-INF文件夹及其内的东西,都复制到你的定制包里,然后将脚本中除了show_progress命令之外,添加进你的定制包的脚本中~即可~简单吧~

八、答疑区
1.
能不能直接用R.explorer管理器 删除掉系统自带的无用软件啊? 这样做可以吗?
可以,方法是root后打开管理器,进入手机system/app目录点击上面的挂载(mount)读/写(RW)按钮,之后就可以对此文件夹的文件进行修改或者删除了
(祝君删的愉快、删的安全、、、、)
2.
签名后文件大小为0KB
签名的程序或定制包内包含中文命名的文件,重命名为英文的即可

纯手工版ROM 定制
工欲善其事必先利其器!! 所以准备工作必不可少,制作ROM所需要的软件和相关文件必须准备齐全了才能开始。
先附上所要需要用到的软件和文件:

JKD6
 http://dlc.sun.com. ... 6-p-12_sep_2008.exe
system.img
解压工具unyaffs   

签名工具Auto-sign
 
ROM
中的META-INF文件:
 
(适合制作有data/app文件的ROM

root
用的suSuperuser文件: 

将电源键替换为搜索键的legend-keypad文件:
   

过滤广告的hosts文件:

第一步:安装JKD6并设置变量环境(这一步很重要)
点击安装下载的jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe文件,安装目录就不要更改了,默认的就行了(这个应该简单的);
安装完成后开始设置环境变量了,这里就要仔细了。右键单击我的电脑(xp系统)计算机(vistawindows7系统),选择属性,然后在弹出的窗口点击系统高级设置(划横线部分仅适合vistawindows7系统,xp系统无此步骤),然后点击高级,再点击环境变量,见下图:
然后在下面的环境变量中新建变量:
变量名:JAVA_HOME
变量值:
C:\Program Files\Java\jdk1.6.0_10
提醒一下,64位系统变量值为:C:\Program Files (x86)\Java\jdk1.6.0_10  也就是说变量值就是你所安装的JKD6的安装目录下jdk1.6.0_10文件夹的路径。

然后点击确定。
再新建一个变量:
变量名:CLASSPATH
变量值:C:\Program Files\Java\jdk1.6.0_10\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_10\lib\tools.jar;.   注意最后面有个小点,别忘了。

同上,64位系统变量值为:C:\Program Files (x86)\Java\jdk1.6.0_10\lib\dt.jar;C:\Program Files (x86)\Java\jdk1.6.0_10\lib\tools.jar;.
然后点击确定。

再找到Path变量,点击编辑,在它的变量值最后面加上;C:\Program Files\Java\jdk1.6.0_10\bin    注意前面有个分号
同上,64位系统在后面加上的应该是: ;C:\Program Files (x86)\Java\jdk1.6.0_10\bin
然后点击确定

全部完成后点击两次确定,就OK了。
然后你运行cmd回车后看看再输入javac,出来一堆java命令就表示配置成功了。
第二部:提取官方ROM,解压system.img文件
接着前面下载的unyaffs.rar解压,并把解压后的unyaffs文件夹移动到电脑D盘根目录下,再把上面提取的官方原版ROM解压,将得到的system.img复制到Dunyaffs文件夹内。
然后运行cmd,输入D: 回车;再输入cd unyaffs 回车;再接着输入unyaffs system.img 回车,就开始解压system.img了,完毕后会提示按任意键退出。
创建system文件夹,将解压出来的文件(unyaffs文件夹内除了cygwin1.dllsystem.img unyaffs.exe以外的文件)全部放到里面system文件夹里面。
第三部:制作ROM并签名
新建一个文件夹,把上面的system文件夹移到里面,把前面下载的META-INF文件也解压到这个文件夹内,把从官方原版ROM中解压出来的boot.img也放到这个文件夹内,如图:
接着你就可以开始大展身手,根据自己需要删除system/app文件夹内用不到的程序了,要注意如果程序有.odex文件的还要把它也一起删掉。
另外,
如果你想用搜索键替换电源键,你可以把前面下载的legend-keypad文件解压替换掉system\usr\keylayout中的文件
如果你想ROM能屏蔽掉广告,可以用前面下载的hosts文件解压替换掉system\etc中的文件
如果你想取消掉开机铃声,你可以删掉D:\Mobile\update\system\media\bootscreen中的boot.mp3

如果你想获取ROOT权限,可以将前面下载的ROOT文件解压,把su文件放到system\xbin文件夹内,把Superuser.apk放到system\app文件夹内

精简完毕后,全选META-INFsystem文件夹和boot.img文件,右键,选择添加到压缩文件(A)...”,压缩文件名为updata.zip,格式选择zip格式,具体见下图:
生成update.zip文件后,就可以签名了
将前面下载的签名工具Auto-sign解压到D盘,然后把刚才生成的update.zip复制到Auto-sign文件夹内,双击Sign.bat,就开始签名了,此时会在Auto-sign文件夹内生成一个update_signed.zip的文件,它就是我们制作成功的ROM了。
完毕!!!
本人备查备忘录
并非Android系统的编译教程,可做为有兴趣学习Android系统的参考,亦方便本人备查备忘。如对Android系统编译有兴趣可以看一下,没有耐心的,可以飘过


Linux
,得益于它的Open & Free(不要单纯的理解成开门与免费哈:),开放与自由的精神让Linux不断的发展壮大,也是它的魅力与核心精神所在
Linux 内核】
  如果要了解Android,需要先了解一下Linux。我们常说的 Linux 严格意义上讲,不是一个完整的操作系统,它只是一个操作系统的核心。基于Linux内核,目前已派生出数百个发行版的操作系统。
Linux 发行版本】
  目前基于Linux 内核的发行版本(操作系统)知名和不知名的约有数百个,点击这里是一个Linux发行版树型结构的时间线,可以看到详细的Linux发行版的历程。其中主要有 SlackwareRedhatDebian等几大分支。这些发行版又分别派生出子系、孙系的发行版。举例来说,目前如日中天的 Ubuntu 源系Debian的派生的版本,后来不断发展壮大,在其旗下又派生出Kubuntu/Lubuntu/Mythbuntu/Edubuntu等等,其支系目前最为繁盛,并有不断壮大的趋势。
【关于Android
  Android系统也是基于Linux核心的一个分支,属于一个独立的支系,仍然遵守并继续 Linux GPL 源码开放的守则。基于Android系统的应用及底层驱动则同时拥有 Apache License,Version2.0的版权规则,底层的驱动部分可以闭源。 因此,我们在编译和移植Android系统的时候,需要提取原厂ROM中的相关设备驱动的库文件。
Android ROM
  Android另外吸引人之处在于它的灵活性、易用性、可定制性及可玩性。目前国内外的 Androd 论坛大多异常火爆。定制ROM、自制ROM教程、帖子铺天盖地,随处可见。一般没有Linux应用基础的借助定制工具都可以制作出漂亮且个性化的ROM。在原有ROM基础上反编译、修改定制ROM的方法简单、实用、方便,基本可以满足修改美化化的需要。本文的内容主要不在定制、修改ROM。如果有需要,可以查询安智、隔壁的等论坛。
dsixda's Android Kitchen
  是国外的一位超级大神制作的ROM修改及定制工具,非常方便、实用,使定制修改ROM更加轻松容易。安智网的大星星等为国人做了汉化版,在此也致以崇高的敬意。
【编译Android ROM
  再一次感谢Open & FreeAndroid系统的源码是完全开放的,你可以很方便的随时获取Android源码,而且是免费的。基于Android源码,你可以将其移植到手机、GPS导航定位设备、平板电脑、上网本等移动设备上。通过编译Android源码,可以更深入的了解操作系统的核心及操作系统的原理,对于从事移动设备开发的工程师更具有挑战性。如果你精通Android系统开发,也可以让你找到收入可观的一份职位。当然,你也可以将自己定制的系统商业化获取高额的利润,这于GPL守则是合法的。
【编译环境】
  因Android原生于Linux,因此,其编译环境也是基于Linux环境的。网上基于Android源码的编译教程指引多是基于 Ubuntu的,本小白没有亲测(前文说了,本小白对Ubuntu不感冒)。本人分别在CentOS 5.5 独立主机、WinXP + VMWare + CentOS 6.0 虚拟机及Redhat Fedora 14 独立主机环境下分别搭建环境且均编译 system + kernel 成功通过。编译过程和修改编译配置并不复杂,对于大多数没有Linux基础的tx来说,搭建消编译可能是一个非常蛋疼的过程,一般都是由于无法搭建编译环境而最终放弃尝试。网上关于搭建编译环境的教程指引非常多,本文不再赘述(要补充一点的是包括CyanogenMod wiki在内的搭建环境的教程一般都不够完整,若没有Linux基础,很难成功)。因此如有致于做一个 Android 开发工程师,要先补补 Linux 这门课。
CM 源码仓库】
  是国外的一个Android开发小组基于官方Android源码移植的有数十种机型支持的一个源码仓库,亦可免费获取。目前国内外很多Android大神都是基于这个源码仓库编译Android源码的。每个机型一般有多位工程师维护的几个分支(branch)。
Android system + kernel
  基于CM 源码仓库的Android系统的编译分为两个部分,分别是system  kernel 。源码仓库中所有机型源码的系统(system)源码部分,已经植入了CM小组各机型维护工程师编译好的 kernel,一般无需再编译 kernel(内核)。但原有的kernel不一定能够满足所有机型用户的需要,在CM没有及时更新kernel的情况,你自己可以根据CM kernel 源码重新编译 kernel 并将其植入到system源码中,并编译成最终的ROM。内核源码的配置参数、选项十分复杂,有数千个选项之多,要求对系统核心、硬件驱动有较深入的了解了熟悉,若没有深入研究和了解,请勿随意变更kernel编译参数。一般每个机型都有默认的参数配置,如需要更高级的参数配置则可以使用 make menuconfig 获取。(详细指引略)
【系统美化及修改】
  与一般的定制ROM稍不同,各机型的编译配置(.mk 文件)、界面参数(.xml文件)cjava程序等都是源码的。需要对系统结构有一定的了解,如果有定制ROM基础,应该会比较方便。 一旦完成界面的个性化定制和修改后,后续的升级更新就会变得轻松和简单(本人没有做过ROM定制和美化,还需要向各位ROM大师学习补课)。(本小白也不会承诺今后会发布我自己编译的ROM,因为我做的界面美化等方面的工作不会比其他ROM大师更好,本人编译系统暂时只为测试和自己学习)
Android系统移植】
  CM源码库中目前已经包含数十种手机及平板电脑的机型支持,而且这个数字还在不断增加中,其中包括国内的部分机型。 
  待深入研究和了解Android源码系统后,就可以考虑移植和定制专用系统的工作

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多