在jni ndk build中包含共享动态库

时间:2013-09-19 21:34:23

标签: android android-ndk java-native-interface titanium

我正在尝试使用这些驱动程序提供的共享库为我的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'

0 个答案:

没有答案