使用Android JNI調用第三方靜態庫並且生成靜態庫和動態庫(armeabi/arm64-v8a版本)的配置操作

假如要調用第三方庫libxxx.a
把第三方靜態庫的相關文件放置到jni目錄下
其Android.mk和Application的配置文件如下(NDK版本是android-ndk-r10d,注意新老版本命令上的一些不同,接下來會有說明):

Android.mk

LOCAL_PATH := $(call my-dir) #Android.mk的目錄路徑

include $(CLEAR_VARS) #清理LOCAL_xxx避免相互影響
LOCAL_MODULE := libxxx #第三方靜態庫名稱
LOCAL_SRC_FILES := libxxx.a #第三方靜態庫實際.a文件
include $(PREBUILT_STATIC_LIBRARY) #靜態態庫預編譯

include $(CLEAR_VARS)
LOCAL_MODULE    : = yyy #要生成的新靜/動態庫名稱
### Add all source file names to be included in lib separated by a whitespace
LOCAL_SRC_FILES := xxxx.cpp\
xxxxx.c #需要使用到的源文件(非第三方靜態庫文件)

#LOCAL_STATIC_LIBS := libxxx #靜態庫不編譯,鏈接調用就好(舊版NDK使用LIBS)
LOCAL_STATIC_LIBRARIES := libanr #新版用LIBRARIES,舊版用LIBS,否則會出現undefined reference to...錯誤

LOCAL_LDLIBS += -llog #支持__android_log_print
LOCAL_CPPFLAGS := -fexceptions #開啓異常控制

include $(BUILD_STATIC_LIBRARY) #生成靜態庫
include $(BUILD_SHARED_LIBRARY) #生成動態庫

Application.mk:

APP_STL := gnustl_static #使用STL庫
APP_CPPFLAGS += -fpermissive #兼容老的語法,使一些錯誤降爲警告
APP_ABI := armeabi arm64-v8a #選擇平臺,如果都需要生成用空格隔開
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章