Android JNI接口MK腳本的編寫

目前網上通過JNI方式ndk編譯,mk文件寫法亂七八糟,沒有固定的寫法,讓人看不懂。所以我決定看一下官網是的說明。

直入主題吧:

AnAndroid.mkfile is written to describe your sources to the build system. More specifically:

The file is really a tiny GNU Makefile fragment that will be parsed one or more times by the build system. As such, you should try to minimize the variables you declare there and do not assume that anything is not defined during parsing.

The file syntax is designed to allow you to group your sources into 'modules'. A module is one of the following:

A static library.

A shared library.

A standalone executable.

這個是官網的描述,總結就是Android.mk文件就是用來源碼編譯成android系統識別的庫。

首先看一個簡單例子

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE? ? := hello-jni

LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

LOCAL_PATH := $(call my-dir)

獲取當前編譯對象的路徑,以下用到的路徑都是基于這個路徑做出的動作,LoCAL_PATH是一個變量,你可以隨便自己取一個名字(阿貓阿狗都行哦),$(call my-dir),這個是真正獲取當前路徑的方法。

include $(CLEAR_VARS)

include $(BUILD_SHARED_LIBRARY)/include $(BUILD_STATIC_LIBRARY)

這一組是成對出現的,前者是開始,后者是結束,其他動作都是在他們之間完成的。

include $(CLEAR_VARS)就是初始化當前環境,在android看來就是初始化GNU環境,具體什么東東就沒有去深究了,只知道他是用來初始化的就足夠了。

include $(BUILD_SHARED_LIBRARY)/include $(BUILD_STATIC_LIBRARY)這個就是指定生成庫的形式,是動態庫還是靜態庫。

好了,框架就是這樣,然后我們就在

include $(CLEAR_VARS)

include $(BUILD_SHARED_LIBRARY)/include $(BUILD_STATIC_LIBRARY)

之間添磚加瓦吧。

LOCAL_MODULE := hello-jni

這個是指定輸入,生成庫的名稱,實際上名稱是前加“lib”,后加“.so”/".a",貌似有點像Linux,反正android就是從Linux來的,我們就不去深究啦,知道怎么回事就行。

LOCAL_SRC_FILES :=hello-jni.c

這個就是指定需要編譯的源碼,寫法有很多種的,自定義文件夾加入等等,這里我不去展開,有時間我會深究一下的。

上述例子沒有加上的:

LOCAL_C_INCLUDES :=$(LOCAL_PATH)/include

這個就是指定需要用到的頭文件的目錄,就在該目錄的include文件夾下,你也可以加上很多其他路徑下的頭文件

LOCAL_LDLIBS := -lz

這個呢,就是連接系統一些庫了,可能我們編譯的時候報的一些錯誤,需要依賴系統的一些庫的。如-lxx,就是連接某一個系統動態庫。

LOCAL_SHARED_LIBRARIES := hello-jni1

這個呢是鏈接我們自己的第三方的動態庫。

LOCAL_STATIC_LIBRARIES 這個一樣,是鏈接我們自己的第三方的靜態庫。

LOCAL_CFLAGS += -Dxxx這個就是你在源碼定義的宏,需要定義的話就在這個參數上加上-Dxxx,前面加"-D",

后面就是宏的名稱了。

好了,今天就簡單的介紹了一下Android.mk文件的基本寫法。有時間我會研究一下鏈接問題,和一些不常用的變量及其用法的。

謝謝大家,由于能力有限,希望大家多多批評指正。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377

推薦閱讀更多精彩內容