如何修改制作卡刷包 安卓卡刷包制作教程

如何修改制作卡刷包 安卓卡刷包制作教程,第1张

在此先要明确声明一下:
依照此做法出现您的手机出现任何问题,概不负责的喔!!
英文好的朋友,可以直接看英文官方的参考网站即可:
只用android源代码做一些简单实验的朋友可以参考下面这几个网站:
说起android刷机包,听起来非常神秘,实际上它仅仅是一个经过数字签名的zip压缩包而已。如果要自己制作刷机包,则必须了解刷机包的基本工作原理,偶首先从android系统的启动说起:
android系统启动的时候,首先会进行一些诸如硬件自检之类的 *** 作,这些 *** 作完成以后(至少它应该知道当前的机器有没有电),会检查一下当前手机按键的状态(接下来就是所谓刷机模式切换了,不同的android手机有不同的按键组合用来进入刷机模式),如果此时按键状态处于刷机组合,那么系统会调用ROM里面的一个叫做recovery的程序(这时就是进入了所谓的刷机程序了,它只是一个工具性质程序,用于检查刷机包的完整性和数字签名的合法性。对于目前大多数root过的机器而言,数字签名的合法性都不会成问题,然后由recovery程序将刷机包进行解压,然后把刷机包里面的文件写入到ROM中去,以此完成刷机过程);如果此时按键没有标明是刷机模式,那么系统会创建内存盘,开始从ROM里面载入相应的文件系统,并把相关的文件拷贝到内存盘中,进而引导linux启动,然后是启动虚拟机dalvik,然后就是创建工作进程载入和运行framework,然后就会看到待机的画面。当然在这个过程中还发生了许多事情,启动了许多服务,为了简化起见,对于启动过程偶只讲解到此,感兴趣的朋友可以自己结合着linux的启动过程加以对比来学习。
现在来总结一下,实际上刷机包就是一个ROM文件的压缩包,进入刷机模式后,recovery程序会把刷机包里面的文件写入ROM存储区替换ROM存储区的原有文件;当下次启动手机的时候,会从ROM中载入刚刚替换过的文件,并利用这些文件来启动和运行系统。这就是刷机包的全部功能和作用,看不懂的朋友可以反复看几次,刷机的本质就是文件的覆盖和替换 *** 作,偶相信各位一定能看懂!
OK,现在大家已经知道ROM文件的zip压缩包就是所谓的刷机包。制作刷机包的过程就是准备这些文件,然后重新把这些文件压缩成一个zip包的过程,在制作的最后,使用签名工具签个名,就可以测试和发布刷机包了。虽然说起来就是一句话的事情,但是实际上准备这些文件的过程是非常痛苦和漫长的。
那么updatezip压缩包里面的都包含哪些文件?这些文件又都是如何做出来的呢?hoho,现在开始渐渐接触到问题的本质了,解压缩这个updatezip压缩包以后我们可以看到两个目录和一个文件:
bootimg <---文件,这是编译内核源代码生成的内核映像,然后与android源码编译出来的ramdiskimg一起通过mkbootimg工具创建出来的,图省事的朋友也可以从网上其他的刷机包里面拷贝一个能用的出来即可,基本上都差不多。
META-INF <---目录,这个目录是手工创建的,主要用来存放一个升级脚本update-script(这个脚本的内容与system目录中包含的文件有很大关联)以及保存若干刷机包内的apk文件的签名。
system <---目录,这个目录就是编译android的平台源代码生成的,
其实最好的学习方式就是把现在互联网上的那些updatezip包给解包,然后自己一个一个文件地看和分析,然后修改,尝试做自己的刷机包。
对于这个bootimg,基本思路是编译android kernel代码,生成内核image然后利用mkbootimg感兴趣的朋友可以参考下面这两个wiki网站:
下面的做法偶都是在linux下面完成的(slackware 131):
(1)下载和编译android的源代码,具体过程不再赘述
如果各位还不知道repo sync之类的命令的话,可以参考网上的关于下载android源代码以及编译的文章,据偶所知这些文章非常丰富。编译之前一定要注意平台的选择,不同平台的驱动程序是不一样的!这些参数可以通过:
$ cd android-src <---进入android的源代码目录
$ build/envsetupsh <---设置环境变量,运行完毕后,你可以输入一下help命令,看看google的团队提供了多少有用的便利命令,这对于我们以后修改代码重新编译非常有帮助。
$ lunch generic-eng <---开始配置android的源代码的编译选项
运行上述命令后会看到如下输出:
wayne@wayne:~/android-src$ lunch generic-eng
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=21-update1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=ECLAIR
============================================
$ make -j2 <---只有单核的CPU的朋友可以尝试此参数,双核的朋友可以试试-j3,否则就老老实实运行make即可。
然后就是一个漫长的等待,这个时间大概有1-2小时左右(偶的机器比较慢),完全编译完毕以后硬盘的占用大概需要8个G左右。
(2)编译完成以后,进入wayne@wayne:~/android-src/out/target/product/generic目录,应该会看到如下的文件:
android-infotxt
data
obj
ramdiskimg
sdk
system
userdataimg
clean_stepsmk
installed-filestxt
previous_build_configmk
root
symbols
systemimg
这里的systemimg是不是很眼熟?!对拉,这个就是刷机包里面好像也有一个叫做什么system的目录,那么这个systemimg里面都有什么呢?这里面的东西其实就是当前目录下的一个叫做system的目录里面的内容了,只是保存成了yaffs文件系统的格式。我们可以通过unyaffs工具来把systemimg给解开来看看,就明白偶说话了。
unyaffs的代码下载地址为:
在linux下编译方法非常地简单,只需要下载源代码,然后运行:$ gcc -c unyaffsc
$ gcc -o unyaffs unyaffso
即可生成这个unyaffs的解包工具,利用这个工具就可以把自己生成的systemimg进行解包,然后修改里面的内容了。
unyaffs使用方法非常简单:
$ unyaffs systemimg [回车]
即可将systemimg解包成一个叫做system的目录,里面包含了整个android的文件系统
(3)刚刚开始,不适合一切从头来,还是老实一些,先从修改别的大牛们做得刷机包开始吧
首先拷贝一个从网上下载下来的刷机包,然后找一个目录解压缩(当然,这是最保险的做法,自己做这些目录也没有任何问题,只是比较费时间而已)
$ unzip xxxxxxzip <--- 这个xxxxxzip就是从网上下载的某刷机包(一定要跟你的代码版本基本一致喔,偶在这里用的是21的刷机包)
(4)替换原有的system目录
解压缩刷机包以后,会看到在开篇的时候提到的两个目录,一个文件:
bootimg
META-INF
system
好了,可以把system目录拷贝到别的路径下备份一给,防止这些修改发生别的问题。然后把wayne@wayne:~/android-src/out/target/product/generic这个目录下面的system拷贝到当前的工作目录下。注意,这个system目录里面有很多“符号链接”指向了toolbox。这些链接其实没啥用,可以通过后面的update-script自动进行创建的,因此,需要用一个脚本把这些链接都删掉。
可以参考:
这个网页附件给出来的DeleteExtrastxt改写成一个DeleteExtrassh脚本来清除这些符号链接。
(5)修改update-script脚本
修改META-INF/com/google/android目录下的那个叫做update-script的脚本,只要修改一下即可,主要是删除一些不存在的文件以及增加一些文件的权限之类的定义(语法十分清晰,一目了然)。把需要“预装”到刷机包里面的apk安装程序都准备好,将这些apk拷贝到system/app目录下即可。那个bootimg能不改就不改,因为这东西涉及到驱动和内核的问题,出了问题刷机包就启动不了了。

