在Linux下,可以通過(guò)Makefile來(lái)對(duì)源碼工程進(jìn)行管理,Android.mk文件是Makefile的一小部分,它用來(lái)對(duì)Android程序進(jìn)行編譯。Android.mk文件中描述了哪些C文件將被編譯且指明了如何編譯。
創(chuàng)新互聯(lián)建站主營(yíng)襄垣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,App定制開(kāi)發(fā),襄垣h5微信小程序開(kāi)發(fā)搭建,襄垣網(wǎng)站營(yíng)銷推廣歡迎襄垣等地區(qū)企業(yè)咨詢
在一個(gè)Android.mk中可以生成多個(gè)可執(zhí)行程序、動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)。
由于soong在運(yùn)行掃描所有的module,最后建立module之間的依賴關(guān)系,因此android.bp之間的先后順序不影響后續(xù)的ninja文件生成。
Android.mk文件首先需要指定LOCAL_PATH變量,用于查找源文件,宏函數(shù)’my-dir’, 由編譯系統(tǒng)提供。
1、如果common.mk在之前有被調(diào)用到的話,直接把MY_DEBUG_OPEN拋出來(lái)?;蛘吣銥槭裁床欢x在這個(gè)makefile里面。include $(LOCAL_PATH)/../common.mk makefile文件里面應(yīng)該不支持這種寫(xiě)法。
2、include $(BUILD_PREBUILT)4) 打開(kāi)文件 build/target/product/${Project}.mk (其中 ${Project} 表示工程名)將 Test 添加到 PRODUCT_PACKAGES 里面。
3、include $(PREBUILT_SHARED_LIBRARY) # 注意這里不是 BUILD_SHARED_LIBRARY這個(gè)共享庫(kù)將被拷貝到 $PROJECT/obj/local 和 $PROJECT/libs/abi (stripped) 主要是用在將已經(jīng)編譯好的第三方庫(kù)使用在本Android Project中。
4、include $(BUILD_SHARED_LIBRARY)--- cut here --- 我們來(lái)解釋一下這幾行代碼:LOCAL_PATH := $(call my-dir)一個(gè)Android.mk file首先必須定義好LOCAL_PATH變量。它用于在開(kāi)發(fā)樹(shù)中查找源文件。
當(dāng)你需要使用JNI的時(shí)候,你需要?jiǎng)?chuàng)建一個(gè)native工程。Android.mk就是一個(gè)makefile配置文件,幫你把C/C++的代碼編譯成動(dòng)態(tài)庫(kù)so的。
一個(gè)Android.mk file用來(lái)向編譯系統(tǒng)描述你的源代碼。具體來(lái)說(shuō):該文件是GNU Makefile的一小部分,會(huì)被編譯系統(tǒng)解析一次或多次。
android開(kāi)發(fā)用的是Java語(yǔ)言。Java也擁有自己強(qiáng)大的開(kāi)源社區(qū),當(dāng)編寫(xiě)時(shí)遇到問(wèn)題就能通過(guò)這些社區(qū)找到答案。android開(kāi)發(fā)的教程,書(shū)籍和課程,包括免費(fèi)和付費(fèi)的,這些教程可以讓先用java語(yǔ)言開(kāi)始入門(mén)Android開(kāi)發(fā)之路。
其內(nèi)核編程語(yǔ)言是c/c。android使用dalvik虛擬機(jī)制,本質(zhì)上它是一個(gè)Java虛擬機(jī)。而且對(duì)于每一個(gè)APP都會(huì)創(chuàng)建個(gè)dalvik虛擬機(jī),也就是一個(gè)linux進(jìn)程。2,android底層驅(qū)動(dòng),以及操作系統(tǒng)全部?jī)?nèi)核都是使用C語(yǔ)言和匯編語(yǔ)言編程開(kāi)發(fā)。