交叉编译Android NDK的C库

时间:2013-01-14 18:07:21

标签: android android-ndk java-native-interface cross-compiling

我对我正在尝试的东西感到有点困惑:我想通过NDK交叉编译一个C库以便与Android一起使用,这样我就可以创建一个JNI包装器并从我的函数中调用它的一些功能Android java代码。

  • 我按照本指南交叉编译libopus(我希望包含在我的项目中的库):http://mortoray.com/2012/08/21/android-ndk-cross-compile-setup-libpng-and-freetype/这意味着我目前在/ opt / android-ext /上有一个独立的工具链,包含我交叉编译的库的lib文件夹(libopus.a,libopus.so等)

  • 我的Android项目中还有一个jni文件夹,其中包含一些带有我想要的JNI绑定的C代码,我可以从我的Java代码调用,但它什么都不做(我可以称之为但它是一个空白的功能)。这意味着在我的项目中,有一个带有“libopusUtilsNative.so”的/ lib / armeabi目录(包装器)。

我的问题是:

如何将我刚刚交叉编译的库添加到项目中,以便(例如)我可以在已有的C源代码文件上执行#include调用并访问库函数?我有点失落了如何:

  1. 将我交叉编译的库包含在我的项目中。

  2. 如何制作我创建的包装器代码包含它(我猜这与将某些代码添加到我的Android.mk文件有关,但我很无能为力。)

1 个答案:

答案 0 :(得分:1)

您链接到的指南包含一个示例,说明如何修改JNI库(或在他的情况下,本机应用程序)的Android.mk文件以链接到交叉编译的库:

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链接,那就是你如何做到这一点。或者,如果要链接共享库,请使用以下内容:Using my own prebuilt shared library in an Android NDK project