ndk編譯靜態庫的方法主要有三種:
1、把代碼放到:“D:\Android\android-ndk-r9d\sources”下面跟系統的 NDK_MODULE_PATH 一起編譯;
2、放到用戶自己工程對應的jni目錄下面
3、直接生產靜態庫
代碼和視頻百度雲地址:
工具/原料
eclipse
ADT adt-bundle-windows-x86_64-20140321
NDK android-ndk-r9d
一、將代碼放到“D:\Android\android-ndk-r9d\sources”
將代碼放到 “D:\Android\android-ndk-r9d\sources”下面:
如在“"D:\Android\android-ndk-r9d\sources\third_party\libCode1\fkCode.cpp"”中添加代碼:
int fkLibCode1()
{
return 100;
}
在“"D:\Android\android-ndk-r9d\sources\third_party\libCode1\Android.mk"”中增加:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= code
LOCAL_SRC_FILES:= fkCode.cpp
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(BUILD_STATIC_LIBRARY)
新建一個 android 工程如:“LibComplie”,右鍵工程 Android Tools 下面的 Add Native Support,在工程目錄下的jni下的android.mk 添加如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := LibComplie
LOCAL_SRC_FILES := LibComplie.cpp
LOCAL_STATIC_LIBRARIES := code
include $(BUILD_SHARED_LIBRARY)
$(call import-module, third_party/libCode1)
Ctrl+B編譯,便可以再 工程目錄obj下看到生產的靜態庫, .a文件,如圖:
jni目錄下面
將“"D:\Android\android-ndk-r9d\sources\third_party\libCode1"”目錄剪切到自己的工程目錄jni\libsrc下面如:
在android.mk中增加:
$(call import-add-path,$(LOCAL_PATH)/libsrc)
將 當前工作目錄下的 libsrc 路徑添加到 NDK_MODULE_PATH 環境變量中,後編譯(Ctrl+B),結果如下
直接生產靜態庫
直接把要生成的靜態庫的模塊放到jni下面,然後編譯,即可,如下:
總結
注意事項
一般的項目靜態庫生產後,保存起來,不需要每次都編譯,用的時候只需要鏈接就可以了,關於如何鏈接,可以參考我的:“ndk 鏈接不同類型的 CPU/ABI 的靜態庫的方法”