AOSP 应用程序开发工作流程有什么简单的方法吗?

any easy way AOSP app development workflow?

我正在尝试开发一个放在 aosp 源代码中的应用程序 tree.it 使用 aosp 构建的系统,并使用一些本机代码。它也是一个系统 app.but 开发工作流程有点烦人:我修改我的应用程序代码 first.then go aosp dir,运行 mmm 命令,然后使用 make 命令构建系统映像并将其闪存到我的 android 开发 board.then 运行 应用程序用于测试和检查 logcat,然后返回修改代码....
开发系统应用程序还有其他工作流程吗?

我试过这些方法:

Android.mk 这些行:

LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true

我无法使用 adb install 安装在构建目录中找到的应用程序 apk 文件。

如果我注释掉那两行,并设置 LOCAL_MODULE_TAGS := tests,那么我可以使用 adb install 命令安装 apk。但应用不是系统应用,无法访问某些原生应用api。

我的应用程序有一些本机代码。(不是预构建的库),aosp 构建 apk 但没有我的 library.so 我的应用程序不能 运行 错误: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip 文件 "/data

/app/com.mytest.app-IpmPY1ehtNYFMP3BCMb8HA==/base.apk"],nativeLibraryDirectories=[/data/app/com.mytest.app-IpmPY1ehtNYFMP3BCMb8HA==/lib/arm64, /system/lib64, /vendor/lib64]]] couldn't find "libmytest_jni.so"

然后我正在检查我的设备文件系统,aosp 没有将我的库打包到 system.img。

这里是 Android.mk 应用:

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

LOCAL_SRC_FILES := \
            $(call all-subdir-java-files)

# LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_TAGS := tests
LOCAL_PACKAGE_NAME := Mytest

LOCAL_SDK_VERSION := current

# with this two lines,i can not use adb install to update my app 
# without ,can not access some system api
# LOCAL_CERTIFICATE := platform
# LOCAL_PRIVILEGED_MODULE := true
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_DEX_PREOPT := false

LOCAL_JNI_LIBRARIES := libmytest_jni
LOCAL_REQUIRED_MODULES := libmytest_jni

include $(BUILD_PACKAGE)

#jni
include $(CLEAR_VARS)
include $(call all-makefiles-under,$(LOCAL_PATH)) 

Android.mk 用于 libmytest_jni 图书馆:

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

# with this line, library not pack into system.img
# without this line,is pack into system.img,but i must refulsh image file to test
# whatever with or without,library is not pack into apk file.
# LOCAL_MODULE_TAGS := tests

LOCAL_MODULE:= libmytest_jni

LOCAL_SRC_FILES:= \
    main_jni.cpp

LOCAL_SHARED_LIBRARIES := \
    libnativehelper \
    libcutils \
    libutils \
    liblog

LOCAL_C_INCLUDES += \
    $(JNI_H_INCLUDE)

LOCAL_CFLAGS +=

include $(BUILD_SHARED_LIBRARY)
  1. 要在 运行 完整 make 时将模块添加为系统的一部分,您必须将其添加到设备 makefile 中,或者 device.mk 一行像这样:PRODUCT_PACKAGES += MyTest

  2. 通过mmm构建特定模块时,您必须运行make snod重新生成system.img

  3. 您可以使用 adb sync 而不是像第 2 步那样闪烁 system.img。这会将任何更改的文件推送到设备。您可能需要 运行 adb reboot,或至少 adb shell stop && adb shell start 之后。