如何从AOSP的android源代码中删除主屏幕的谷歌搜索栏

Posted

技术标签:

【中文标题】如何从AOSP的android源代码中删除主屏幕的谷歌搜索栏【英文标题】:How to remove google search bar of home screen from android source code of AOSP 【发布时间】:2022-01-03 11:30:09 【问题描述】:

我已经在我的系统上安装了 android 开源项目并构建了它并运行了模拟器。它在主屏幕顶部显示默认的谷歌搜索栏。我想从那里删除那个谷歌搜索栏以使主屏幕清晰。 为了删除,我修改了一个文件,但我不确定我必须修改哪个文件才能删除该部分。

我修改了一个 AndroidManifest.xml 文件,该文件位于“Android_AOSP/packages/apps/QuickSearchBox/AndroidManifest.xml”目录中,但该文件仅删除了搜索图标,但背景布局仍然显示在那里。 在编辑以下代码之前,上面的搜索布局与下面的谷歌搜索布局相同。

我刚刚注释了以下代码的一部分。

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2009 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.android.quicksearchbox" >

    <original-package android:name="com.android.quicksearchbox" />

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="28" />

    <uses-permission android:name="android.permission.GLOBAL_SEARCH" />

    <!-- Permissions needed by the default corpora. We request these instead of just relying on
         GLOBAL_SEARCH so that we can use the default corpora when not in the system
         partition. -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>

    <!-- Permissions used by GoogleSearch. -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />

    <application android:label="@string/app_name"
                 android:icon="@mipmap/search_app_icon"
                 android:name=".QsbApplicationWrapper"
                 android:theme="@style/Theme.QuickSearchBox"
                 android:hardwareAccelerated="true">
        <uses-library android:name="org.apache.http.legacy" android:required="false" />
<!--
        <activity android:name=".SearchActivity"
                  android:label="@string/app_name"
                  android:launchMode="singleTask"
                  android:theme="@style/Theme.QuickSearchBox.Search">
 -->                 
            <!-- Show app icon in Launcher. -->
<!--
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
-->            <!-- Handle global search. -->
<!--            <intent-filter>
                <action android:name="android.search.action.GLOBAL_SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.search.action.GLOBAL_SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="com.android.launcher.toolbar_icon" android:resource="@drawable/ic_google_logo_normal" />
        </activity>

-->
        <receiver android:name=".SearchWidgetProvider"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data android:name="android.appwidget.provider" android:resource="@xml/search_widget_info" />
        </receiver>

        <activity android:name=".google.GoogleSearch"
                android:label="@string/google_search_label"
                android:icon="@mipmap/google_icon"
                android:theme="@android:style/Theme.NoDisplay"
                android:excludeFromRecents="true">
            <intent-filter>
                <action android:name="android.intent.action.WEB_SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="android.app.searchable"
                android:resource="@xml/google_searchable" />
        </activity>

        <provider android:name=".google.GoogleSuggestionProvider"
            android:label="@string/google_search_label"
            android:authorities="com.android.quicksearchbox.google"
            android:exported="true" />

    </application>
</manifest>

我已更改仅显示在给定图像文件中的选定代码。 并且在模拟器中显示的再次构建之后发生了更改。 我想从主屏幕中完全删除上述搜索布局,但它没有发生。 在编辑代码之前,它看起来与下面的搜索布局相同。 我还尝试通过评论清单标签部分中编写的所有代码。但它除了显示更改之外没有做任何更改。如果我删除这个文件,那么它将开始给出错误。 我已尝试删除完整的“QuickSearchBox”文件夹,但之后该部分没有发生任何更改。

【问题讨论】:

【参考方案1】:

这不是 Android 系统的一部分,它的 Launcher 应用程序和设计。我找不到专门的文档页面,但找到了一些教程how to make own Launcher app。您可以编写自己的或找到一些具有开源和“友好”许可证的 3rd-party,并通过删除此栏(如果甚至存在)来修改它,然后您可以替换系统文件中的默认启动器应用程序

你做了什么:你刚刚修改了负责处理这个小部件操作的应用程序,实际上还有另一个应用程序(启动器)正在为自己的“桌面”设计实现这个小部件

【讨论】:

我是一个初学者,我正在尝试通过修改 AOSP 来构建我的自定义 rom,我已经安装了 android 开源项目 (AOSP) 版本 10,我正在尝试根据我的选择对其进行自定义。但我无法删除出现在主屏幕顶部的谷歌搜索栏。而且它也不能移动(我不能拖放它)也可以删除。它固定在屏幕上的那个位置。这不像其他可以在屏幕上添加或删除的小部件。我只想编辑这个 AOSP 的默认启动器来制作我的自定义 rom。 我已经使用以下命令安装了 AOSP python ~/.bin/repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r41 在构建 AOSP 之后,我在我的系统上得到了 These files,我正在对此进行修改。 我在这些来源中找到了Launcher3 应用程序,它可能是默认启动器。它在清单中只有一个 Activity,名为 Launcher,请检查它 我不知道启动器的哪个部分负责编辑主屏幕部分以从默认主屏幕中删除。我认为该布局是从任何 .xml 文件中显示的。但我无法找到包含该部分的文件。如果您有时间,可以通过whatsapp 或电子邮件与我联系:anurag.cs​​e016@gmail.com 很遗憾我不打算调查和修改这个应用程序,太多时间了。现在是你的工作,我刚刚为你指明了方向。也更容易将这个应用程序替换为其他一些“更简单”的启动器(开源或从 Play 商店下载到另一台设备上并导出做 APK)。请注意,在 srouces 的某个地方有一个指向默认启动器的“默认指针”,或者系统可能只使用一个且唯一的此类应用程序?值得一试,祝你好运【参考方案2】:

我以前删除默认主屏幕谷歌搜索框的方式是错误的。

我找到了删除它而不对代码进行太多更改的主要解决方案。 请按照以下步骤将其删除。

第 1 步:转到 AOSP 源目录中的以下目录

路径:packages/apps/Launcher3/src/com/android/launcher3/config/

第二步:打开名为“BaseFlags.java”的文件

第三步:找到下面这行代码,把“真”改成“假”

// Enable moving the QSB on the 0th screen of the workspace

public static final boolean QSB_ON_FIRST_SCREEN = false;    // For show 'home screen search bar' make it true. // By default it was true

第 4 步:保存文件。

第5步:制作源代码并检查结果。谷歌搜索栏被移除。

【讨论】:

以上是关于如何从AOSP的android源代码中删除主屏幕的谷歌搜索栏的主要内容,如果未能解决你的问题,请参考以下文章

从原生 Android 主屏幕小部件调用 Flutter (Dart) 代码

如何从 android 主屏幕小部件启动活动

如何在 AOSP 构建中设置默认启动器?

如何删除状态栏和主屏幕之间的分隔线/阴影?

如何从网页在主屏幕上添加 android 书签?

Android:通过 AOSP 源代码创建新的系统权限。