在Android Open Source Project (AOSP) 中,添加或移除预置的应用(包括 APKs、so 库、jar 包、bin 文件以及配置文件等)主要涉及到对 Android 构建系统的修改,特别是 Android.mk 文件、Makefile 文件、Android.bp 文件(如果使用 Soong 构建系统)以及设备特定的配置文件如 device.mk 或 AndroidProducts.mk。
移除预置应用
-
从 PRODUCT_PACKAGES 中移除
PRODUCT_PACKAGES是一个在 device.mk 或产品定义文件(如 AndroidProducts.mk)中定义的变量,列出了要包含在产品构建中的所有 APKs 和其他二进制文件。要从产品中移除应用,只需从该列表中删除相应的条目。# 假设要移除的应用名为 MyPreinstalledApp PRODUCT_PACKAGES := \ ... # MyPreinstalledApp \ # 注释或删除这行 ... -
从 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 包等,以及修改构建文件来包含这些文件。
-
准备 APK、so 库等
确保你有 APK、so 库等文件的正确版本,并放在合适的位置(通常是设备的 vendor 或 product 目录下)。
-
修改 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: [], } -
将模块添加到 PRODUCT_PACKAGES
在 device.mk 或产品定义文件中,将你的新模块添加到
PRODUCT_PACKAGES列表中。PRODUCT_PACKAGES += \ MyNewApp \ libmynewlib -
处理配置文件
如果需要,你还需要修改或添加配置文件,如 permissions.xml、manifests 或其他系统服务配置,以确保你的应用或服务能够正确运行。
通过这些步骤,你可以在 AOSP 中添加或移除预置应用。记得在修改后重新构建系统镜像,并在设备上测试更改以确保一切正常。