ndk?

Tags: 編譯, 靜態,

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文件,如圖:

ndk 編譯靜態庫

jni目錄下面

將“"D:\Android\android-ndk-r9d\sources\third_party\libCode1"”目錄剪切到自己的工程目錄jni\libsrc下面如:

ndk 編譯靜態庫

在android.mk中增加:

$(call import-add-path,$(LOCAL_PATH)/libsrc)

將 當前工作目錄下的 libsrc 路徑添加到 NDK_MODULE_PATH 環境變量中,後編譯(Ctrl+B),結果如下

ndk 編譯靜態庫

直接生產靜態庫

直接把要生成的靜態庫的模塊放到jni下面,然後編譯,即可,如下:

ndk 編譯靜態庫

總結

注意事項

一般的項目靜態庫生產後,保存起來,不需要每次都編譯,用的時候只需要鏈接就可以了,關於如何鏈接,可以參考我的:“ndk 鏈接不同類型的 CPU/ABI 的靜態庫的方法”

相關問題答案