安卓首次启动Fallbackhome是否可以直接去除?--学员作业

背景:

有学员朋友在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实战开发干货,请关注下面"千里马学框架"

相关推荐
用户2018792831673 小时前
ANR之RenderThread不可中断睡眠state=D
android
煤球王子3 小时前
简单学:Android14中的Bluetooth—PBAP下载
android
小趴菜82273 小时前
安卓接入Max广告源
android
齊家治國平天下3 小时前
Android 14 系统 ANR (Application Not Responding) 深度分析与解决指南
android·anr
ZHANG13HAO3 小时前
Android 13.0 Framework 实现应用通知使用权默认开启的技术指南
android
【ql君】qlexcel3 小时前
Android 安卓RIL介绍
android·安卓·ril
写点啥呢3 小时前
android12解决非CarProperty接口深色模式设置后开机无法保持
android·车机·aosp·深色模式·座舱
IT酷盖3 小时前
Android解决隐藏依赖冲突
android·前端·vue.js
努力学习的小廉5 小时前
初识MYSQL —— 数据库基础
android·数据库·mysql
风起云涌~5 小时前
【Android】浅谈androidx.startup.InitializationProvider
android