通常情況下LOCAL_MODULE_TAGS變量的值有user、optional、debug、eng、tests、samples這幾個值。
在2.2裏如果LOCAL_MODULE_TAGS變量的值爲user那麼系統直接就會將這個應用的apk安裝到systm/app目錄下,
在2.3裏將這個變量的值賦值爲user系統會做一個處理,會根據LOCAL_MODULE的值與GRANDFATHERED_USER_MODULES變量的值進行比較,如果LOCAL_MODULE變量的值在GRANDFATHERED_USER_MODULES變量裏沒有,那麼系統就會報錯;默認情況下user debug eng 都會被編譯到系統裏。
如果是optional,那麼會根據要編譯的LOCAL_MODULE 是否在PRODUCT_PACKAGES這個變量中,如果在,就會編譯到系統裏;如果沒有,那麼就不會被編譯到系統裏。tests會根據編譯的版本的vatiant來決定是否編譯到系統裏,而samples只是一個例子一般都不會被編譯到系統裏的。在Android裏只有幾個samples是可以被編譯到系統裏的,但是默認情況是沒有被編譯的。
但是在android系統裏java應用如果生成了apk包就會被安裝到system/app目錄下,想將java應用編譯生成apk包而且不被編譯到系統裏那麼我們就等修改該Android系統的Makefile文件系統。
========================================================================================================
以Calculator爲例:trunk\packages\apps\Calculator\Android.mk