我正在尝试使用这些驱动程序提供的共享库为我的 android 应用程序编译 ndk 模块: http ://www.extendo-printer.de/fileadmin/user_upload/extendo/Drivers/X-56-Hengstler-Extendo-LinuxDrivers -S684018-R2-V1_01-FINAL-2009JUL15.zip
我可以使用默认值编译(使用 Hello JNI 示例)。但是,当我将代码添加到我需要使用的.so 库的 C 文件中时,我得到编译错误,指出它找不到库中定义的方法。当我尝试将它包含在 LOCAL_SRC_FILES 的 Android.mk 中时,我在构建时收到警告(不支持的文件扩展名)但它构建了,但我的本机方法调用失败(java.lang 链接错误)。有没有一种适当的方法来包含 .so 而不是在您的本机 C 代码中引用它的函数?
当前的 Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := x56-jni
LOCAL_LDLIBS := libExoApi.so
LOCAL_SRC_FILES := x56-jni.c
include $(BUILD_SHARED_LIBRARY)
我尝试使用 LOCAL_SHARED_LIBRARIES 以及相同的构建错误。我还尝试使用“,”和 \ 语法添加到如上所述的 LOCAL_SRC_FILES (LOCAL_SRC_FILES := x56-jni.c libExoApi.so)。
更新 我已将 Android.mk 更新为:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libExoApi
LOCAL_SRC_FILES := libExoApi.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := x56-jni
LOCAL_LDLIBS := libExoApi.so
LOCAL_SRC_FILES := x56-jni.c
LOCAL_SHARED_LIBRARIES := libExoApi
include $(BUILD_SHARED_LIBRARY)
这失败了:
[exec] Unable to recognise the format of the input file `/var/folders/_6/6jjydzjs457fnpsc9_5cgl980000gn/T//michael/usbserial-generated/libs/armeabi/libExoApi.so'