Where it starts:
./frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp:638: property_set("ctl.start", "bootanim");
Where it stops:
./frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp:637: property_set("service.bootanim.exit", "0");
Where is the executable:
./system/core/rootdir/init.rc:511
service bootanim /system/bin/bootanimation
class main
user graphics
group graphics
disabled
oneshot
./out/target/product/flo/system/bin/bootanimation
Where is it copied from:
./build/target/product/embedded.mk:23
PRODUCT_PACKAGES += \
bootanimation \
Where is the source code
./frameworks/base/cmds/bootanimation
Boot animation files:
#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
#define EXIT_PROP_NAME "service.bootanim.exit"
使用bootanimation 的優先順序
(1) 加密檔
property_get("vold.decrypt", decrypt, ""); decrypt 非零或是等於 "trigger_restart_min_framework" 且 SYSTEM_ENCRYPTED_BOOTANIMATION_FILE 存在
(2) USER_BOOTANIMATION_FILE 存在
(3) SYSTEM_BOOTANIMATION_FILE
(4) 當以上檔案不存在時, 使用 AndroidAnimation
A. Bootanimation.zip used by BootAnimation::movie()
desc.txt 格式
"%d %d %d", width, height, fps
"%c %d %d %s", type, count, pause, path
playUntilComplete = type == 'c';
B. AndroidAnimation
bool BootAnimation::android()
initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");