将 Android 源代码中的应用程序编译为 system/app

Make app in Android source compile to system/app

我正在尝试学习如何在 android 源代码中编译应用程序。该应用程序只是一个简单的 hello world 应用程序。我遵循了 Making an app in the Android Source compile into system/app instead of data/app? 和其他几个来源的说明。但是当我制作应用程序时,apk 文件被写入 obj/APPS 后缀中间而不是 system/app 并且在我启动时无法显示在模拟器中。请在下面找到 Android.mk 文件。

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := tests 

LOCAL_MODULE_PATH := system/app

LOCAL_UNINSTALLABLE_MODULE := true

LOCAL_SDK_VERSION := current

LOCAL_PACKAGE_NAME := MyApplication

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayout
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += android-support-design

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/appcompat/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/gridlayout/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/design/res

LOCAL_CERTIFICATE := platform

LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat:android.support.v7.gridlayout

include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)

include $(BUILD_MULTI_PREBUILT)

# Use the following include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

我通过转到 packages/apps 中的应用程序目录并执行 'mm' 来创建应用程序。我在这里遗漏了什么吗?

找出 BoardConfig.mk 并添加:

PRODUCT_PACKAGES += MyApplication

AOSP 构建系统将每隔 Android.mk 构建一次,但只有在 BoardConfig 中定义的包才会放入最终产品路径。

您必须从设备/"your preferred vendor"/"device_name"/aosp_"device Name".mk 文件

将应用程序模块添加到 PRODUCT_PACKAGE

它应该看起来像下面这样

$(call inherit-product, device/lge/hammerhead/full_hammerhead.mk)

PRODUCT_NAME := aosp_hammerhead

PRODUCT_PACKAGES += \
        Launcher3 \
    MyApplication \

变化不大。 Aosp 检查 /device/"vendor"/"your_device"/"your_platform"/base.mk 文件进行编译和 /device/"vendor"/"your_device"[=18= .mk 用于将 apk 安装到 /out/target/product/"your_device/system/app/" 您应该将您的应用程序名称添加到这两个文件中。 就我而言; aosp/device/qcom/qssi/base.mk 编译, aosp/device/qcom/common/base.mk 安装输出(apk)到/out/target/product/msm8953/system/app/