안드로이드 버전이 올라가면서 GRANDFATHERED_USER_MODULES
이 사라진 듯 하다.
User_tags.mk에 있던 건데 같은 폴더(android/build/core)에 있는 base_rules.mk에서 쓰고 있었다.
ifneq ($(filter $(LOCAL_MODULE_TAGS),user),)
|
ifeq ($(filter $(GRANDFATHERED_USER_MODULES),$(LOCAL_MODULE)),)
|
$(warning *** Module name: $(LOCAL_MODULE))
|
$(warning *** Makefile location: $(LOCAL_PATH))
|
$(warning * )
|
$(warning * Each module must use a LOCAL_MODULE_TAGS in its)
|
$(warning * Android.mk. Possible tags declared
by a module:)
|
$(warning * )
|
$(warning * optional, debug, eng, tests, samples)
|
$(warning * )
|
$(warning * If the module is expected to be in all builds)
|
$(warning * of a product, then it should use the)
|
$(warning * "optional" tag: )
|
$(warning * )
|
$(warning * Add "LOCAL_MODULE_TAGS
:= optional" in the)
|
$(warning * Android.mk for the affected
module,
and add)
|
$(warning * the LOCAL_MODULE value for that component)
|
$(warning * into the PRODUCT_PACKAGES section of
product)
|
$(warning * makefile(s) where it's necessary,
if)
|
$(warning * appropriate.)
|
$(warning * )
|
$(warning * If the component should be in EVERY build of ALL)
|
$(warning * products, then add its LOCAL_MODULE value to the)
|
$(warning * PRODUCT_PACKAGES section of)
|
$(warning * build/target/product/core.mk)
|
$(warning * )
|
$(error user tag detected on new module - user tags are only supported
on legacy modules)
|
endif
|
endif
|
filter : $(filter pattern...,text)
* 공백으로 분리된 내용의 text에서 pattern에 맞는 내용만 추려내라.
From
<http://blog.daum.net/_blog/hdn/ArticleContentsView.do?blogid=0QmiG&articleno=6&looping=0&longOpen=>
User 모드 빌드인 경우(optional, tests, eng, debug, samples 들이 아닌) 로컬 모듈에 사용자 모듈과
이름이 같은 놈이 있으면 안된다는 코드로 보인다.
상위 버전에서는
63 ifneq ($(filter $(LOCAL_MODULE_TAGS),user),)
64 $(warning *** Module name: $(LOCAL_MODULE))
65 $(warning *** Makefile location: $(LOCAL_MODULE_MAKEFILE))
66 $(warning * )
67 $(warning * Module is attempting to use the 'user' tag. This)
68 $(warning * used to cause the module to be installed automatically.)
69 $(warning * Now, the module must be listed in the PRODUCT_PACKAGES)
70 $(warning * section of a product makefile to have it installed.)
71 $(warning * )
72 $(error user tag detected on module.)
73 endif
74
64 $(warning *** Module name: $(LOCAL_MODULE))
65 $(warning *** Makefile location: $(LOCAL_MODULE_MAKEFILE))
66 $(warning * )
67 $(warning * Module is attempting to use the 'user' tag. This)
68 $(warning * used to cause the module to be installed automatically.)
69 $(warning * Now, the module must be listed in the PRODUCT_PACKAGES)
70 $(warning * section of a product makefile to have it installed.)
71 $(warning * )
72 $(error user tag detected on module.)
73 endif
74
이렇게 바뀌어 버렸다.
User_tags.mk 검색되는 곳이 base_rules.mk밖에 없어서 컴파일을 위하여 user_tags.mk를 만들었다기
보다 user 모듈 필터링해서 warning을 띄워주기 위해서 만든 것 같다. 그렇게 보면 안드로이드 4.2 이상에서
못 찾는게 당연한 건지도.
새로 모듈을 만들 때는 PRODUCT_PACKAGES에만 들어가게 하면 어떤 상황에서든 탑재가 되도록 보인다.
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.