歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android系統編譯—Android.mk文件的簡單介紹

Android系統編譯—Android.mk文件的簡單介紹

日期:2017/3/1 9:49:13   编辑:Linux編程

我接觸Android平台大概有半年了,期間開發了一些關於Android的程序,在公司中我需要掌握關於Android系統編譯的大量知識,因此進行學習,把我學習的一些筆記與大家進行分享,希望對大家學習Android系統編譯有一定的幫助。

1.LOCAL_PATH := $(call my-dir)

每個Android.mk文件必須以LOCAL_PATH開頭,在整個開發中,它通常別用做定位資源文件,例如,功能宏“my-dir提供給編譯系統當前的路徑。

2.include $(CLEAR_VARS)

這個CLEAR_VARS變量是指,編譯系統提供一個特殊的GUN MakeFile來為你清除所有的LOCAL_XXX變量,LOCAL_PATH不會被清除。使用這個變量是因為在編譯系統時,所有的控制文件都會在一個GUN Make上下文進行執行,而在此上下文中所有的LOCAL_XXX都是全局的。

3.LOCAL_MODULE := hello-jni

在Android.mk文件中,LOCAL_MODULE變量是為了確定每一個模塊的模塊名,並且必須要定義。這個名字必須是唯一的同時不能含有空格。注意,在編譯系統的生成文件時,會自動的為文件添加適當的前綴或後綴,例如:一個動態庫的模塊名為“foo”它將會生成一個名為“libfoo.so”文件。

重要提示:如果你的模塊名叫“libfoo”編譯系統將不會為此模塊添加“lib”前綴,它也會生成一個名為“libfoo.so”文件,這是Android平台中Android.mk文件的使用規則。

4.LOCAL_SRC_FILES := hello-jni.c

這個LOCAL_SRC_FILES變量必須包含一系列被編譯進模塊的C 或C++資源文件,這裡你不能包含文件的標題,編譯系統將會自 動的進行計算依賴,你只需列出要傳給編譯器的資源文件即可。

注意:C++源文件的默認擴展名問.cpp,但它能通過變量 LOCAl_CPP_EXIENSION來指定其他的擴展名。

5.include $(BUILD_SHARED_LIBRARY)

編譯系統提供BUILD_SHARED_LIBRARY變量是為了指明一個GUN Makefile腳本,並且收集從最近“include$(CLEAR_VARS)”下的所有LOCALL_XXX變量的信息,最後告訴編譯系統如何正確的進行編譯。變量BUILD_SHARED_LIBRARY將會生成一個靜態庫hello-jni.a文件。

下面是一個小例子:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := hello-jni

LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved