如何在 AOSP 中添加应用程序?

Kom*_*kar 6 android-source

我们正在尝试使用 AOSP 的 master 分支开发自定义 ROM。我们已经在 AOSP 提供的模拟器上成功构建并运行了编译后的镜像。现在我们正在尝试在 AOSP 中添加一个应用程序,以便 AOSP 分支编译并运行其中的应用程序,这意味着当我们运行 android 版本时,我们新添加的应用程序将充当默认/系统应用程序。

我们尝试使用以下步骤来做到这一点,但失败了:

  1. App_name文件夹放置到 /packages/apps
  2. 将 Android.mk 添加到 /packages/apps/App_name/
  3. 将 App_name 条目添加到 /build/target/product/core.mk PRODUCT_PACKAGES := \ ... \ SomeApp \ App_name

注意App_name是使用 android studio 开发的应用程序文件夹,存在于 Android-Studio Projects 文件夹中。

执行完这些步骤后,我们编译了整个源代码/AOSP,最终编译失败。

有人可以帮我吗??

ofs*_*sen 7

要将默认应用程序添加到 AOSP,您应该在packages/apps(目录名称无关紧要)中创建一个具有任意名称的目录,然后您应该将必要的代码和资源放入其中。注意 AOSP 构建系统不使用 Gradle,因此您不需要复制 gradle 构建文件(如 build.gradle 和 setting.gradle 等)。

对于典型的应用程序,您应该创建以下目录:

  • src : 把你的java代码放在这里。
  • res :放置您的资源目录,例如 drawable , layout ,...
  • 资产:如果您的项目有任何资产文件,请将它们放在此文件夹中

您的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_NAMEAndroid.mk文件中的值。您不需要使用类似make -j8. 只需构建您的应用程序并将其添加到系统映像。默认应用程序放置在只读系统分区中。