Android自定义开机动画

image.png

AOSP 替换 / 编译开机动画 学习笔记
一、核心概念区分
单编:仅编译指定模块,如 m bootanimation、m systemimage
全编:编译整个 Android 系统所有镜像(system、vendor、product 等),命令:make -j8
二、完整流程梳理

  1. 创建动画目录与帧文件夹
    在源码目录下创建存放开机动画资源的目录结构:
    bash
    运行
    mkdir -p vendor/bootanimation/{part0,part1}
  2. 编写 desc.txt 配置文件
    步骤 1:打开 / 创建 desc.txt 文件
    bash
    运行
    vim ~/code/vendor/bootanimation/desc.txt
    步骤 2:编辑配置内容(适配 1440 x 2960 分辨率模拟器)
    按 i 进入编辑模式,输入以下内容:
    txt
    1440 2960 30 # 宽 高 帧率
    p 1 0 part0 # 第一部分:播放1次,无延迟
    p 0 0 part1 # 第二部分:无限循环
    步骤 3:保存并退出 Vim
    按 Esc 键退出编辑模式,输入以下命令保存退出:
    bash
    运行
    :wq
    步骤 4:放入动画帧 + 打包 bootanimation.zip
    将动画帧图片(命名为 001.png、002.png、003.png…)放入 part0/、part1/ 目录;
    进入动画目录并打包(二选一,均为 0 级压缩,系统可识别):
    方式 1(自定义命令):
    bash
    运行
    cd ~/code/vendor/bootanimation
    zip -r -X -Z store bootanimation.zip part/ desc.txt
    方式 2(通用标准命令,更易记):
    bash
    运行
    cd ~/code/vendor/bootanimation
    zip -0qry bootanimation.zip desc.txt part0/ part1/
  3. 临时部署(ADB 推送,快速验证效果)
    步骤 1:启动可读写分区的模拟器
    bash
    运行
    emulator -writable-system # 关键:让/system分区可写
    步骤 2:推送动画包并重启系统服务
    bash
    运行
    cd ~/code/vendor/bootanimation/
    adb root; adb remount; # 提权 + 重新挂载/system为可写
    adb push bootanimation.zip /system/media/bootanimation.zip
    adb shell stop; adb shell start # 重启系统服务,无需重启模拟器
  4. 源码集成(编译后永久生效)
    步骤 1:配置 product.mk 文件
    在对应的 product.mk 文件中添加拷贝规则:
    makefile
    PRODUCT_COPY_FILES +=
    vendor/bootanimation/bootanimation.zip:system/media/bootanimation.zip
    步骤 2:编译系统镜像
    bash
    运行
    cd ~/code
    source build/envsetup.sh
    lunch sdk_phone_x86_64-eng

单编system镜像(推荐,耗时短)

m systemimage -j8

若需全编(耗时久):make -j8

步骤 3:刷入编译后的镜像
bash
运行
fastboot flash system out/target/product/sdk_phone_x86_64/system.img
fastboot reboot

三、通用扩展命令(适配开机动画定制全场景)

1. ADB常用命令(模拟器/设备调试)

命令 用途
adb shell wm size 查看设备/模拟器分辨率(如你的1440x2960)
adb shell ls /system/media/ 查看系统中开机动画是否存在
`adb logcat grep BootAnimation` 查看开机动画日志(排查动画不显示问题)
adb shell setprop service.bootanim.exit 0 重置开机动画退出标志(重新播放动画)
adb shell setprop service.bootanim.exit 1 终止开机动画(无限循环时用)
adb reboot 重启设备/模拟器(验证开机动画)

2. Ubuntu文件/目录操作(高频)

命令 用途
mkdir -p dir1/dir2 递归创建多级目录(不存在则建,存在不报错)
cp -r 源目录 目标目录 递归复制目录(如复制动画帧到part0)
rm -rf 目录/文件 强制删除目录/文件(慎用,如删除错误的zip)
ls -l 查看目录下文件详情(大小、权限)
pwd 查看当前所在路径(避免目录找错)
mv 旧文件名 新文件名 重命名文件(如修正zip文件名)

3. Zip打包/解压命令(开机动画专属)

命令 用途
zip -0qry boot.zip desc.txt part* 标准打包(0级压缩,必用)
zip -r -X -Z store boot.zip * 等价于0级压缩(你的命令)
unzip -l bootanimation.zip 查看zip内文件(验证打包是否正确)
unzip bootanimation.zip -d 目录 解压zip到指定目录(修改帧时用)

4. Vim编辑命令(编写desc.txt/mk文件)

命令/操作 用途
vim 文件名 打开/创建文件
i 进入编辑模式(输入内容)
Esc 退出编辑模式(回到命令模式)
:wq 保存并退出
:q! 放弃修改,强制退出(输错内容时用)
u 撤销上一步输入(编辑模式输错时)
:set nu 显示行号(编辑mk文件时方便定位)

5. 编译相关命令(AOSP源码)

命令 用途
source build/envsetup.sh 加载编译环境(必执行)
lunch 列出可选编译目标(选模拟器型号)
lunch 目标名 选择编译目标(如aosp_x86_64-eng)
m 模块名 -j8 单编指定模块(如m bootanimation、m systemimage)
make clean 清理编译产物(编译出错时用)
out/host/linux-x86/bin/emulator 启动编译后的模拟器(验证镜像)

四、通用化关键注意事项(必记)

  1. 压缩等级:bootanimation.zip必须用0级压缩(-0/-Z store),否则系统识别不到;
  2. 分辨率匹配:desc.txt的宽高必须和设备/模拟器一致(adb shell wm size 核对);
  3. 路径准确
    • 临时部署:推送路径优先 /system/media/bootanimation.zip
    • 源码集成:PRODUCT_COPY_FILES的源路径是源码中zip的路径,目标路径固定为system/media/;
  4. 模拟器启动:必须加 -writable-system 才能修改/system分区;
  5. 帧命名规则:必须连续数字(0001.png、0002.png…),否则动画播放错乱。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容