AOSP开发:移除和添加预置应用

511 阅读2分钟

在Android Open Source Project (AOSP) 中,添加或移除预置的应用(包括 APKs、so 库、jar 包、bin 文件以及配置文件等)主要涉及到对 Android 构建系统的修改,特别是 Android.mk 文件、Makefile 文件、Android.bp 文件(如果使用 Soong 构建系统)以及设备特定的配置文件如 device.mk 或 AndroidProducts.mk。

移除预置应用

  1. 从 PRODUCT_PACKAGES 中移除

    PRODUCT_PACKAGES 是一个在 device.mk 或产品定义文件(如 AndroidProducts.mk)中定义的变量,列出了要包含在产品构建中的所有 APKs 和其他二进制文件。要从产品中移除应用,只需从该列表中删除相应的条目。

    # 假设要移除的应用名为 MyPreinstalledApp
    PRODUCT_PACKAGES := \
        ...
        # MyPreinstalledApp \  # 注释或删除这行
        ...
    
  2. 从 LOCAL_OVERRIDES_PACKAGES 中移除

    LOCAL_OVERRIDES_PACKAGES 在 Android.mk 文件中定义,用于指定某个 APK 应该被另一个 APK 覆盖。如果你从 PRODUCT_PACKAGES 移除了一个 APK,并且这个 APK 原本被另一个 APK 覆盖,那么可能还需要从覆盖它的 APK 的 LOCAL_OVERRIDES_PACKAGES 中移除原 APK 的名称。

    # 在某个 Android.mk 文件中
    LOCAL_MODULE := MyReplacementApp
    LOCAL_SRC_FILES := $(call all-java-files-under, src)
    LOCAL_OVERRIDES_PACKAGES := \
        # MyPreinstalledApp \  # 注释或删除这行
        ...
    

添加指定应用

添加应用涉及几个步骤,包括准备 APK、so 库、jar 包等,以及修改构建文件来包含这些文件。

  1. 准备 APK、so 库等

    确保你有 APK、so 库等文件的正确版本,并放在合适的位置(通常是设备的 vendor 或 product 目录下)。

  2. 修改 Android.mk 或 Android.bp

    如果你使用的是基于 Makefile 的构建系统,需要创建或修改 Android.mk 文件。如果是基于 Soong 的构建系统,则修改 Android.bp 文件。

    Android.mk 示例

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    LOCAL_MODULE := MyNewApp
    LOCAL_SRC_FILES := MyNewApp.apk
    LOCAL_MODULE_CLASS := APPS
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    LOCAL_CERTIFICATE := PRESIGNED
    include $(BUILD_PREBUILT)
    
    # 如果需要包含 so 库
    include $(CLEAR_VARS)
    LOCAL_MODULE := libmynewlib
    LOCAL_SRC_FILES := libs/armeabi-v7a/libmynewlib.so
    LOCAL_MODULE_CLASS := SHARED_LIBRARIES
    include $(BUILD_PREBUILT)
    

    Android.bp 示例

    android_app {
        name: "MyNewApp",
        srcs: ["MyNewApp.apk"],
        certificate: "PRESIGNED",
        product_specific: true,
    }
    
    cc_prebuilt_library_shared {
        name: "libmynewlib",
        srcs: ["libs/armeabi-v7a/libmynewlib.so"],
        shared_libs: [],
    }
    
  3. 将模块添加到 PRODUCT_PACKAGES

    在 device.mk 或产品定义文件中,将你的新模块添加到 PRODUCT_PACKAGES 列表中。

    PRODUCT_PACKAGES += \
        MyNewApp \
        libmynewlib
    
  4. 处理配置文件

    如果需要,你还需要修改或添加配置文件,如 permissions.xml、manifests 或其他系统服务配置,以确保你的应用或服务能够正确运行。

通过这些步骤,你可以在 AOSP 中添加或移除预置应用。记得在修改后重新构建系统镜像,并在设备上测试更改以确保一切正常。