我们正在尝试使用 AOSP 的 master 分支开发自定义 ROM。我们已经在 AOSP 提供的模拟器上成功构建并运行了编译后的镜像。现在我们正在尝试在 AOSP 中添加一个应用程序,以便 AOSP 分支编译并运行其中的应用程序,这意味着当我们运行 android 版本时,我们新添加的应用程序将充当默认/系统应用程序。
我们尝试使用以下步骤来做到这一点,但失败了:
App_name文件夹放置到 /packages/apps注意:App_name是使用 android studio 开发的应用程序文件夹,存在于 Android-Studio Projects 文件夹中。
执行完这些步骤后,我们编译了整个源代码/AOSP,最终编译失败。
有人可以帮我吗??
要将默认应用程序添加到 AOSP,您应该在packages/apps(目录名称无关紧要)中创建一个具有任意名称的目录,然后您应该将必要的代码和资源放入其中。注意 AOSP 构建系统不使用 Gradle,因此您不需要复制 gradle 构建文件(如 build.gradle 和 setting.gradle 等)。
对于典型的应用程序,您应该创建以下目录:
您的AndroidManifest.xml文件应该添加到您的目录顶部。放置您的代码和资源后,创建一个Android.mk文件并在其中写入以下几行:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := <Name of your app>
LOCAL_SDK_VERSION := current
LOCAL_SRC_FILES := $(call all-java-files-under, src)
# Include libraries
LOCAL_JAVA_LIBRARIES := <Java lib dependencies>
LOCAL_STATIC_JAVA_LIBRARIES := android-common
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_ASSETS_DIR := $(LOCAL_PATH)/assets
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat
include $(BUILD_PACKAGE)
Run Code Online (Sandbox Code Playgroud)
LOCAL_PACKAGE_NAME 是您的应用程序的名称(例如 camera , app1 ,...),您应该将此名称添加到/build/target/product/core.mk(无文件夹名称,文件夹名称不重要)。
LOCAL_SRC_FILES 是指向 Java 代码的指针。
LOCAL_JAVA_LIBRARIES :如果您的项目有 java lib 依赖项,请在此处引用。
LOCAL_RESOURCE_DIR 是 res 目录的地址
LOCAL_ASSETS_DIR 是资产目录的地址
最后构建您的应用程序并将其添加到系统映像。使用这些命令
make <name of your app>
make snod
Run Code Online (Sandbox Code Playgroud)
<name of your app>是LOCAL_PACKAGE_NAME您Android.mk文件中的值。您不需要使用类似make -j8. 只需构建您的应用程序并将其添加到系统映像。默认应用程序放置在只读系统分区中。
| 归档时间: |
|
| 查看次数: |
5222 次 |
| 最近记录: |