修改手机的开机动画不是什么难事儿。

但修改一款很冷门的“山寨机”,就不太好修改第一屏了。

手机是MTK的一款手机,虽然比较贵(价格超过三星Note3),但在我看来跟山寨机木有啥区别。

很冷门的手机,百度谷歌都翻了个天,都木有刷机包,更别提recovery了。

好了,root完毕,开工。

开机动画严格意义上可以分为三个步骤:

1.开机第一屏

2.开机第二屏

3.开机动画

以MTK手机为例:

Boot logo:

1. 开机显示的顺序如下:

    boot logo(开机第一屏)   (logo.bin 中)

    Kernel logo(开机第二屏)  (system/media/images/boot_logo 文件)

    Boot animation(开机动画)(system/media/bootanimation.zip 文件)

2. boot logo和kernel log所用的图片资源在 mediatek/custom/common/uboot/logo 目录下。

    在ProjectConfig.mk中指定具体目录,比如BOOT_LOGO=wvga_XXX,表示用wvga_XXX目录下的资源,该目录下的资源都是bmp文件。

    在logo/update 文件中会调用tool/bmp_to_raw将bmp文件转换成raw文件,并且在make uboot时会将这些资源文件放到logo.bin 中。 

    Logo/update 针对wvga_XXX_kernel.bmp有特殊处理,将其转成raw文件并命名为/logo/boot_logo

    在mediatek/source/external/boot_logo_upater/Android.mk中会将boot_logo 文件放到out/target/product/system/media/images/boot_logo. 这样就放到了system.img中.

3. boot logo的显示: boot.img中加载logo.img中的boot 图片显示;

    Kernel logo的显示: init.rc 启动 service bootlogoupdater /system/bin/boot_logo_updater .

    boot_logo_updater这个可执行程序由boot_logo_updater.c 编译而成,其功能是从/system/media/images/boot_logo 中读出kernel_boot资源,并通过framebuffer直接显示到LCD上。

    注:可以根据logo/update中的脚本单独生成boot_logo文件(修改第二屏),然后用adb remount/adb push的方法直接放到手机里面观察效果。

下面依次来修改三个屏幕。

1.开机第一屏

这一屏的修改主要是制作一个update.zip的升级包,用recovery刷上去就看到效果了。

但对于山寨机来说,就比较麻烦了(木有第三方recovery,官方的recovery战斗力就是个渣渣(原因可自行百度))。

(1)adb pull 导出logo文件(是的,木有后缀,我手边的机子是在/dev/目录下)

(2)将logo文件加个后缀.bin

(3)下载开机第一屏制作软件LogoBuilder

(4)如图,替换img1图片(也就是开机第一屏),点击“开始生成”,导出update.zip的刷机包

(5)将生成的卡刷包 update.zip 拷到sd卡根目录下,手机进入 recovery ,进行卡刷(特别提醒:不要双清),刷完后重启手机就会看到新的第一屏。

注:悲剧的是,自己不会做第三方recovery,而这破机子也没有第三方recovery!

2.开机第二屏

(1)导出boot_logo文件至笔记本

(2)使用Image Search Editor软件打开boot_logo文件,用同尺寸的bmp文件替换显示出来的图片。

(3)将替换图片后的boot_logo导入到手机原目录

(4)OK

3.开机动画

(1)导出bootanimation.zip 文件至PC

(2)解压缩,发现2个目录和一个desc.txt的"脚本文件"





bootanimation.zip里面一般有两个文件夹part0,part1,一个文本文件desc.txt

dest.txt里面的参数是用来控制播放的,

比如:

第一行   540  960   24       540*960是手机的分辨率,而接着的一秒播放多少帧,这里是24

第二行    p  1  0    part0     这里第一个数字1表示播放1遍,第二个数字表示不停顿,而part0表示播放用的图片文件夹

第三行    p  0  0    part1     这里第一个数字0表示循环播放,第二个数字若不为0,则表示每播放到当前这个数字的帧停顿一下,(以10为例,就是每播放10帧停一下)而part1表示播放用的图片文件夹

更换两个文件夹的文件为自己的逐帧动画图片素材,重新打包为zip文件。

注意:要存为zip格式,并且只能是存储,否则开机动画是播放不出来的

制作好之后进行替换就可以了需要注意的是文件容量不能太大尽量不要高于原开机动画大多否则会造成读取慢卡失效,另外,还需要配合开机音乐的时长。

开机音乐相对简单,替换system/media中的bootaudio.mp3文件即可。

关机动画与开机动画修改类似。

The End。

