我对我目前的尝试有点困惑:我想通过NDK交叉编译一个C库用于Android,这样我就可以创建一个JNI包装器并从我的Android java代码调用它的一些函数。
-
我遵循这个指南来交叉编译libopus(我想要包含在我的项目中的库):http://mortoray.com/2012/08/21/android-ndk-cross-compile-setup-libpng-and-freetype/这意味着我目前在/opt/android-ext/有一个独立的工具链,其中包含我交叉编译的库(libopus)。libopus。所以等) .
-
我也已经在我的Android项目上有一个jni文件夹,其中包含一些我想要的jni绑定的C代码,我可以从我的Java代码中调用,但它什么也不做(我可以调用它,但它是一个空白函数)。这意味着在我的项目中,有一个带有"libopusUtilsNative"的/lib/armeabi目录。
我如何添加我刚刚交叉编译到项目的库,以便(例如)我可以只是做一个#include调用的C源代码文件,我已经有并获得访问库函数?我有点不知道如何:
将我交叉编译的库包含到我的项目中
如何使包装器代码我创建包括它(我猜这与添加一些代码到我的Android有关。
你链接到的指南包含一个如何修改Android的示例。为你的JNI库(或者在这种情况下,一个本地应用程序)链接到交叉编译的库:
PLATFORM_PREFIX := /opt/android-ext/
LOCAL_PATH := $(PLATFORM_PREFIX)/lib
include $(CLEAR_VARS)
LOCAL_MODULE := libpng
LOCAL_SRC_FILES := libpng.a
include $(PREBUILT_STATIC_LIBRARY)
# The in your project add libpng
LOCAL_STATIC_LIBRARIES := android_native_app_glue libpng
如果你想静态连接libopus,你就会这么做。或者如果你想链接到共享库,使用这样的东西:在Android NDK项目中使用我自己预构建的共享库