如何制作ROM
有点玩机兴趣的android爱好者,应该对custom ROM这种东西都不陌生。我介绍root权限获取的时候,就直接用的MoDaCo Custom ROM作为例子。适用于Hero比较好的ROM还有不少,比如Drizzy’s Custom Hero ROM等等,都可以在XDA上找到。肯定有不少朋友感到很好奇,这些ROM都是怎么做的。考虑到中文社区相关资料比较少,在这里抛砖引玉,大概原理介绍一下。

对于第三方ROM来讲,通常都包括两部分,一个recovery image,一个updatezip。而大多数的第三方ROM的特色,就是加入了很多东西,比如superuser程序来获得root权限,busybox来扩充命令行下的功能,各种各样的配置文件或者小工具,比如默认打开中文locale,等等。这些看似神奇的改动,都是在 updatezip里面搞的,custom recovery image的主要作用就是引导用户的 *** 作,比如让你先备份,再应用updatezip,再重启之类的 *** 作。由于custom recovery image和updatezip的耦合性很小,所以不少custom ROM直接都用同一个custom recovery image,这个好像是出自MoDaCo作者之手。再然后,我之前的文章已经有对 recovery image的简单讲解,所以这里,我主要介绍一下updatezip的制作。
如果我们直接把MoDaCo ROM中的updatezip解包,我们会发现有一个bootimg,一个data文件夹,一个system文件夹,一个META-INF文件夹。这个data文件夹放的是initrc,而本来在系统中,initrc就是在data目录下的。当然,两者的作用不一样,这里的initrc主要作用是开机执行你希望执行的命令,比如MoDaCo的initrc就是install busybox。
而值得详细说明的,就是system文件夹。MoDaCo ROM版本的system下有一系列作者希望放到系统中的工具,对于apk文件,就放到app下,工具就放到bin和xbin下,依此类推。换句话说,system或者data这个目录层次结构是取决于你自己的,你希望放的东西属于什么,应该运行在online系统的什么目录下,updatezip里面就应该是有相应的目录路径,然后东西就放在里面。
具体点,我们现在要依样画葫芦,搞一个新的updatezip,那么第一步就是首先建立一个文件夹
mkdir new-update
好,假设我新updatezip的作用就是预装我自己的一个程序,myapk,那么,我建立对应的子目录
mkdir -p new-update/system/app
cp myapk
这样,system目录就完成了。但是这时,updatezip的目录层次还没完,我们看MoDaCo ROM中的updatezip中有文件夹叫META-INF,这个文件夹很关键,除了根目录下的三个文件外,里面层层目录,就包括了一个文件,叫 update-script,内容如下
show_progress 01 0
copy_dir PACKAGE:system SYSTEM:
set_perm_recursive 0 0 0755 0644 SYSTEM:xbin
set_perm_recursive 0 0 0755 0644 SYSTEM:sd
set_perm 0 0 04755 SYSTEM:bin/su
set_perm 0 0 04755 SYSTEM:bin/a2sd
set_perm 0 0 04755 SYSTEM:xbin/busybox
copy_dir PACKAGE:data DATA
show_progress 02 0
format BOOT:
write_raw_image PACKAGE:bootimg BOOT:
show_progress 02 100
这里面的内容,大部分是针对你要做的修改设置的。比如
copy_dir PACKAGE:system SYSTEM:
就是把system中新增的工具拷贝到手机上,然后
set_perm_recursive 0 0 0755 0644 SYSTEM:xbin
set_perm_recursive 0 0 0755 0644 SYSTEM:sd
set_perm 0 0 04755 SYSTEM:bin/su
set_perm 0 0 04755 SYSTEM:bin/a2sd
set_perm 0 0 04755 SYSTEM:xbin/busybox
就是设置MoDaCo ROM中新增程序的权限,然后
copy_dir PACKAGE:data DATA:
把data下的内容(就是那个initrc)复制到手机上,然后
format BOOT:
write_raw_image PACKAGE:bootimg BOOT:
刷boot分区。
那我们这里没有这么多新增的东西,应该怎么写呢?
copy_dir PACKAGE:system SYSTEM:
set_perm_recursive 0 0 04755 SYSTEM:app/myapk
就可以了。你当然还可以做一些别的事情,比如加一个FORMAT DATA之类的^_^开个玩笑,千万别这个干,不然你的数据就全没了。
好,那么也就是说,我们要在自己的new-update目录下也建一个/META-INF/com/google/目录,然后把新的update-script扔进去。
完了么?差一点。其实如果你没有别的需求了,那么就完了,可以把下面这一小块跳过。下面这一小块,是关于bootimg的。在如何修改Android系统的Ramdisk以及boot镜像文章中,我们谈到,如果刷boot镜像有问题,就要用别的方法让系统boot我们自己的boot image了,这个别的方法,自然就是用updatezip了。MoDaCo ROM版本的updatezip也包括了一个bootimg,但是如果我们有出于各种需求自己修改的bootimg,自然就可以替换掉原来的了。当然注意,如果加了bootimg,那么update-script里面就不能漏掉
write_raw_image PACKAGE:bootimg BOOT:
这句。
好,到现在,我们的new-update目录下有
/system/app/myapk
/META-INF/com/google/update-script
/META-INF/MANIFESTMF
/META-INF/CERTSF
/META-INF/CERTRSA
bootimg
恩,那么就进入打包阶段。你可能会问,这有什么难的,直接zip一下不就得了。如果要是这么简单就好了,你打包后,必须把你的内容都sign一下,得到相应的cert,才能在fastboot模式中被承认并成功刷机。
在sign你的文件之前,先做这么几件事
打包。进入update文件夹,zip updatezip xxx xxxx xxxx xxxx xxxx。什么意思呢,就是只把你需要的文件打包,不要用/作为参数。而且相对路径最好是在update下面,不要在外面用zip updatezip /update/这种命令打包
去sun网站下载最新的
下载这个文件testsign一定要用JRE16016或者更高,我知道这个有点恶心,但是提供下载的testsighjar就是按照这个版本或者更高编译的,你用老版本就运行不了。
好,下下来以后,执行这个命令
~/jre160_16/bin/java -classpath testsign_path/testsignjar testsign updatezip update-signedzip
稍微讲解一下,java程序是最新jre下的,testsign_path是你放testsignjar的地方,建议放到sdk的tool目录下。update是待sign文件,update-signed是指定的生成文件名。
sign执行完后,用unzip -l看,会发现
/META-INF/MANIFESTMF
/META-INF/CERTSF
/META-INF/CERTRSA

