如何使用Android NDK构建第三方库

时间:2010-06-10 11:08:01

标签: android-ndk

如何使用android NDK编译第三方库?我正在编译一个包装器,它将JNI函数实现为共享库,这取决于另一个第三方库(HTK)。我不知道如何设置makefile。以下不起作用:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

include HTKLib/Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := gaitfuncs
LOCAL_SRC_FILES := gaitfuncs.c
%LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog

include $(BUILD_SHARED_LIBRARY)

然后第二个makefile应该构建一个我的共享lib链接到的静态库。如何正确包含这个subdir makefile?这是正确的做法吗?作为奖励:例如,是否有LOCAL_SRC_FILES变量的通配符以所有以.c结尾的文件为止。

谢谢!

2 个答案:

答案 0 :(得分:10)

我找到了解决方案:

JNIPATH := $(call my-dir)
LOCAL_PATH := $(JNIPATH)

include $(call all-subdir-makefiles)

LOCAL_PATH := $(JNIPATH)
include $(CLEAR_VARS)

LOCAL_MODULE    := gaitfuncs
LOCAL_SRC_FILES := gaitfuncs.c
LOCAL_STATIC_LIBRARIES := htk

include $(BUILD_SHARED_LIBRARY)

在调用subdir-makefiles函数之前调用CLEAR_VARS函数并不是很优雅;)

答案 1 :(得分:0)

在Android NDK文件夹的 documentation.html

看一下宏功能“my-dir”

  

返回最后包含 Makefile的路径,通常是   当前Android.mk的目录。这对于定义LOCAL_PATH非常有用   Android.mk的开头如下:

 LOCAL_PATH := $(call my-dir)

和宏功能“all-subdir-makefiles”

  

返回位于所有子目录中的Android.mk列表   目前的“我的主意”路径。