當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > Android系統(tǒng)開(kāi)發(fā)中Android.mk的多種寫(xiě)法
Android.mk在android的系統(tǒng)開(kāi)發(fā)中毫無(wú)疑問(wèn)是很重要的,它的作用比較強(qiáng)大,可以將c/c++代碼編譯成可執(zhí)行程序,動(dòng)態(tài)庫(kù),靜態(tài)庫(kù),當(dāng)然也可以將Java代碼編譯成二進(jìn)制代碼,jar包,apk等等,一下就列舉幾個(gè)例子來(lái)說(shuō)明是如何使用的:
1,編寫(xiě)方法: 抄模板,個(gè)人不建議默寫(xiě),android源碼中的模板遍地都是,所以不用擔(dān)心不會(huì)寫(xiě)
2,Android.mk的寫(xiě)法實(shí)際是基于Makefile的,所以基本的規(guī)則還是不能有悖于Makfile,Makefile的一個(gè)規(guī)則是:
目標(biāo) :依賴
編譯規(guī)則 #注意規(guī)則前面有一個(gè)tab
3,簡(jiǎn)單的模板:hardware/ril/rild/Android.mk
#獲取Androd.mk所在路徑
LOCAL_PATH:= $(call my-dir)
#清空以LOCAL_xxx的變量, 除了LOCAL_PATH
include $(CLEAR_VARS)
#指定源文件
LOCAL_SRC_FILES:= \
rild.c
#指定目標(biāo)文件
LOCAL_MODULE:= rild
#編譯規(guī)則
include $(BUILD_EXECUTABLE)
-------------------------------------------------------------------
c/c++代碼編譯成elf可執(zhí)行程序:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
hello.c
# optional表示在任何模式下都會(huì)編譯
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE:= hello_elf
include $(BUILD_EXECUTABLE)
-----------------------------------------------------------------
編譯成動(dòng)態(tài)庫(kù)
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES:= myled_jni.cpp
LOCAL_SHARED_LIBRARIES := \
libutils
LOCAL_MODULE:=libled_jni
include $(BUILD_SHARED_LIBRARY)
-----------------------------------------------------------------------------------------------------------------------------------
預(yù)編譯: 表示拷貝
prebuilt/android-arm/gdbserver$ vim Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := ADV7123.pdf
LOCAL_MODULE := ADV7123.pdf
#指定目標(biāo)文件安裝路徑
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
#預(yù)編譯方式
include $(BUILD_PREBUILT)