可以先刷入第三方recovery,推荐使用第三方移动叔叔recovery自带中文, *** 作方便。

刷入recovery后,按音量+-和电源键进入recovery,选择备份,recovery会将system目录下所有数据打包存放在SD卡根目录,文件较多需耐心等待,中途不可强行退出,以免备份的ROM出现问题。

后续想刷回来的时候先清下数据,再选择打包好的ROM刷机即可恢复。

1工具:ROM助手安卓系统ROM包
2方法/步骤
3刷机包现在论坛多得是,但符合用户自己的包少,而且都内置非常严重,甚至有的包内置过量,导致包包比正常的包大出好多,更有可恶打包党,对别人的ROM包进行二次内置打包,把刷机包弄得非常大,完全不符合正常包的大小,有些手机的内存较低,过多的内置,会导致刷机失败变砖,所以刷机前清除下内置app还是很有必要,分享个方法。想学习的小白参考一下,大神勿嘲。我们自己手动优化自己喜欢的刷机包,去除内置、添加ROOT等。新版ROM助手已发布,更直观界面,更稳定优化。
4首先准备工具:ROM助手(不知道的可以百度)
5如何修改安卓手机系统ROM系统包
6一键式安装,这个大家都会。
7打开界面大家很容易看懂。好多功能一眼尽解,像我们小白常用到的精简系统、root权限,内置移除和添加等。
8安装好后打开我们的软件,选择系统精简,ROM助手会让你选择ROM包。找到自己的ROM包即可,ROM助手会自动识别包内的内置,并给出提示什么是系统软件什么是ROM预置推广软件。
9如何修改安卓手机系统ROM系统包
10勾选需要卸载的软件就可以了,另外内置预装可以让我们把喜欢的应用设为内置,这样就不担心卸载了。“内置预装”功能,内置你的APK到ROM包,同时也可以添加本地apk文件哦。可以支持System区和非System区的apk软件预装。把自己喜欢的软件设为系统预装的,可以省去不小心卸载和无法启动的问题。避免刷机小白刷机后手动修改system。
11如何修改安卓手机系统ROM系统包
“内置Lib”有些联盟推广的app是带lib文件才给算量的,没有特别要求的可直接跳过!“性能优化”根据自己的需求选择是否优化。
12同样,作为一个玩机控,开机动画、字体定义、图标等,也是我们经常更改的一个东西,用ROM修改,只管方便稳定
13如何修改安卓手机系统ROM系统包
14修改完后选择右下角的开始封装生成新的ROM包,这样就可以供刷机使用了。不仅适合小白,更适合ROM制作者使用
15注意事项
下载正版的。
不要胡乱修改ROM


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12923147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存