在aosp中添加或删除应用

1,351 阅读1分钟

添加应用

apk形式和源码形式都需要在frameworks/base/packages/ 目录下创建项目目录,我这里创建的项目名称为EyeProtect。

apk的形式

  • 第一步

编写Android.mk文件

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
###############LOCAL_MODULE是指模块名称,不一定要和文件夹同名
LOCAL_MODULE := EyeProtect 
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := EyeProtect_V1.1.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGES_SUFFIX)
LOCAL_CERTIFICATE:=platform
LOCAL_DEX_PREOPT := false#
LOCAL_MODULE_PATH:=$(LOCAL_PATH)
include $(BUILD_PREBUILT)
  • 第二步

将编译好的apk和Android.mk文件放到frameworks/base/packages/EyeProtect/ 目录下。

  • 第三步

在系统mk文件中添加EyeProtect模块。系统mk文件通常在device/qcom/<对应平台>/***.mk。在mk文件的最后加上

PRODUCT_PACKAGES += EyeProtect

源码形式

与apk的形式大同小异,主要差别就是apk有无提前编译好。

  • 第一步

编写Android.mk文件

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := EyeProtect
LOCAL_MODULE_TAGS := optional
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PRIVILEGED_MODULE := true
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
  • 第二步

将项目的src目录、res目录、AndroidManifest.xml文件和Android.mk放到frameworks/base/packages/EyeProtect/ 目录下。

  • 第三步

在系统mk文件中添加EyeProtect模块。系统mk文件通常在device/qcom/<对应平台>/***.mk。在mk文件的最后加上

PRODUCT_PACKAGES += EyeProtect

项目引用本地aar文件、jar包

LOCAL_STATIC_JAVA_LIBRARIES += HeadPoseLibrary \
                                                                          Glide \
                                                                          android-support-v4include
$(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += HeadPoseLibrary:libs/headposelibrary.aar \ 
                                                                                                 Glide:libs/glide-full-4.7.0.jar \
include $(BUILD_MULTI_PREBUILT)

项目引入asset资源

LOCAL_ASSET_FILES += $(call find-subdir-assets assets)

项目引用本地so文件

将libc++_shared.so和libHeadPose.so文件放到frameworks/base/packages/EyeProtect/libs/arm64-v8a/ 目录下(没有该目录则创建,arm64-v8a为cpu类型)。

LOCAL_JNI_SHARED_LIBRARIES += libc++_shared libHeadPose

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libc++_shared
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_SRC_FILES := libs/arm64-v8a/libc++_shared.so
LOCAL_MULTILIB = 64
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_PATH := $(TARGET_OUT)/lib64
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libHeadPose
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_SRC_FILES := libs/arm64-v8a/libHeadPose.so
LOCAL_MULTILIB = 64
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_PATH := $(TARGET_OUT)/lib64
include $(BUILD_PREBUILT)

删除应用

在系统mk文件中移除应用的模块的引用,加#号注释掉就好。

#PRODUCT_PACKAGES += EyeProtect