背景:
有学员朋友在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既可以。
尝试命令行启动
bash
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实战开发干货,请关注下面"千里马学框架"