AOSP 上手 day2:去掉原生 Launcher 中的 google 搜索栏
引言:
day1 运行完后,咱们的 Android 10 的 aosp 是这样的:

现在的需求是:去掉上面的这个 google 搜索框

很多产品,比如用于仓库,电商,物流的 pda 等,更多的是考虑功能性和稳定性,UI 的美观和易用性是其次的。这些产品一般是不会重新开发和定制 Launcher 的,但是会对 Launcher 做一些修改,比如一个常见的需求是: 去掉原生 Launcher 中的 google 搜索栏。
再加上 google 搜索栏在中国是没有办法使用的。在中国销售的产品,肯定是要把它去掉的。
修改方法:
第一步:注释掉布局内的文件
修改文件 packages/apps/Launcher3/res/layout/search_container_workspace.xml
,将以下内容注释掉:
ini
<!-- <fragment android:name="com.android.launcher3.qsb.QsbContainerView$QsbFragment"
android:layout_width="match_parent"
android:tag="qsb_view"
android:layout_height="match_parent"/> -->
如下:
第二步:注释掉相关java代码中的文件
修改文件:packages/apps/Launcher3/src/com/android/launcher3/Workspace.java
将以下内容注释掉
ini
// CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, firstPage.getCountX(), 1);
// lp.canReorder = false;
// if (!firstPage.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true)) {
// Log.e(TAG, "Failed to add to item at (0, 0) to CellLayout");
// }
如下:
第三步:重新编译源码,启动模拟器
go
make -j16
emulator
可以看到 Google 搜索框没有了。

总结
为什么这么改就可以去掉这个Google 搜索栏了?
其实办法就一个------读源码。
Launcher 也是一个 Android 应用,和我们平时开发的 App 没有本质的区别。 就像我们接手别人开发的项目,去解决项目中的 bug,添加新的需求是一样的。
Android Framework 不同的是,代码量大,涉及知识广泛,App 开发同学如果没有人指导,阅读起来比较吃力。
后续内容我们一起由浅入深,步步分解,慢慢解开 Android Framework 的神秘面纱。