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)
要在 运行 完整 make 时将模块添加为系统的一部分,您必须将其添加到设备 makefile 中,或者 device.mk 一行像这样:PRODUCT_PACKAGES += MyTest
通过mmm
构建特定模块时,您必须运行make snod
重新生成system.img
您可以使用 adb sync
而不是像第 2 步那样闪烁 system.img
。这会将任何更改的文件推送到设备。您可能需要 运行 adb reboot
,或至少 adb shell stop && adb shell start
之后。
我正在尝试开发一个放在 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)
要在 运行 完整 make 时将模块添加为系统的一部分,您必须将其添加到设备 makefile 中,或者 device.mk 一行像这样:
PRODUCT_PACKAGES += MyTest
通过
mmm
构建特定模块时,您必须运行make snod
重新生成system.img
您可以使用
adb sync
而不是像第 2 步那样闪烁system.img
。这会将任何更改的文件推送到设备。您可能需要 运行adb reboot
,或至少adb shell stop && adb shell start
之后。