如何将 AOSP 系统 UI 替换为自定义 UI?

问题描述 投票:0回答:3

AOSP 中的 SysUI 只是一个应用程序。但与 Android 框架非常紧密。是否有推荐的方法来禁用普通 SysUI 并用完全独立的自定义 apk 替换此功能? 我相信这应该是可行的,因为 Wear OS 似乎做了类似的事情。

android android-source wear-os android-wear-2.0 android-automotive
3个回答
2
投票

是的。您可以将其替换为自定义的。

SysUI 实现 IStatusBar 并通过 IStatusBarService#registerStatusBar 将其注册到框架,并创建一个 StatusBarView 并将其添加到 WindowManager,类型为 WindowManager.LayoutParams.TYPE_STATUS_BAR。如果你和SysUI做同样的逻辑,你就可以替换它。

WearOS 仅实现了 SysUI 的两个功能:

  1. 显示和管理通知。它实现了NotificationListenerService。并默认启用监听器,或者要求用户确认。然后它将收到所有通知。
  2. 一些切换。

所以你可以像 AOSP 一样实现一个全功能的 SystemUI,但它对框架来说有点紧。如果 IStatusBar 已更改,您也应该更改您的应用程序。 或者你可以实现一个小功能SystemUI,比如WearOS。 NotificationListenerService 稳定。


0
投票

对于不耐烦的人:

  • 让使用LOCAL_OVERRIDES_PACKAGES

      LOCAL_SRC_FILES := new_system_ui.apk
      LOCAL_OVERRIDES_PACKAGES := SystemUI 
    

在您的 Android.mk 文件中

详情: 让我们使用这个 Android.mk 文件作为示例,从这里如何在 AOSP 源代码中添加预构建应用程序(系统应用程序)

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := Signal
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := Signal-website-universal-release-4.55.8.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)

假设您有一个 new_system_ui.apk (可能是带有您的自定义代码的 system_ui 的分支)

创建自定义 Android.mk 以使用“new_system_ui.apk”覆盖默认的“system_ui.apk”

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := Signal
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := new_system_ui.apk <-------YOUR APK---->
LOCAL_OVERRIDES_PACKAGES := SystemUI <-------HERE-------->
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)

补充说明:你如何知道一切都是对的:

  • “com.android.systemui”将是您决定使用
    adb shell pm list packages
     之前执行 
    LOCAL_OVERRIDES_PACKAGES := SystemUI
  • 的结果的一部分
  • 一旦您开始使用
    LOCAL_OVERRIDES_PACKAGES := SystemUI
    并且构建/刷新图像,就不会再有“com.android.systemui”

0
投票

我正在尝试为 VMOS Pro 创建自定义 Android 9.0 ROM,但我在任何地方都找不到系统 UI 导航栏 .png 文件。是的,VM 已 root,是的,我在 systemui APK res 文件夹中,我使用了 co-pilot、Google、bing 等,但找不到任何东西。我正在尝试将默认导航栏替换为我的项目,但我只能找到汽车模式导航栏。有人可以帮助我吗?

© www.soinside.com 2019 - 2024. All rights reserved.