怎么编译卡刷包刷机脚本
① 如何修改制作卡刷包 安卓卡刷包制作教程
在此先要明确声明一下:
依照此做法出现您的手机出现任何问题,概不负责的喔!!
英文好的朋友,可以直接看英文官方的参考网站即可:
只用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包的过程,在制作的最后,使用签名工具签个名,就可以测试和发布刷机包了。虽然说起来就是一句话的事情,但是实际上准备这些文件的过程是非常痛苦和漫长的。
那么update.zip压缩包里面的都包含哪些文件?这些文件又都是如何做出来的呢?hoho,现在开始渐渐接触到问题的本质了,解压缩这个update.zip压缩包以后我们可以看到两个目录和一个文件:
boot.img <---文件,这是编译内核源代码生成的内核映像,然后与android源码编译出来的ramdisk.img一起通过mkbootimg工具创建出来的,图省事的朋友也可以从网上其他的刷机包里面拷贝一个能用的出来即可,基本上都差不多。
META-INF <---目录,这个目录是手工创建的,主要用来存放一个升级脚本update-script(这个脚本的内容与system目录中包含的文件有很大关联)以及保存若干刷机包内的apk文件的签名。
system <---目录,这个目录就是编译android的平台源代码生成的,
其实最好的学习方式就是把现在互联网上的那些update.zip包给解包,然后自己一个一个文件地看和分析,然后修改,尝试做自己的刷机包。
对于这个boot.img,基本思路是编译android kernel代码,生成内核image然后利用mkbootimg感兴趣的朋友可以参考下面这两个wiki网站:
下面的做法偶都是在linux下面完成的(slackware 13.1):
(1)下载和编译android的源代码,具体过程不再赘述
如果各位还不知道repo sync之类的命令的话,可以参考网上的关于下载android源代码以及编译的文章,据偶所知这些文章非常丰富。编译之前一定要注意平台的选择,不同平台的驱动程序是不一样的!这些参数可以通过:
$ cd android-src <---进入android的源代码目录
$ . build/envsetup.sh <---设置环境变量,运行完毕后,你可以输入一下help命令,看看google的团队提供了多少有用的便利命令,这对于我们以后修改代码重新编译非常有帮助。
$ lunch generic-eng <---开始配置android的源代码的编译选项
运行上述命令后会看到如下输出:
wayne@wayne:~/android-src$ lunch generic-eng
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.1-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/proct/generic目录,应该会看到如下的文件:
android-info.txt
data
obj
ramdisk.img
sdk
system
userdata.img
clean_steps.mk
installed-files.txt
previous_build_config.mk
root
symbols
system.img
这里的system.img是不是很眼熟?!对拉,这个就是刷机包里面好像也有一个叫做什么system的目录,那么这个system.img里面都有什么呢?这里面的东西其实就是当前目录下的一个叫做system的目录里面的内容了,只是保存成了yaffs文件系统的格式。我们可以通过unyaffs工具来把system.img给解开来看看,就明白偶说话了。
unyaffs的代码下载地址为:
在linux下编译方法非常地简单,只需要下载源代码,然后运行:$ gcc -c unyaffs.c
$ gcc -o unyaffs unyaffs.o
即可生成这个unyaffs的解包工具,利用这个工具就可以把自己生成的system.img进行解包,然后修改里面的内容了。
unyaffs使用方法非常简单:
$ unyaffs system.img [回车]
即可将system.img解包成一个叫做system的目录,里面包含了整个android的文件系统
(3)刚刚开始,不适合一切从头来,还是老实一些,先从修改别的大牛们做得刷机包开始吧
首先拷贝一个从网上下载下来的刷机包,然后找一个目录解压缩(当然,这是最保险的做法,自己做这些目录也没有任何问题,只是比较费时间而已)
$ unzip xxxxxx.zip <--- 这个xxxxx.zip就是从网上下载的某刷机包(一定要跟你的代码版本基本一致喔,偶在这里用的是2.1的刷机包)
(4)替换原有的system目录
解压缩刷机包以后,会看到在开篇的时候提到的两个目录,一个文件:
boot.img
META-INF
system
好了,可以把system目录拷贝到别的路径下备份一给,防止这些修改发生别的问题。然后把wayne@wayne:~/android-src/out/target/proct/generic这个目录下面的system拷贝到当前的工作目录下。注意,这个system目录里面有很多“符号链接”指向了toolbox。这些链接其实没啥用,可以通过后面的update-script自动进行创建的,因此,需要用一个脚本把这些链接都删掉。
可以参考:
这个网页附件给出来的DeleteExtras.txt改写成一个DeleteExtras.sh脚本来清除这些符号链接。
(5)修改update-script脚本
修改META-INF/com/google/android目录下的那个叫做update-script的脚本,只要修改一下即可,主要是删除一些不存在的文件以及增加一些文件的权限之类的定义(语法十分清晰,一目了然)。把需要“预装”到刷机包里面的apk安装程序都准备好,将这些apk拷贝到system/app目录下即可。那个boot.img能不改就不改,因为这东西涉及到驱动和内核的问题,出了问题刷机包就启动不了了。
② ROM制作工具如何制作手机刷机包
具体步骤如下:
③ 如何提取手机的rom做成卡刷包
你试试以下方法:操作方法:
1、 下载bootimg.exe 放到D盘。
2、 把要提取的ROM包里的boot.img提取出来 放到bootimg文件夹目录。
3、 运行cmd系统命令,进入D: bootimg目录(D盘的话 先d: 然后再cd bootimg),接着输入bootimg --unpack-bootimg。 解开bootimg文件,得到kernel和ramdisk.gz两个文件,ramdisk.gz文件可以删除。
4、把kernel文件改名为zImage。
5、找一个老版本的内核文件包,然后用zImage、bcm4329.ko分别替换老版本内核文件包中的同名文件, 路径是: kernel/zImage 和system/lib/moles。
6、老内核随便改什么名字。刷机包里面的META-INF里面是签名和刷机用的脚本什么的。com/google/android/ updater-script文件是刷机时显示的文字,用notepad打开,ui_print(" ")括号里面可以改成随意文字,然后关闭保存,再就是可以刷进去了。希望帮助你
④ 请教,刷机包里面的脚本updater-script文件怎么编辑
厨房转换出来的语法是错误的,自己可以对照着修改一下,不过相关的教程比较少,我也还在研究,如果你是修改别人做好的卡刷包,那比较简单,自己添加几句和自己添加的文件对应的就可以了,如果是从官方线刷包生成的,那要一个个的去看增加什么文...
⑤ 卡刷法刷机的通用步骤。
卡刷教程
准备工作:
1.确认你的手机可以进入cwm刷机模式。(不能的话去网络搜索XX机 cwmRecovery教程)
2.将你的固件包复制入内存卡(注:是内置的内存卡)
(刷机前请先备份,确保手机电量充足。)
===================================================================
开始刷机:
1、关机。进入cwm刷机模式(方法:各不同:电源键+音量加+home(三星))
如图:(颜色不一定)
刷完后重启~ok完成
===================================================================
最后,附上部分cwmRecovery翻译
一:CWMRecovery主界面
*rebootsystemnow:重启手机(刷机完毕选择此项就能重新启动系统)
*applySDcard:update.zip:安装存储卡中的update.zip升级包(你可以把刷机包命名为update.zip然后用这个选项直接升级)
*wipedata/factoryreset:清除用户数据并恢复出厂设置(刷机前必须执行的选项不过类似O大的rom自动wipe那就不用了)
*wipecachepartition:清除系统缓存(刷机前执行)(系统出问题也可尝试此选项,一般能够解决)
*installzipfromSDcard:从SDcard上安装zip升级包(可以执行任意名称的zip升级包,不限制升级包名称)
*backupandrestore:备份和还原系统(作用和原理如同电脑上的Ghost一键备份和还原)
*mountsandstorage:挂载和存储选项(详细功能见下面的解释)
*advanced:高级设置
二:backupandrestore功能详解
*Backup:备份当前系统
*Restore:还原上一个系统
*AdvancedRestore:高级还原选项(用户可以自选之前备份的系统,然后进行恢复)
三:mountsandstorage功能详解
*mount/system:挂载system文件夹(基本用不到)
*mount/data:挂载data文件夹(基本用不到)
*unmount/cache:取消cache文件夹挂载(基本用不到)
*unmount/sdcard:取消内存卡挂载(基本用不到)
*mount/sd-ext:挂载内存卡Ext分区(基本用不到)
*formatboot:格式化boot(刷机前最好执行一下)(rom中没有含boot.img的,不能格式化)
*formatsystem:格式化system(刷机前最好执行一下)
*formatdata:格式化data(刷机前最好执行一下)(要想保住原来的软件,这个就不要格式化,不过可能会有一些软件在格式化后无法使用)
*formatcache:格式化cache(刷机前最好执行一下)
*formatsdcard:格式化内储卡(执行此项你会后悔的)
*formatsd-ext:格式化内存卡Ext分区(执行此项你会后悔的)
*mountUSBstorage:开启Recovery模式下的USB大容量存储功能(也就是说可以在Recovery下对内存卡进行读写操作)
四:Advance功能详解
*RebootRecovery:重启Recovery(重启手机并再次进入Recovery)
*WipeDalvikCache:清空虚拟机缓存(可以解决一些程序FC的问题)
*WipeBatteryStats:清空电池调试记录数据(刷机前做下这个,会比较好,感觉自己电量有问题的机油也可以试试)
*ReportError:错误报告(配合固件管家用的,不是开发者请无视)
*KeyTest:按键测试(基本没撒用的功能!)
*PartitionSDCard:对内存卡分区
*FixPermissions:修复Root权限(如果你的手机Root权限出问题了,可以用这个功能)
⑥ 谁会用apktool制作卡刷包,进来教下
卡刷包制作方法很简单: 首先我们需要准备这些东西: ①一个空的卡刷包,我们可以往里面放东西 ②一个刷机脚本,这个脚本告诉recovery应该怎么用这个包 ③卡刷包签名工具。不签名的刷机包刷入后是不稳定的。 这些东西都在教程里给你准备好了。 呵呵,大冷天手有些抖,见谅啊。 首先,我们要配置java环境。这一步可能有些繁琐,但是这是以后更高级制作的基础。 ①打开教程里附带的JDK1.7下载地址并下载JDK1.7 ②下载完毕后,打开教程里附带的配置java环境教程,按照教程配置java环境 p.s.本人已经配置完成了,这里就不再配置一遍了,请大家按照教程做。 第二,美化卡刷包的制作。这里仅仅教给大家的是一个最简单的美化包的制作,更难的请自行学习:) ①解压缩那个空包,我们可以看到有两个文件夹:META-INF和system。 meta-inf是签名信息和刷机脚本的地址。什么是签名信息呢?如果你对卡刷包进行签名,那么你签名的信息都会存放在这里。 system就对应手机上RE管理器直接打开拖到最下面的system,也就是美化主要修改的位置。 ②打开system文件夹,可以看到两个文件夹:app和framework。相信做过美化的机油都很熟悉,app放SystemUI.apk,framework放framework-res.apk。 ③把手机上的SystemUI.apk和framework-res.apk提取出来,进行美化。具体的方法请网络一下。这里我准备了两个已经美化完成的文件,一并打包在教程里。 ④把SystemUI.apk放入app文件夹,把framework-res.apk放入framework文件夹。到这里就完成了美化部分的制作。 p.s.刚刚把SystemUI.apk放入app的时候我用了一个粘贴的快捷键(Ctrl+v) 第三,刷机脚本修改与刷机包签名。 注意:完成刷机包签名必须配置好java环境!! ①下载Notepad++并安装,教程里有下载地址。我已经下载安装完毕了,这里就不再下载安装 ②用Notepad++打开updater-script。 ③我们主要修改第一行的“ui_print("This is an update KSB.");” 我来解释一下,这行代码分三个部分。 1-命令。命令是ui_print。这个的意思是让recovery在屏幕上打出一行字。 2-命令参数。参数是"This is an update KSB."(注:包括那两个引号!)这是告诉上面那个参数应该打什么字出来。我们可以随意更改引号内的内容,但不能有中文。比如,我改成我的马甲,y=ax2+bx+c,再来个制作(made by) 3-结束符。就是分号(;)。这告诉recovery这一行执行完毕了。 ④修改完成,我们保存这个文件,关闭Notepad++。 ⑤把这个文件复制到META-INF\com\google\android文件夹,替换里面的文件。 ⑥将META-INF和system用winrar打包。压缩格式一定要选zip!!!压缩方式一定要选标准!!! ⑦解压并安装刷机包签名软件。这里为了方便我已经装好了。 ⑧右击打包好的文件签名。你看他自己在签名,一会儿就好了。 至此制作完成!
⑦ 怎样用卡刷包刷机
【刷机教程】
介绍两种方法(卡刷包一般数量多,可选择性也较多,并且比线刷包更容易操作)
(1)一键刷机。
使用刷机软件一键刷机,例如奇兔刷机,很简单,双清备份不需要自己动手。
(2)卡刷
按常规卡刷流程刷入即可,注意刷第三方rec,刷入包之前要双清,电池电量保持在50%以上,可用内存!
卡刷步骤如下:
第一步:导入第三方Recovery(想刷第三方rom,第三方 Recovery不可或缺;如果前面已经刷过三方recovery,就不需要再刷了)。
第二步:刷第三方ROM包(卡刷)
1. 下载本ROM包,无需解压,复制到SD卡根目录或者内置卡;
2. 进入Recovery模式
2.1 关机状态下,按住 音量上+开机键开机,并按住两键不放,直到进入Recovery;
2.2 开机状态下,选择“重新启动”后,按住音量键上不放,即可进入 recovery模式;
3. wipe data/factory reset(清空所有数据) (音量键控制上下,电源键确定,以下同)
4. Yes
5. wipe cache partition(清空缓存数据)
6. Yes
7. install zip from sdcard(从SD卡选择刷机包)
8. choose zip from sdcard(从SD卡选择ZIP文件)
9. 找到安装包,开刷
10 最后选择重启手机,恭喜刷机成功! (刷机完成第一次开机时间较长,请耐心等待)
⑧ 怎么在手机上制作刷机包
.
目前有好几种方法来安装软件或是库文件到你的Android手机上。你可以使用市场程序来查找并安装软件,也可以使用adb命令行工具来安装或是发送文件到你的Android文件系统中。这些方法对于操作单个文件来说都挺方便的,但是如果你需要一次性安装多个软件或是库文件时,那么最为方便的方法大概就是使用update.zip(也就是刷机包)文件了。Android系统使用恢复工具(recovery)来安装这个update.zip文件中的软件或库文件到Android文件系统中。而一个ROM或是主题开发者通常都是使用这个方式来发布他们的作品(刷机包)。
创建一个update.zip文件是很简单的事情,你所需要做的就是将文件放置到与Android文件系统中相对应的文件夹中,然后编写一个用来复制这些文件到手机对应位置的update-script文件。作为举例,本文会安装Calculator.apk到system/app文件夹,复制libsec-ril.so文件到system/lib文件夹:
新建一个空文件夹(本文例:C:\mumayi)
新建用来放置Calculator.apk的文件夹C:\mumayi\system\app以及用来放置libsec-ril.so的文件夹C:\mumayi\system\lib。
创建用来放置update-script文件的文件夹C:\mumayi\META-INF\com\google\android。
创建一个名为update-script的文件,其内容如下(高亮部分):
行1和行5:显示进度条
行3:复制刷机包中的system文件夹到Android的/system
注意:你应该在文件的最末尾多添加一个空行(也就是行6)
将C:\mumayi压缩中的所有内容压缩为zip包(千万记住:是压缩mumayi这个文件夹中的内容,不是mumayi文件夹本身)
为mumayi.zip签名
签名命令:java -jar signapk.jar certificate.pem key.pk8 mumayi.zip update.zip
将update.zip文件复制到SD卡中,然后手机进入recovery界面来刷入这个刷机包
进阶学习:(以下仅作参考,因实际情况不同,可能会有一定的出入。但是极度推荐学习本部分)
update-script 语法参考(在Android源码的recovery.c文件中定义):
_dir
语法:_dir <源目录> <目标目录> [<时间戳>]
描述:复制<源目录>中的内容到<目标目录>中。如果<源目录>中没有同名文件进行覆盖,那么<目标目录>中的原始内容会仍然存在不变。
示例:_dir PACKAGE:system SYSTEM:,这个命令会把刷机包中的system文件夹复制到手机的/system文件夹中
format
语法:format <根目录>
描述:格式化一个分区。
示例:format SYSTEM:,这个命令会格式化整个/system。注意:格式化时所进行的数据删除操作是不可逆转的。
delete
语法:delete <文件1> [... <文件N>]
描述:删除文件。
示例:delete SYSTEM:app/Calculator.apk,这个命令会删除手机system/app文件夹中的Calculator.apk文件。
delete_recursive
语法:delete_recursive <文件或目录1> [... <文件或目录N>]
描述:删除一个文件或递归删除某个文件夹(也就是包括该文件夹中的所有内容)
示例:delete_recursive DATA:dalvik-cache,这个命令会删除/data/dalvik-cache文件夹以及该文件夹中的所有内容。
run_program
语法:run_program <执行程序> [<参数> ...]
描述:运行一个刷机包中的外部程序。
示例:run_program PACKAGE:install_busybox.sh,这个命令会执行刷机包中的install_busybox.sh脚本(命令行)。
set_perm(本命令中涉及的数值,如有疑惑,请自行Google。uid=user id,gid=group id)
语法:set_perm <uid> <gid> <属性> <路径> [... <路径N>]
描述:设置某个文件或是指定的整个目录树的所有者和权限,就像是一个‘chmod’、‘chown’、以及‘chgrp’命令的集合体。
示例:set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh,这个命令会设置手机上system分区中etc/init.goldfish.sh文件的用户组为:shell;用户为:root;权限为:所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限。
set_perm_recursive(本命令中涉及的数值,如有疑惑,请自行Google。uid=user id,gid=group id)
语法:set_perm_recursive <uid> <gid> <文件夹属性> <文件属性> <路径> [... <路径N>]
描述:递归设置某个文件夹中所有内容的所有者和权限
示例:set_perm_recursive 0 0 0755 0644 SYSTEM:app,这个命令会递归设置手机上system/app文件夹以及其所有内容的用户组为:root;用户为:root;app文件夹的权限为:所有者可以进行读、写、执行操作,其他用户可以进行读取和执行操作;app文件夹下的所有文件的权限为:所有者可以进行读写操作,其他用户可以进行读取操作。
show_progress
语法:show_progress <小数> <持续时间>
描述:为下一个操作在屏幕上显示一个进度条,自动的根据<持续时间>指定的秒数来递增进度条状态(如果实际上进度条的推进是可以确定的,那就会更加迅速)。
示例:show_progress 0.1 0,这个命令是指,操作完成后,进度条前进0.1(10%)
symlink
语法:symlink <链接目标> <链接所在路径>
描述:创建一个符合链接(就像是 ‘ln-s’)。<链接所在路径>的格式类似于这样:根目录:路径, 但是<链接目标>则是指目标文件(而且位置可能是相对与链接所在路径的)
示例:symlink /system/bin/su SYSTEM:xbin/su,这个命令会为/system/bin/su在手机system分区的xbin文件夹下创建一个符号链接,名为su
⑨ 如何制作华为手机的刷机包
不建议手机刷机的。
1:刷机后,手机有可能无法达到最佳工作状态的,部分功能可能无法正常运行的。同时由于第三方固件未经充分测试可能会存在兼容性不好、系统易受病毒入侵等问题的。
2:刷机会带来无法预料的负面影响,一定要谨慎操作的。如果设备不能正常使用,并且无法恢复的话,是需要自行承担风险的。
⑩ 手机刷机包如何制作自己如何制作刷机包
一、准备ROM包
说明:
本工具支持ROM卡刷包和线刷包,支持常规,dat和img格式的刷机包
如果找不到ROM,也可以 选择线上ROM 直接下载ROM进行修改。