Android MTK平台最完备的开机动画修改教程的更多相关文章

  1. Android MTK平台 客制化系统来电界面(屏蔽 InCallUI 提供接口给客户自行展示来电去电页面)

    OS: Android 8.1 需求分析 1.禁止系统来电铃声,提供接口给客户自己播放铃声 2.禁止系统拉起来去电页面(InCallActivity),消息通知客户拉起自己的来去电页面 3.禁止来电消 ...

  2. Android系统移植与调试之------->如何修改开机动画的两种方式剖析

    首先,我们先来分析一下源码: frameworks/base/cmds/bootanimation/BootAnimation.cpp 首先看一下定义的常量: BootAnimation::ready ...

  3. Android 修改开机动画(bootanimation)【转】

    本文转载自:http://blog.csdn.net/u012301841/article/details/51598115 Android 系统自带的开机动画,是一个白色的 “android” 文字 ...

  4. 深入浅出 - Android系统移植与平台开发(十一)- Android系统的定制(瘋耔修改篇一)

    首先非常感谢原文作者为我们提供的知识库,因为有你们的贡献,我们的开发难度更显简单 原文 :   http://blog.csdn.net/mr_raptor/article/details/30113 ...

  5. android开机动画(bootanimation)

    Android开机动画有两种修改方法,android 2.0及之后,使用bootanimation程序显示开机画面,如需修改开机画面,不用修改代码,只需按格式要求做bootanimation.zip包 ...

  6. Android4.4开机动画播放视频

    Android4.4系统启动时,播放自定义bootanimation.zip动画时,由于分辨率为1280x720,bootanimation.zip包也很大,播放太卡,所以将开机动画修改为播放视频.如 ...

  7. 教你win7关闭开机动画,大幅度加快开机时间

    Win7系统如何关闭开机动画 Win7系统开机动画关闭教程,以前我们说过很多种帮助Win7开机加速的方法,比如减少Win7开机启动的程序.服务或计划任务等.不过这些都优化都是针对已经进入Win7系统后 ...

  8. 修改android系统开机动画

    本文转载自:http://blog.csdn.net/u012301841/article/details/51598115 修改android系统开机动画

  9. Nexus5x 修改Android开机动画

    1.制作帧动画 这里随便从网上找了一个gif图片,导入PS中,打开后会形成很多帧图层,选择导航栏中的文件->脚本->将图层导出到文件可以将所有图层导出来.要注意文件命名,Android会按 ...

随机推荐

  1. Leetcode解题-树(5.0.0)基础类

    与第二章类似,LeetCode指定了TreeNode实现.为了方便后续习题的编写和测试,创建一个基础父类,包含TreeNode实现,以及create()和print()创建和打印树的方法.其中crea ...

  2. Servlet - Listener、Filter、Decorator

    Servlet 标签 : Java与Web Listener-监听器 Listener为在Java Web中进行事件驱动编程提供了一整套事件类和监听器接口.Listener监听的事件源分为Servle ...

  3. UNIX网络编程——原始套接字(dos攻击)

    原始套接字(SOCK_RAW).应用原始套接字,我们可以编写出由TCP和UDP套接字不能够实现的功能. 注意原始套接字只能够由有 root权限的人创建. 可以参考前面的博客<<UNIX网络 ...

  4. Android简易实战教程--第二十八话《加载大图片》

    Android系统以ARGB表示每个像素,所以每个像素占用4个字节,很容易内存溢出.假设手机内存比较小,而要去加载一张像素很高的图片的时候,就会因为内存不足导致崩溃.这种异常是无法捕获的 内存不足并不 ...

  5. 开源控件ViewPagerIndicator的使用

    此文转载自http://www.jianshu.com/p/a2263ee3e7c3 前几天学习了ViewPager作为引导页和Tab的使用方法.后来也有根据不同的使用情况改用Fragment作为Ta ...

  6. 最简单的基于librtmp的示例:接收(RTMP保存为FLV)

    ===================================================== 最简单的基于libRTMP的示例系列文章列表: 最简单的基于librtmp的示例:接收(RT ...

  7. Dynamics CRM 2015Online Update1 new feature之 通过业务规则清空字段的值

    自2013引入业务规则后很多的功能就不需要通过javascript来实现,业务人员直接通过配置就能解决.那随着版本的更新业务规则的功能也越来越强大,从之前很单纯的逻辑到后面的if..else,相信后面 ...

  8. Android初级教程理论知识(第七章服务)

    服务两种启动方式 startService:服务被启动之后,跟启动它的组件没有一毛钱关系 bindService:跟启动它的组件同生共死 绑定服务和解绑服务的生命周期方法:onCreate->o ...

  9. [mysql5.6] 主从更换ip之后重新建立同步

    情况时这样的: 主从系统 centos6.5 mysql5.6 由于机房迁移ip地址变了,导致原来的主动无法同步,于是需要重新建立主从关系. 主 192.168.1.23 从 192.168.1.22 ...

  10. 【图的DFS】图的DFS非递归算法

    在DFS的递归算法中,DFS框架如下: 1访问起点v0 2依次以v0的未访问的连接点为起点,DFS搜索图,直至图中所有与v0路径相通的顶点都被访问. 3若该图为非连通图,则图中一定还存在未被访问的顶点 ...