Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AOSP应用程序开发工作流有什么简单的方法吗?_Android_Android Ndk_Android Source_Unsatisfiedlinkerror_Android.mk - Fatal编程技术网

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

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

我正在尝试开发一个放在aosp源代码树中的应用程序。它使用aosp构建的系统,并带有一些本机代码。它也是一个系统应用程序。但开发工作流有点烦人:我正在先修改我的应用程序代码。然后转到aosp目录,运行mmm命令,然后使用make命令生成系统映像并将其闪存到我的android开发板。然后运行应用程序进行测试并检查logcat,然后返回修改代码…
开发系统应用程序是否有其他工作流

我尝试过以下方法:

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
    救了我一命