天天看點

Android.mk編譯控制

我也不寫Android.mk的文法的知識了,網上一搜一大把。本人目前手上有一塊友善之臂生産的samsung的4412的開發闆,根據編譯android系統發現,有時候在packages/apps/下添加來自己的軟體,但是最終編譯鏡像的時候發現這個軟體沒有編譯。于是我修改原本Android.mk的LOCAL_MODULE_TAGS := optional 為LOCAL_MODULE_TAGS := eng。然後這個軟體就在編譯系統的時候編譯了。在packages/apps/下的系統的軟體LOCAL_MODULE_TAGS 這個值的屬性為optional的是會編譯的。同時Launcher3這個軟體有個LOCAL_OVERRIDES_PACKAGES :=Launcher2這個屬性,而在system/priv-app/中隻有Launcher2/Launcher2.apk這個軟體沒有Launcher3.apk。但是經過我測試結果恰恰相反LOCAL_OVERRIDES_PACKAGES這個屬性的值的軟體沒有被編譯。

按照我個人了解,android系統編譯的時候先是一次将所有Android.mk加載。以LOCAL_PACKAGE_NAME(apk的名字)或者LOCAL_MODULE(動态庫.so或者靜态庫.a等)來對應每一個Android.mk.根據LOCAL_MODULE_TAGS來判斷是否使用這個Android.mk。像LOCAL_MODULE的mk需要使用PRODUCT_PACKAGES來讓它編譯進系統中。

LOCAL_SDK_VERSION :=current 會導緻無法使用hide的API

LOCAL_PRIVILEGED_MODULE := true會使得編譯出來的apk生成目錄為/system/priv-app/

繼續閱讀