目录
瑞芯微android固件包介绍
一、解包、打包
二、固件升级
三、固件更改
1、固件精减、添加APK软件
2、提取Root权限
3、修改用户分区大小
A.更改HWDEF文件:
B.更改parameter文件
5、美化界面
A.界面美化
B.更改开机LOGO(Android启动时,出现闪烁的ANDROID字样的动漫图片)
6、桌面美化
瑞芯微android固件包介绍
瑞芯微的android固件包分两种:
一种为量产升级包(姑且这么尊称吧,PS:虽然称之为开发包较为合适,由于是使用开发工具进行升级。),使用量产升级工具RKAndroidTool.exe进行升级,量产升级包的文件包含:HWDEF、package-file、parameter、recover-script、Rock28Boot(L).bin、update-script和一个Image文件夹,里面又包含boot.img、kernel.img、misc.img、recovery.img、system.img五个镜像文件。
System.img包含所有用户资源linux嵌入式开发,大部份情况下更改system.img文件就能达到我们的目的。本文也是重点围绕system.img的更改。
另一种为用户升级包(也姑且这么尊称吧),正式上述量产升级包的文件用工具打包成一个文件――update.img,使用用户升级工具RKAndroidDM.exe进行升级。此文件包需通过解包成量产升级包后就能更改,更改后再打包成update.img进行升级。
一、解包、打包
对于update.img的解包、打包,需用到附件“打包解包工具”中的AFPTool.exe、mkupdate.bat、unpack.bat三个文件,其中unpack.bat为解包工具,
mkupdate.bat为打包工具。将用户升级包update.img和上述三个文件置于同一目录下,双击unpack.bat后,就可以将用户升级包解包成6个文件和一个Image文件夹,即和量产升级包完全相同的文件。此时可对相应的文件进行更改,更改完成后,再双击mkupdate.bat,会在Image文件夹下形成一个update.img,此文件就是打包后新生成的用户升级包文件。
对于system.img的解包、打包,需用到cramfsck、mkcramfs两个工具,此img文件和工具需在Linux(Ubuntu、RedHat等)系统下操作和使用,来进行解包、打包,cramfsck为解包工具,mkcramfs为打包工具。
先通过本地硬碟、U盘或则LiveCD启动到Linux下(Linux相关知识和安装不在本篇介绍范围内,请自行Google),之后将system.img、cramfsck、mkcramfs三个文件拷贝到系统的root文件夹下。(有些Linux系统对挂载的其它分区或c盘兼容性不好,所以拷贝到系统分区进行操作可降低出问题的可能性,本文涉及到Linux部份的操作以BackTrack3操作系统为示例。部份人反映用Ubuntu的精简等版本时用不了已编译好的cramfsck和mkcramfs,所以在教程包中又装入了一个deb的文件linux img文件修改工具,在启动到Linux后双击就可以像Windows一样安装它了。)
打开一个shell,在shell中输入:
cramfsck-xsystemsystem.img
对system.img文件进行解包,执行完成后,会形成一个名为system的文件夹,如右图所示:
也可以采用以下方式进行解包,原理就是mount这个镜像文件,之后再拷贝下来,命令如下:
mkdirsystem
sudomount-tcramfs-oloopsystem.imgsystem
tarcvzfsystem.tgzsystem
sudoumountsystem
rm-rsystem
tarxzvfsystem.tgz
用这个方式的用处是可以防止某种情况下出错的可能,第一种方式在个别情况下会导致个别文件受损,有见到过。
解包后的System文件夹内包含9个文件夹和1个文件,简单说明如下:
/system/app系统应用程序储存目录
/system/bin系统的本地程序,是binary二补码的程序,上面主要是Linux系统自带的组件。
/system/etc系统的配置文件,例如APN接入点设置等核心配置。/system/fonts字体文件夹。
/system/framework主要是一些核心的文件,从后缀名为jar可以看出是系统平台框架。
/system/lib储存的主要是系统底层库,如平台运行时库。
/system/media铃声音乐文件夹,不仅常规的铃声外还有一些系统提示风波音
/system/usr用户文件夹,包含共享、键盘布局、时间区域文件等。
/system/xbin储存系统管理工具,她们都是为系统管理员打算的,是一些系统管理和配置工具。
/system/build.prop属性文件,“关于MID”中所显示的软件版本、内核、机型等信息。
通过里面进行简单的介绍linux设置环境变量,相信你已有了一个大约的了解了。
此时可对system文件夹下的文件进行其它更改了,例如提取root权限、固件精减、APK替换更改等操作。
更改完成后linux img文件修改工具,须要对system文件夹进行打包,在shell中输入:
mkcramfssystemsystem02.img
(为了易于分辨以前的img文件,所以建议重新生成的文件不要与原文件名一样。)
此时会在root目录下生成一个新文件system02.img,这个文件就是我们更改好并重新打包OK的文件了。
此时,对于update.img和system.img两个文件的解包、打包操作就介绍完了。对于system.img和相应的文件是否须要打包成用户升级包update.img就看诸位是否有须要了。
二、固件升级
固件升级有两种工具可实现(当然还有第三种升级――即通过MID本机进行升级,不过须要原生软件和硬件支持才可以实现,目前发觉上市的机子还无此功能。所以略过),即量产升级、用户升级。
量产升级:将量产升级包的6个文件和一个文件夹,倒入../升级工具/量产升级工具_RKAndroidTool/rockdev文件夹下,之后打开量产工具
RKAndroidTool.exe,如右图所示:
(如有须要勾选Loader、Backup选项,对于软件跨版本较大或更改过分区等情况可勾选Loader,假如你的MID没有Recover功能,Backup选项无需勾选。正题太多了,现转移到题外话。)
死机状态下长按ESC键或菜单键(视型号而定,具体请自行查找相应信息)的同时联接PC,按提示安装驱动(首次使用),驱动路径指向../升级工具/rk28usb‐Driver,安装好驱动后按“执行”即可完成升级。
注意:假如是Vista、Windows7系统需用管理员权限运行本工具,否则会提示“测试设备失败”,导致升级失败。
用户升级:打开用户升级工具RKAndroidDM.exe,如右图所示:
点击“”按钮,选择笔记本中要升级的用户升级文件update.img,之后按时产升级的方式联接你的MID,提示找到设备后按“升级”按钮进行升级,完成后提示“升级成功”后拿掉USB线重新开机即可。
三、固件更改
后面讲解了这么多了,前戏应做的很足了,如今开始介绍诸位同鞋最为关心滴事、最最为想做滴事情,我再度手把手滴开始教诸位同鞋鸟,希望能和你们一起达到目的,冲向高潮。吼!!!
1、固件精减、添加APK软件
将system.img解包,解包后将../system/app目录下的不须要的APK文件进行删掉、修改、替换,以制做适宜自己的固件包,对于app目录内不清楚用途的APK文件,切勿随便删掉,以免造成何必要的问题。
注意:听说某些APK软件需自带的库文件支持能够正常运行,此时可用WinRAR等压缩软件将APK文件打开(将.apk后缀改成.zip,之后用压缩软件打开即可),从里面找到后缀为.so的文件,之后倒入../system/lib文件夹下即可。更改完成后,之后进行打包、升级、测试。
2、提取Root权限
将system.img解包,解包后将“取root权限文件”目录中的Superuser.apk、su两个文件分别放进下述目录:
Superuser.apk--->../system/app
su--->../system/bin
打开一个shell,之后用chmod6755更改文件的权限,如图示。
Chmod6755/system/app/Superuser.apk
Chmod6755/system/bin/su
上述命令需注意大小写,否则有可能会出错。更改完成后打包即可。
我开始在验证过程中,因使用了较老的rootexplorer版本根本不能步入资源管理器,于是更换了最新版V2.94,是能进资源管理器界面了,可是却不能更改或删掉system下的文件,可能有人会怀疑这是否真正的取得了root权限?我可以很负责的告诉你,早已取得了root权限,由于运行drocap2这类root权限的软件是灰常正常滴。
嗯,虽然这儿又涉及到一个专业知识了,请坐好捏,哎,前面这位同鞋别看他人了,说的就是你。现今仔细听我讲解:
瑞芯微android系统固件的system分区采用的是cramfs文件系统。
cramfs文件系统是一个压缩式的文件系统,它并不须要一次性地将文件系统中的所有内容都解压缩到显存之中,而只是在系统须要访问某个位置的数据的时候,马上估算出该数据在cramfs文件系统中的位置,将其实时地解压缩到显存之中,之后通过对显存的访问来获取文件系统中须要读取的数据。cramfs文件系统中的解压缩以及解压缩以后的显存中数据储存位置都是由cramfs文件系统文件系统本身进行维护的,用户并不须要了解具体的实现过程,因而这些方法既便捷,又节约了储存空间。cramfs文件系统的数据都是预先经过处理、打包的,这些系统是一种只读、不支持写操作的文件系统,在刷到机器里后,这个分区就是只读的,不能做任何修改。所以,救砖后是不能对这个系统进行更改的,只能在救砖前对system.img进行解包、修改,以达到我们的目的。
3、修改用户分区大小
部份同鞋使用了MID一段时间后,都会为用户区空间太小装不了几个软件而苦恼,当然,你不用苦恼,只要稍微更改一下两个文件就可以将分区加强。现今出产的MID通常都是配备2GB以上的显存,划个几百M至1G都不会太影响本机使用的,此外现今TF卡这么实惠,都是标配2~4G以上的容量了。所以即使将用户区再划大些都不会有太大的影响。
(正题:还有同鞋在找寻APP2SD的功能,个人建议不如更改一下这两个文件,将用户区划大一些来得实在,一来在本机上读取软件稳定性会高些,二来不会因TF卡的问题导至软件出问题嘛!)
言归正传:将用户升级包update.img解包(假如早已是量产升级包,略过此解包操作),找到其中的HWDEF、parameter两个文件并备份。再用UE(UltraEdit32,虽然用记事本也可以,不过看起比较乱)更改两个文件的分区偏斜量和分区大小,是以16补码表示,前一个分区的偏斜量和大小加上去就是前面一个分区的偏斜量,我们需让用户分区减小,所以只更改用户分区即可,只需更改userdata、user两个分区的偏斜量和大小即可。
A.更改HWDEF文件:
用UE打开HWDEF,找到如下部份的代码(请注意绿色部份数据):
mtd_id=rk28xxnand
#Format:part_nameoffset:size
parameter0x00000000:0x00001000:fh
misc0x00001000:0x00001000:f
kernel0x00002000:0x00003000:f
boot0x00005000:0x00002000:f
recovery0x00007000:0x00003000:f
system0x0000A000:0x0001E000:f
backup0x00028000:0x00026000:
cache0x0004E000:0x0001E000:
userdata0x0006C000:0x0001E000:
user0x0008A000:0xFFFFFFFF:
END
简单解释一下,里面的userdata分区表示:偏斜量为0x0006C000,分区大小为:0x0001E000,例如我们需将使用空间由原先的123M减小一倍到246M,即
0x0001E000+0x0001E000=0x0003C000,这么,下一个分区user的偏斜量就弄成6C000+3C000=0x000A8000,更改后新的数据如下:
userdata0x0006C000:0x0003C000:
user0x000A8000:0xFFFFFFFF:
更改后保存。对HWDEF的更改完成了。
B.更改parameter文件
再用UE打开parameter,找到最后一行,其部份代码如下:
CMDLINE:noinitrdc,115200n8nandroidboot.cinit=/init
root=/dev/mtdblock2mem=128M@0x60000000
mtdparts=rk28xxnand:0x00001000@0x00001000(misc),0x00003000@0x00002000(kernel),0x00002000@0x00005000(boot),0x00003000@0x00007000(recovery),0x0001E000@0x0000A000(system),0x00026000@0x00028000(backup),0x0001E000@0x0004E000(cache),0x00040000@0x0006C000(userdata),-@0xx000000AC000(user)
此段代码@后面表示分区大小,@前面表示偏斜量。userdata后面的6个分区大小和偏斜量都能和HWDEF文件中的一一对应上去,但userdata的分区大小显著要大好多,暂不明白为什么要加强一些。查看过几个不同型号的那些文件,大小也有差别,在22000-62000(16补码)之间;为了不出问题,我们也根据那样做吧,所以我们也在userdata空间的大小前面也加上22000至62000之间的一个数值吧。
所以,此处userdata的分区大小为:3C000(扩容后的分区大小)
+22000=5E000,那下一个分区user的偏斜量也弄成了:5E000(新分区大小)+6C000(偏斜)=CA000。更改过的数据如下:
0x0005E000@0x0006C000(userdata),-@0x000CA000(user)
更改后保存。对parameter的更改也完成了。用刚刚改好的两个文件替换原来的两个文件,之后重新打包、升级。
不同型号分区大小可能会有差异,所以附件中放有原始的和更改好的两个文件,以供参考!此文件仅供参考,切勿直接替换,出了问题概不负责!4,更改设置中“关于MID”中的型号机型
将system.img进行解包,解包后在system文件夹下找到
build.prop
将build.prop文件用UE打开,找到ro.product.model=sdkDemo一行,将其中的sdkDemo改成你想要显示的文字,例如BM999,更改后保存,之后重新打包烧写即可。
5、美化界面
这个又涉及到APK文件的更改了,这部份的教程就不作过多的介绍了,有须要的同鞋可以上网去Google下相关资料,大把的教程可供参考。
将system.img进行解包,解包后在../system/framework文件夹下找到
framework-res.apk,将.APK后缀更名为.zip,之后将其中的assets、res两个文件夹解压下来开始我们的美化工作。要注意更改后的图片帧率大小和图片格式要与原先保持一致,否则会出错的哦。
A.界面美化
找到解压后的下述两个目录,这两个目录储存所有界面的系统图标,可对须要更改的界面小图标进行美化:
../framework-res/res/drawable
../framework-res/res/drawable-land
B.更改开机LOGO(Android启动时,出现闪烁的ANDROID字样的动漫图片)
Android的系统登陆动漫类似于Windows系统的滚动条,是由前景和背景两张PNG图片组成,这两张图片也是坐落../system/framework/framework-res.apk文件当中。前景图片(android-logo-mask.png)上的Android文字部份镂空,背景图片(android-logo-shine.png)则是简单的纹理。系统登陆时,前景图片在最下层显示,程序代码控制背景图片连续滚动,透过前景图片文字镂空部分滚动显示背景纹理,进而实现动漫疗效。以相同的原理更改或替换下边两张图片即可达到目的。
../framework-res/assets/images/android-logo-mask.png
../framework-res/assets/images/android-logo-shine.png
android-logo-mask.png:Android默认的前景图片,文字部份镂空,大小256×64
android-logo-shine.png:Android默认的背景图片,有动感疗效,大小512×64
美化完成后,将更改过的图片替换掉APK文件中相应的文件,之后将APK文件中META-INF文件夹内的CERT.SF、CERT.RSA两个文件删掉,之后用签名工具重新签名。再将签名后的APK文件替换掉原本的文件,然后重新打包成system.img并用工具升级即可。
6、桌面美化
觉得桌面默认的公版墙纸、搜索条、快捷键等图标太难看?没问题,把它都换了吧。
将system.img进行解包,解包后在../system/app文件夹下找到Launcher.apk,将.APK后缀更名为.zip,之后将其中的res文件夹解压下来,将须要美化的图片进行美化、替换,更改好后根据前面的方式将文件替换、签名、打包再升级即可。
基础篇教程完毕!敬请关注进阶篇。因本人水平有限,教程中难免会有错误之处,欢迎见谅!