Android中JNI開發(二)Android.mk寫法

來源:互聯網
上載者:User

Android.mk檔案的寫法:

 ---------- cut here ------------------   LOCAL_PATH := $(call my-dir)   include $(CLEAR_VARS)   LOCAL_MODULE    := hello-jni   LOCAL_SRC_FILES := hello-jni.c   include $(BUILD_SHARED_LIBRARY)---------- cut here ------------------

現在,讓我們解釋一下這幾行:  LOCAL_PATH := $(call my-dir)一個Android.mk檔案的開頭必須LOCAL_PATH變數的定義。它是用來在開發樹中尋找源檔案。在這個例子中,宏功能“my-dir”,提供構建系統,用於返回在目前的目錄(即該目包含的路徑Android.mk檔案本身)。  $(CLEAR_VARS)通過構建系統和點到CLEAR_VARS變數特殊的GNU Makefile檔案,這個檔案中將清除許多LOCAL_XXX的變數為你(例如LOCAL_MODULE ,LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES,等等。),與除LOCAL_PATH。這是必要的,因為所有的建設控制檔案都在一個單一的GNU Make的執行內容分析所有的變數。  LOCAL_MODULE:= HELLO-JNILOCAL_MODULE變數必須被定義來確定每個模組,你描述在你的Android.mk。該名稱必須是*獨特的和不包含任何空格。需要注意的是,構建系統會自動添加適當的相應的產生的檔案的首碼和尾碼。換言之,一個命名為'foo'的共用庫模組將產生'libfoo.so“。重要注意事項:如果你的名字你的模組libfoo的,構建系統不會添加另一種的'lib'首碼,並會產生libfoo.so。這是為了支援Android.mk檔案,源於Android平台。  LOCAL_SRC_FILES:= HELLO-jni.cLOCAL_SRC_FILES變數必須包含C和/或C + +源檔案的列表檔案將被建造和組裝到模組中。需要注意的是,你應該沒有列出標頭檔和包含的檔案,因為產生系統將自動為你建立連結,只列出源檔案將被直接傳遞給編譯器即可。需要注意的是C + +源檔案的預設副檔名是“.CPP。這是然而,可以通過定義變數指定一個不同的LOCAL_CPP_EXTENSION。不要忘了最初的“.”(即“.CXX”,而不是“CXX”)。  $(BUILD_SHARED_LIBRARY)BUILD_SHARED_LIBRARY是由編譯系統提供的一個變數,即一個GNU Makefile指令碼,負責收集所有的中定義的LOCAL_XXX變數,因為最新的資訊“include $(CLEAR_VARS)”,並決定建立什麼,以及如何做到這一點。還有BUILD_STATIC_LIBRARY產生靜態庫。也就是說:
include $(BUILD_SHARED_LIBRARY)與include $(BUILD_STATIC_LIBRARY)將決定當前的庫以共用方式還是靜態方式來建立
在一個Android.mk中可定義多個庫,結構如下:
include $(CLEAR_VARS)LOCAL_MODULE    := nativeLOCAL_SRC_FILES := native.cinclude $(BUILD_SHARED_LIBRARY)

     除此(LOCAL_MODULE)之外, 在開發中還可以通過include方式來引入其它的mk檔案來進行模組化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.