我生成C++库使用Android SDK编译器使用手动静态库是不同的。结果是libMyUtils.a。的Android NDK:比预编译库中指定
我用我的Java/JNI测试应用程序如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyUtils
LOCAL_SRC_FILES := ../../../../libs/libMyUtils.a
include $(PREBUILT_STATIC_LIBRARY)
LOCAL_MODULE := AndroidTests
LOCAL_STATIC_LIBRARIES := MyUtils
include $(BUILD_SHARED_LIBRARY)
当我建立控制台显示以下内容:
[armeabi] Install : libMyUtils.so => libs/armeabi/libMyUtils.so
现在对于一些奇怪的原因,库.. /../../../libs/libMyUtils.a是几兆字节,但库libs/armeabi/libMyUtils.so只有5KB。它不应该是同一个图书馆吗?
当我运行我的测试应用程序,我得到UnsatisfiedLinkError。很显然,我所调用的本地函数不在库中。我究竟做错了什么?
你是怎么建立'../../../../ libs/libMyUtils.so'的? –
我使用cmake以及http://code.google.com/p/android-cmake/,所以我将cmake脚本更改为使用SHARED而不是STATIC。 – Emmanuel
是的,这是最简单的修复方法。 –