DIY固件系列教程——实现开机LOGO三屏动画的完全替换
2013-06-27 23:01
495 查看
本教程需要用到如下工具:
1,7Z压缩工具
2,AddCrc32效验工具
3,raw2rle转换工具
4,WinHex16进制编译工具
5,Photoshop等图像修改工具
6,RKAndroidTool刷机工具
以上工具在本文最后提供下载!
正文开始:
本文以N3为基础进行,N系列除分辨率不同之外,其他一样,而在继续之前,您需要一定的图片处理基础和16进制编译基础。
一,先了解N系列的开机动画有哪些
原道N系列的开机动画分为三个屏幕,在开机后依次开始展示,分别如下,
第一屏,静态机型展示LOGO,如(N3 N5pro2等),该文件位于kernel.img中
第二屏,性能展示LOGO,(N系列GOOGLE智能娱乐器), 该文件位于boot.img中
第三屏,动态展示LOGO,(不停闪动的动画效果),该文件位于system.img中
二,从简入深开始修改
以下内容请在完全了解DIY固件后才可以进行,不了解的请先去参考“N系列固件DIY详细教程”。
1,最容易修改的开机LOGO为第三屏:
关于此LOGO的修改原本在IMP3论坛里提及过,详细请参考wairen11的Android开机动画制作教程 :http://bbs.imp3.net/thread-1000459-1-1.html
在这里仅仅简单再描述一下:
固件里关于N系列用LOGO的文件路径为:\Temp\system\media\bootanimation.zip
利用7Z解压工具,可以看到里面为多张同分辨率(N3系列为480*272 而N5系列为800*480)的.PNG格式的图片,原理很简单,从第1张开始到第22张轮流播放,从而实现动画效果,所以修改起来也很简单,用7Z替换法对应替换同分辨的图片即可实现修改。(关于连续图片的动态效果制作请自行学习PS等图片处理软件)
![](http://www.ereadcn.com/home/attachment/201105/21/18001_130598391379G3.jpg)
值得注意的是,在该\bootanimation.zip文件中有一个desc.txt文件,该文件为动画效果设置文件,比如N3的该文件打开为后:
480 272 10
p 0 0 android
复制代码
意思就是(注意颜色对应):
分辨率为480*272 每秒播放10帧,无限播放 不停顿
如果我们修改为:
480 288 15
p 1 15 android
复制代码
即表示(注意颜色对应):
分辨率为480*288 每秒播放15帧,播放1次
停顿15帧(1秒)
修改好后即可压缩生成,注意压缩一定要选择无压缩率,无损压缩才行,或者使用文中提及的7Z替换法,何谓7Z替换法?7Z替换法就是用7Z打开文件,但是不解压,而是直接将图片或文件拖入到窗口中进行压缩替换,该替换法可以不破坏原文件结构而实现文件的替换。
以上,将修改好的bootanimation.zip对应替换原文件后打包刷机即可实现第三屏的动画替换!
另外,我们还可以直接将其删除,删除后将启用安卓自带的第三屏LOGO动画,自带的LOGO文件位于\Temp\system\framework\framework-res.apk文件中,我们同样可以用7Z替换法对应替换framework-res.apk文件中如下两个文件即可:
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305984038A5kO.jpg)
/framework-res/assets/images/android-logo-mask.png(前景图片)
/framework-res/assets/images/android-logo-shine.png(背景图片)
替换修改好的图片后打包刷机即可实现安卓自带第三屏LOGO动画的替换!
2,略微复杂的第二屏LOGO
其文件路径为 \Temp\boot\initlogo.rle
该图片格式比较特殊,所以需要用到一些如photoshop等一些图片处理软件。
我们首先将要替换的图片调整成相应分辨率(N3系列为480*272 而N5系列为800*480),并另存为.raw格式,
然后使用android编译后的rgb2565工具将raw格式转化为rle文件,转换命令如下:
rgb2565 -rle < android_logo.raw >initlogo.rle
复制代码
转换完成即可生成我们需要的开机lOGO文件了。
不过为了方便,本人已经整合该工具包,现在只需要用将图片另存为.raw格式后并命名为initlogo.raw放入raw2rle工具包中点击格式转换即可生成initlogo.rle文件。
具体步骤:
1,首先将分辨率相同的图片用PS等工具转换为RAW格式
2,然后将文件命名为initlogo.raw放入本工具包内
3,点击格式转换即可生成initlogo.rle文件
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305983720mDK0.jpg)
这里重点推荐本论坛会员GC001 的原创工具Pic2Rle,非常简单的操作,
详细请参见:http://bbs.imp3.net/thread-1025141-1-1.html
将生成的initlogo.rle对应替换原文件后打包刷机即可实现第二屏LOGO替换。
3,最麻烦的第一屏LOGO的替换
前面提及到,第一屏LOGO位于kernel.img中,而瑞芯微没有对kernel.img开放源码而无法解包,所以针对这个第一屏替换比较繁琐,我们要用到“UltraEdit32”或“WinHex”等16进制工具来修改kernel.img文件,lajidong在RK28固件小组里非常详细的公布了修改办法,现在本人直接转过来,值得注意的是,lajidong是针对RK2818方案其他机型的固件作出的修改,所以N系列仅做参考,以自己的固件参数为主。
三,针对第一屏的详细修改教程(作者:lajidong)
1、将kernel.img重命名为kernel.bak,用WinHex打开kernel.bak,记下04~07偏移处数据,本例中是D8 91 4C 00,即16进制数4C91D8;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_13059795551qtK.jpg)
2、选定kernel.bak最前面8个字节,按Delete键删除,询问时选择“YES”;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979555N70l.jpg)
3、按下快捷键Alt+G,在弹出的对话框里填入第1步记下的数字4C91D8,然后点“OK”,光标将跳转到4C91D8处;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_13059795596yze.jpg)
4、在4C91D8偏移处数据上弹出右键菜单,选“Beginning of block”,或者直接按下快捷键Alt+1;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_13059795607Ku6.jpg)
5、将滚动条拉到最后,在文件最后一个字节处弹出右键菜单,选“End of block”,或者点击最后一个字节后直接按下快捷键Alt+2;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979560m8jM.jpg)
6、按Delete键删除,询问时选择“YES”;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979562n7YY.jpg)
7、查找16进制串0300000020030000E0010000,这里姑且叫它特征串;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_130597956219UQ.jpg)
8、在208A0偏移处查找到了该特征串,记下紧跟着该特征串的那个字节,本例中是D6,转换到10进制就是214,表示调色板内颜色总数;特征串偏移加上18(16进制),即208A0+18=208B8处是调色板起始地址,调色板数据大小为颜色总数的3倍,本例中是D6*3=282(16进制),因此调色板数据的偏移为208B8到20B39,在这之后,4倍边界处20B3C就是logo的像素数据的起始地址,数据大小为800*480=384000(10进制),因此像素数据的偏移为20B3C到7E73B;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979563St7t.jpg)
9、准备一张800x480分辨率的图片,用图片编辑器将图片垂直翻转并转换为索引模式,调色板最大颜色数设置为上一步记下的214,然后把图片保存为未压缩的BMP格式;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979564QjqD.jpg)
10、用WinHex打开上一步制作的BMP,注意查看0A~0B偏移处数据,本例中是8E 03,即16进制数38E,那么从偏移38E到文件结尾的所有数据就是该BMP的像素数据
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979564H6S0.jpg)
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979564H6S0.jpg)
选定像素数据,选择“Edit”菜单下的“Modify Data”项,按下图设置给每个字节加上16进制数20,然后点“OK”,再把这些数据复制覆盖到第8步像素数据区(20B3C到7E73
![](http://bbs.imp3.net/static/image/smiley/default/cool.gif)
,注意数据是覆盖而不是插入;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979565o836.jpg)
11、BMP中16进制偏移36到38D内数据为调色板数据,为了便于下一步操作,把调色板数据复制到一个新文件;
12、用WinHex打开上一步建的调色板数据文件,选择“Edit”菜单下的“Modify Data”项,按下图设置,选择“32-bit byte swap”,然后点OK;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_13059795678vZA.jpg)
13、删除调色板数据文件最前面的字节“00”;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979572o4qu.jpg)
14、按下图设置替换16进制串;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979574bgNH.jpg)
15、把调色板数据覆盖到kernel.bak的调色板数据区(208B8到20B39),同样要注意数据是覆盖而不是插入;
16、保存kernel.bak;
17、在命令行下输入AddCrc32 kernel.bak kernel.img,生成的kernel.img即可用于刷机;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979575RR08.jpg)
四,关于修改测试的建议
针对修改后的动画,大家完成后可以使用RKAndroidTool工具(擦除工具)进行单刷测试,以修改第2屏为列,
将解包的BOOT文件夹内的initlogo.rle文件修改完成后对BOOT.IMG进行重新打包,然后使用擦除工具单独勾选BOOT后执行即可。
![](http://www.ereadcn.com/home/attachment/201105/21/18001_13059820086Z7R.jpg)
其他2屏的动画测试一样,测试成功后就可以上传自己的个性LOGO固件了!
注意,取决于你修改的图片大小,修改后的动画可能会影响开机速度!
附本文所使用到的工具下载:
http://u.115.com/file/bhbxfag3
1,7Z压缩工具
2,AddCrc32效验工具
3,raw2rle转换工具
4,WinHex16进制编译工具
5,Photoshop等图像修改工具
6,RKAndroidTool刷机工具
以上工具在本文最后提供下载!
正文开始:
本文以N3为基础进行,N系列除分辨率不同之外,其他一样,而在继续之前,您需要一定的图片处理基础和16进制编译基础。
一,先了解N系列的开机动画有哪些
原道N系列的开机动画分为三个屏幕,在开机后依次开始展示,分别如下,
第一屏,静态机型展示LOGO,如(N3 N5pro2等),该文件位于kernel.img中
第二屏,性能展示LOGO,(N系列GOOGLE智能娱乐器), 该文件位于boot.img中
第三屏,动态展示LOGO,(不停闪动的动画效果),该文件位于system.img中
二,从简入深开始修改
以下内容请在完全了解DIY固件后才可以进行,不了解的请先去参考“N系列固件DIY详细教程”。
1,最容易修改的开机LOGO为第三屏:
关于此LOGO的修改原本在IMP3论坛里提及过,详细请参考wairen11的Android开机动画制作教程 :http://bbs.imp3.net/thread-1000459-1-1.html
在这里仅仅简单再描述一下:
固件里关于N系列用LOGO的文件路径为:\Temp\system\media\bootanimation.zip
利用7Z解压工具,可以看到里面为多张同分辨率(N3系列为480*272 而N5系列为800*480)的.PNG格式的图片,原理很简单,从第1张开始到第22张轮流播放,从而实现动画效果,所以修改起来也很简单,用7Z替换法对应替换同分辨的图片即可实现修改。(关于连续图片的动态效果制作请自行学习PS等图片处理软件)
![](http://www.ereadcn.com/home/attachment/201105/21/18001_130598391379G3.jpg)
值得注意的是,在该\bootanimation.zip文件中有一个desc.txt文件,该文件为动画效果设置文件,比如N3的该文件打开为后:
480 272 10
p 0 0 android
复制代码
意思就是(注意颜色对应):
分辨率为480*272 每秒播放10帧,无限播放 不停顿
如果我们修改为:
480 288 15
p 1 15 android
复制代码
即表示(注意颜色对应):
分辨率为480*288 每秒播放15帧,播放1次
停顿15帧(1秒)
修改好后即可压缩生成,注意压缩一定要选择无压缩率,无损压缩才行,或者使用文中提及的7Z替换法,何谓7Z替换法?7Z替换法就是用7Z打开文件,但是不解压,而是直接将图片或文件拖入到窗口中进行压缩替换,该替换法可以不破坏原文件结构而实现文件的替换。
以上,将修改好的bootanimation.zip对应替换原文件后打包刷机即可实现第三屏的动画替换!
另外,我们还可以直接将其删除,删除后将启用安卓自带的第三屏LOGO动画,自带的LOGO文件位于\Temp\system\framework\framework-res.apk文件中,我们同样可以用7Z替换法对应替换framework-res.apk文件中如下两个文件即可:
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305984038A5kO.jpg)
/framework-res/assets/images/android-logo-mask.png(前景图片)
/framework-res/assets/images/android-logo-shine.png(背景图片)
替换修改好的图片后打包刷机即可实现安卓自带第三屏LOGO动画的替换!
2,略微复杂的第二屏LOGO
其文件路径为 \Temp\boot\initlogo.rle
该图片格式比较特殊,所以需要用到一些如photoshop等一些图片处理软件。
我们首先将要替换的图片调整成相应分辨率(N3系列为480*272 而N5系列为800*480),并另存为.raw格式,
然后使用android编译后的rgb2565工具将raw格式转化为rle文件,转换命令如下:
rgb2565 -rle < android_logo.raw >initlogo.rle
复制代码
转换完成即可生成我们需要的开机lOGO文件了。
不过为了方便,本人已经整合该工具包,现在只需要用将图片另存为.raw格式后并命名为initlogo.raw放入raw2rle工具包中点击格式转换即可生成initlogo.rle文件。
具体步骤:
1,首先将分辨率相同的图片用PS等工具转换为RAW格式
2,然后将文件命名为initlogo.raw放入本工具包内
3,点击格式转换即可生成initlogo.rle文件
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305983720mDK0.jpg)
这里重点推荐本论坛会员GC001 的原创工具Pic2Rle,非常简单的操作,
详细请参见:http://bbs.imp3.net/thread-1025141-1-1.html
将生成的initlogo.rle对应替换原文件后打包刷机即可实现第二屏LOGO替换。
3,最麻烦的第一屏LOGO的替换
前面提及到,第一屏LOGO位于kernel.img中,而瑞芯微没有对kernel.img开放源码而无法解包,所以针对这个第一屏替换比较繁琐,我们要用到“UltraEdit32”或“WinHex”等16进制工具来修改kernel.img文件,lajidong在RK28固件小组里非常详细的公布了修改办法,现在本人直接转过来,值得注意的是,lajidong是针对RK2818方案其他机型的固件作出的修改,所以N系列仅做参考,以自己的固件参数为主。
三,针对第一屏的详细修改教程(作者:lajidong)
1、将kernel.img重命名为kernel.bak,用WinHex打开kernel.bak,记下04~07偏移处数据,本例中是D8 91 4C 00,即16进制数4C91D8;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_13059795551qtK.jpg)
2、选定kernel.bak最前面8个字节,按Delete键删除,询问时选择“YES”;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979555N70l.jpg)
3、按下快捷键Alt+G,在弹出的对话框里填入第1步记下的数字4C91D8,然后点“OK”,光标将跳转到4C91D8处;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_13059795596yze.jpg)
4、在4C91D8偏移处数据上弹出右键菜单,选“Beginning of block”,或者直接按下快捷键Alt+1;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_13059795607Ku6.jpg)
5、将滚动条拉到最后,在文件最后一个字节处弹出右键菜单,选“End of block”,或者点击最后一个字节后直接按下快捷键Alt+2;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979560m8jM.jpg)
6、按Delete键删除,询问时选择“YES”;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979562n7YY.jpg)
7、查找16进制串0300000020030000E0010000,这里姑且叫它特征串;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_130597956219UQ.jpg)
8、在208A0偏移处查找到了该特征串,记下紧跟着该特征串的那个字节,本例中是D6,转换到10进制就是214,表示调色板内颜色总数;特征串偏移加上18(16进制),即208A0+18=208B8处是调色板起始地址,调色板数据大小为颜色总数的3倍,本例中是D6*3=282(16进制),因此调色板数据的偏移为208B8到20B39,在这之后,4倍边界处20B3C就是logo的像素数据的起始地址,数据大小为800*480=384000(10进制),因此像素数据的偏移为20B3C到7E73B;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979563St7t.jpg)
9、准备一张800x480分辨率的图片,用图片编辑器将图片垂直翻转并转换为索引模式,调色板最大颜色数设置为上一步记下的214,然后把图片保存为未压缩的BMP格式;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979564QjqD.jpg)
10、用WinHex打开上一步制作的BMP,注意查看0A~0B偏移处数据,本例中是8E 03,即16进制数38E,那么从偏移38E到文件结尾的所有数据就是该BMP的像素数据
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979564H6S0.jpg)
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979564H6S0.jpg)
选定像素数据,选择“Edit”菜单下的“Modify Data”项,按下图设置给每个字节加上16进制数20,然后点“OK”,再把这些数据复制覆盖到第8步像素数据区(20B3C到7E73
![](http://bbs.imp3.net/static/image/smiley/default/cool.gif)
,注意数据是覆盖而不是插入;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979565o836.jpg)
11、BMP中16进制偏移36到38D内数据为调色板数据,为了便于下一步操作,把调色板数据复制到一个新文件;
12、用WinHex打开上一步建的调色板数据文件,选择“Edit”菜单下的“Modify Data”项,按下图设置,选择“32-bit byte swap”,然后点OK;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_13059795678vZA.jpg)
13、删除调色板数据文件最前面的字节“00”;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979572o4qu.jpg)
14、按下图设置替换16进制串;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979574bgNH.jpg)
15、把调色板数据覆盖到kernel.bak的调色板数据区(208B8到20B39),同样要注意数据是覆盖而不是插入;
16、保存kernel.bak;
17、在命令行下输入AddCrc32 kernel.bak kernel.img,生成的kernel.img即可用于刷机;
![](http://www.ereadcn.com/home/attachment/201105/21/18001_1305979575RR08.jpg)
四,关于修改测试的建议
针对修改后的动画,大家完成后可以使用RKAndroidTool工具(擦除工具)进行单刷测试,以修改第2屏为列,
将解包的BOOT文件夹内的initlogo.rle文件修改完成后对BOOT.IMG进行重新打包,然后使用擦除工具单独勾选BOOT后执行即可。
![](http://www.ereadcn.com/home/attachment/201105/21/18001_13059820086Z7R.jpg)
其他2屏的动画测试一样,测试成功后就可以上传自己的个性LOGO固件了!
注意,取决于你修改的图片大小,修改后的动画可能会影响开机速度!
附本文所使用到的工具下载:
http://u.115.com/file/bhbxfag3
相关文章推荐
- DIY固件系列教程——实现开机LOGO三屏动画的完全替换【转】
- 插入SD卡后自动运行SD卡根目录中的AutoRun.sh以实现动态替换linux logo,init logo和开机动画、安装SD卡中指定目录中的apk到系统中等
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(八) 完美实现A*寻径动态动画
- RK29-31全系列均适用的开机LOGO第一屏替换教 ...
- Android5.1-s5p6818平台替换开机logo和开机动画失败之原因
- 风暴数码论坛教程--开机动画、声音的替换、位置变更及DATA文件夹的使用
- 【教程】开机动画DIY全攻略
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(八) 完美实现A*寻径动态动画
- android新浪微博客户端 开机Logo动画实现
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四)实现2D人物动画①
- RK30系列替换开机第一屏教程,n70双擎成功,非完美,希望高手能进一步完善改进~~~
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(五)实现2D人物动画②
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四)实现2D人物动画①
- C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(四)实现2D人物动画①
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四)实现2D人物动画①
- 【教程】开机动画DIY全攻略
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(八) 完美实现A*寻径动态动画
- 【教程】开机动画DIY全攻略
- 【教程】开机动画DIY全攻略