我们正在尝试使用AOSP的主分支开发自定义ROM。我们已经在AOSP提供的仿真器上成功构建并运行了编译图像。 现在我们尝试在AOSP中添加一个应用程序,以便AOSP分支编译并运行其中的应用程序,这意味着当我们运行android版本时,我们新添加的应用程序将充当默认/系统应用程序。
我们已尝试使用以下步骤执行此操作,但失败了:
App_name
文件夹放到/ packages / apps 注意:App_name
是使用android studio开发的应用程序文件夹,显示在Android-Studio Projects文件夹中。
执行这些步骤后,我们编译整个源代码/ AOSP,最终编译失败。
有人可以帮帮我吗?
答案 0 :(得分:1)
要向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)
LOCAL_PACKAGE_NAME是您的应用的名称(对于考试相机,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
<name of your app>
是LOCAL_PACKAGE_NAME
文件中Android.mk
的值。您不需要使用make -j8
之类的东西构建整个AOSP构建树。只需构建您的应用程序并将其添加到系统映像。默认应用程序放在只读系统分区中。