我正在尝试使用这些驱动程序提供的共享库为我的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示例)。但是,当我添加我的代码时,我的C文件引用了一个.so库我需要使用我得到编译错误,说明它无法找到库中定义的方法。当我尝试将它包含在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以及相同的构建错误。我也尝试使用“,”以及\ syntax来添加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'