背景:
有學員朋友在vip群提出一個需求相關的問題,他想要把settings裁剪掉,但是發現裁剪后Fallbackhome肯定就沒了,發現Launcher居然無法啟動了,一直處于Bootanimation的畫面,無法進入系統。
針對這個去除Fallbackhome去除后是否可以正常進入Launcher的問題,學員們也進行了激烈討論,很多學員朋友都猜想肯定還是會進入Launcher的,只是可能時間會長一點,那么真實的情況是真的會嗎?
同時提出問題的朋友還提出另一個現象:
那就是系統首次開機是可以進入到Launcher的,只是再啟動reboot后就不可以了。
問題復現:
復現環境:
aosp 15 編譯模擬器
復現修改:
盡可能按照學員朋友的要求進行復現,不過學員朋友是直接去除settings這個apk,其實完全不需要一定去除apk,可以考慮只去除Fallbackhome這個Activity就行
修改如下:
直接屏蔽掉設置的Fallbackhome這個Activity
packages/apps/Settings/AndroidManifest.xml
修改后進行編譯 make
然后運行模擬器:emulator
發現系統一直處于bootanimation畫面,時間再久也無法進入的Launcher,(注意這里大家不要設置任何設備鎖)
其實這里也就是很多學員有的疑問:
馬哥課程里面講解的Fallbackhome本身好像沒有干啥啊,它也只是等待檢測設備解鎖后啟動Launcher,Fallbackhome本身自己又沒有調用啥解鎖,屬于被動,所以普遍認為系統會自己解鎖,解鎖后自然會觸發系統重新進行Launcher的啟動。
作業提示:
上面學員的疑問和猜想其實很正常哈,說明學員們還是有認真學習Fallbackhome這塊的內容。
這里大家可能會有如下想法,是不是Launcher桌面在解密后沒有再被觸發startActivity,是否可以考慮手動再觸發startActivity既可以。
嘗試命令行啟動
test@test:~/aosp15/frameworks$ adb shell am start -n com.android.launcher3/.uioverrides.QuickstepLauncher
Starting: Intent { cmp=com.android.launcher3/.uioverrides.QuickstepLauncher }
Error type 3
Error: Activity class {com.android.launcher3/com.android.launcher3.uioverrides.QuickstepLauncher} does not exist.
發現依然是找不到Launcher的Activity
再看看是不是還處于加密狀態:
作業要求:
1、請在上面已經對settings屏蔽了Fallbackhome后,想一個辦法可以讓開機動畫結束,正常進入系統
2、請剖析出原因,為啥Fallbackhome去除后就會導致系統一直卡在開機動畫
3、如過想要去除Fallbackhome,又要系統可以正常啟動,有啥完美的方案呢?
4、請解釋為啥上面說的第一次啟動可以進入Launcher后面reboot后就再也不可以了
更多framework實戰開發干貨,請關注下面“千里馬學框架”