bootanimation を adb shell 上から実行する
AOSP をビルドしてカスタムロムを作っていると、bootanimation.zip
を独自の物に交換したくなると思います1。
そんな時に、いちいちデバイスを再起動2していると時間の無駄なので、コマンドラインから実行してみました。
動作確認は Android 7.0 のエミュレーターで行っています。
なお、この方法を実行するには root 権限が必要です。
bootanimation の実行
$ adb shell $ su # setprop service.bootanim.exit 0 # /system/bin/bootanimation & |
ポイントは setprop service.bootanim.exit 0
です。
bootanimation
はこのフラグを見てアニメーションの終了を確認しているので、これを 0
にしておかないと、いきなり終了してしまうのです。
bootanimation の終了
逆に、アニメーションを終了させるにはこのプロパティを 1
に設定します。
このフラグが 1
になっていると、ループ処理を抜けて outro に入ります。
# setprop service.bootanim.exit 1 |
bootanimation のソースコードを確認
bootanimation
はデバイス依存性が強いので、Android のバージョンによって3微妙に挙動が異なります。
ソースコードが手に入る場合は動作を確認しておいた方が良いでしょう。
今回のケースでは android-cts-7.0_r9
を参照しました。
cmds/bootanimation/BootAnimation.cpp - platform/frameworks/base - Git at Google
以下の部分です4。
frameworks/base/cmds/bootanimatin/BootAnimation.cpp
63 | #define EXIT_PROP_NAME "service.bootanim.exit" |
387 388 389 390 391 392 393 394 395 396 397 398 | void BootAnimation::checkExit() { // Allow surface flinger to gracefully request shutdown char value[PROPERTY_VALUE_MAX]; property_get(EXIT_PROP_NAME, value, "0" ); int exitnow = atoi (value); if (exitnow) { requestExit(); if (mAudioPlayer != NULL) { mAudioPlayer->requestExit(); } } } |
独自 bootanimation.zip に挿げ替える方法
書いていたら長くなったので別にしました。
0 件のコメント:
コメントを投稿