Android AOSP应用程序开发工作流有什么简单的方法吗?
我正在尝试开发一个放在aosp源代码树中的应用程序。它使用aosp构建的系统,并带有一些本机代码。它也是一个系统应用程序。但开发工作流有点烦人:我正在先修改我的应用程序代码。然后转到aosp目录,运行mmm命令,然后使用make命令生成系统映像并将其闪存到我的android开发板。然后运行应用程序进行测试并检查logcat,然后返回修改代码…Android AOSP应用程序开发工作流有什么简单的方法吗?,android,android-ndk,android-source,unsatisfiedlinkerror,android.mk,Android,Android Ndk,Android Source,Unsatisfiedlinkerror,Android.mk,我正在尝试开发一个放在aosp源代码树中的应用程序。它使用aosp构建的系统,并带有一些本机代码。它也是一个系统应用程序。但开发工作流有点烦人:我正在先修改我的应用程序代码。然后转到aosp目录,运行mmm命令,然后使用make命令生成系统映像并将其闪存到我的android开发板。然后运行应用程序进行测试并检查logcat,然后返回修改代码… 开发系统应用程序是否有其他工作流 我尝试过以下方法: Android.mk中包含以下行: LOCAL_CERTIFICATE := platform LO
开发系统应用程序是否有其他工作流 我尝试过以下方法: Android.mk中包含以下行:
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
我无法使用内置目录中的adb安装install app apk文件
如果我注释掉这两行,并设置LOCAL\u MODULE\u TAGS:=tests
,那么我可以使用adb install命令安装apk。但应用程序不是系统应用程序,无法访问某些本机api
我的应用程序有一些本机代码(不是预构建库),aosp build apk但没有我的库。因此我的应用程序无法运行,出现错误:
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]]]找不到“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))
libmytest_jni库的Android.mk:
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)
要在运行full make时将模块添加为系统的一部分,必须将其添加到设备makefile或device.mk中,如下所示:PRODUCT\u PACKAGES+=MyTest
通过mmm
构建特定模块时,必须运行make snod
重新生成system.img
您可以使用adb sync
,而不是像步骤2中那样闪烁system.img
。这会将任何更改的文件推送到设备。您可能需要运行adb reboot
,或者至少在之后运行adb shell stop和&adb shell start
你好,谢谢你的回答。adb sync
救了我一命