首先發生了error
編譯到一半就有訊息跳出並停止編譯
它跟我說我用了 user tag 所以STOP…
1 2 3 4 5 6 7 |
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
如下
1 2 3 4 5 6 7 8 |
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 <strong>LOCAL_MODULE_TAGS := user</strong> 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給你看
1 2 3 4 5 6 7 8 |
@@ -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宣告
1 2 |
PRODUCT_PACKAGES += TE_WGA +PRODUCT_PACKAGES += test_wifi |