卡關筆記 base_rules.mk:72: *** user tag detected on module.. 如何把module正確編譯且產生出來

首先發生了error
編譯到一半就有訊息跳出並停止編譯
它跟我說我用了 user tag 所以STOP…

build/core/base_rules.mk:66: * 
build/core/base_rules.mk:67: * Module is attempting to use the 'user' tag.  This 
build/core/base_rules.mk:68: * used to cause the module to be installed automatically. 
build/core/base_rules.mk:69: * Now, the module must be listed in the PRODUCT_PACKAGES 
build/core/base_rules.mk:70: * section of a product makefile to have it installed. 
build/core/base_rules.mk:71: * 
build/core/base_rules.mk:72: *** user tag detected on module..  Stop. 

去看了一看我的 module’s Android.mk
如下

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test_wifi
LOCAL_SRC_FILES := test_wifi.sh
LOCAL_MODULE_SUFFIX := .sh
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := user
include $(BUILD_PREBUILT)

關鍵在 LOCAL_MODULE_TAGS

eng:
我還沒改之前為eng, 而eng表示系統會自動搬入 out/product/xxx/xxx (看你怎麼寫, 像此例是LOCAL_MODULE_CLASS := ETC 所以是system/etc)

user:
如果是 LOCAL_MODULE_TAGS := user 就上面的error message
可能有些地方不能隨意定義成user吧… 害我一開始還跟著error message去試著將module name加入 PRODUCT_PACKAGES定義裡
也沒用, 還是fail

optional:
可以改成 LOCAL_MODULE_TAGS := optional , 但必須說明是否搬入out目錄裡
怎麼說明呢?
去把該module name (此例為test_wifi)加入 PRODUCT_PACKAGES定義裡
可以寫在
1) /android/build/target/product/generic.mk 或附近的mk檔
2) 又或者, 其他可以定義 PRODUCT_PACKAGES += xxxxx 的makedile裡 (.mk檔) 必須看你的codebase什麼地方有PRODUCT_PACKAGES += xxxxx 就接著寫在下面吧

我後來處理的寫法

diff給你看

@@ -4,5 +4,5 @@ include $(CLEAR_VARS)
 LOCAL_MODULE := test_wifi
 LOCAL_SRC_FILES := test_wifi.sh
 LOCAL_MODULE_SUFFIX := .sh
 LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_TAGS := eng
+LOCAL_MODULE_TAGS := eng optional
 include $(BUILD_PREBUILT)

PRODUCT_PACKAGES宣告

 PRODUCT_PACKAGES += TE_WGA
+PRODUCT_PACKAGES += test_wifi

發表迴響