Android系統開發(fa)中Android.mk的多種寫(xie)法
時間:2018-09-27 來源:未知
Android.mk在android的系統開(kai)發中毫無疑問是很重要(yao)的,它的作用比較強大(da),可(ke)以將c/c++代(dai)碼(ma)(ma)編(bian)譯成可(ke)執行程序,動(dong)態庫,靜態庫,當然(ran)也可(ke)以將Java代(dai)碼(ma)(ma)編(bian)譯成二進(jin)制代(dai)碼(ma)(ma),jar包,apk等等,一(yi)下就列(lie)舉(ju)幾個例子來說明是如何使用的:
1,編寫方(fang)法: 抄模板(ban),個人(ren)不建議默寫,android源碼中的模板(ban)遍地(di)都是,所(suo)以不用擔心不會(hui)寫
2,Android.mk的(de)(de)寫法實際是(shi)基于Makefile的(de)(de),所以基本的(de)(de)規(gui)則還(huan)是(shi)不能有(you)悖于Makfile,Makefile的(de)(de)一個規(gui)則是(shi):
目標 :依賴
編譯規則(ze) #注意規則(ze)前面(mian)有一個tab
3,簡單的模(mo)板:hardware/ril/rild/Android.mk
#獲取(qu)Androd.mk所在(zai)路徑
LOCAL_PATH:= $(call my-dir)
#清空以LOCAL_xxx的(de)變量, 除了LOCAL_PATH
include $(CLEAR_VARS)
#指定源文(wen)件(jian)
LOCAL_SRC_FILES:= \
rild.c
#指定目標文件(jian)
LOCAL_MODULE:= rild
#編譯規則
include $(BUILD_EXECUTABLE)
-------------------------------------------------------------------
c/c++代碼(ma)編譯成elf可執行程序:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
hello.c
# optional表示在任何模式下都會(hui)編譯
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE:= hello_elf
include $(BUILD_EXECUTABLE)
-----------------------------------------------------------------
編(bian)譯成動態庫
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)
-----------------------------------------------------------------------------------------------------------------------------------
預編譯: 表示(shi)拷貝(bei)
prebuilt/android-arm/gdbserver$ vim Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := ADV7123.pdf
LOCAL_MODULE := ADV7123.pdf
#指定目標文件(jian)安(an)裝路徑(jing)
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
#預編(bian)譯(yi)方式
include $(BUILD_PREBUILT)

