我想使用使用 Gnu 构建工具(gnu makefile)的大型第三方本机库制作一个 Android 应用程序。
我的问题是如何为这些库编写“Android.mk”文件,以便使用 Android 构建系统或 Android NDK 构建它们。
提前致谢
我想使用使用 Gnu 构建工具(gnu makefile)的大型第三方本机库制作一个 Android 应用程序。
我的问题是如何为这些库编写“Android.mk”文件,以便使用 Android 构建系统或 Android NDK 构建它们。
提前致谢
唯一可行的方法是编写 NDK 生成文件。许多大型图书馆都是以这种方式移植的。通常您应该运行configure
脚本来生成 config.h 和 config.mak 文件。您将使用 config.mak 列出您的来源。网上有一些教程可以移植一些使用 Android 的 NDK 构建的流行库。我在 freetype、ffmpeg、SDL、DevIL 等方面取得了成功。
据我了解,您需要将 makefile 转换为 android 格式 :( 并使用 ndk_buidl 来构建它们
最新版本的 ndk 允许您生成一个独立的工具链,该工具链封装了大部分 android 的独特性,以便可以像普通 gcc 和支持程序一样调用它。这有点适合与现有的项目构建系统一起使用——尽管假设能够在主机上执行目标功能测试代码的配置脚本将失败,就像它们在任何交叉编译情况下一样。
您可以使用以下技巧:下载agcc,然后使用
./configure CC=agcc CXX=agcc --host=arm-linux-androideabi && make
. 之后像这样创建简单jni/Android.mk
:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := jni.cpp # this file will provide native methods for java part
LOCAL_LDLIBS += libYourLibraryBuiltWithGNUToolchain.a
LOCAL_MODULE := YourSoLibrary
include $(BUILD_SHARED_LIBRARY)
之后,您可以使用 ndk-build 脚本构建您的 so 库。