From 68684bea792983971ed3c36052a416e9af1701bf Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Tue, 2 Nov 2021 03:54:05 +0000 Subject: [PATCH] Move manifest generation logic into static_java_library.mk Previously a manifest file would be generated for static_java_library.mk and package_internal.mk. For pacakge_internal.mk, this would cause cryptic errors like b/188612215#2 With this CL, a manifest file would only be generated for java_library with need_compile_res == true. The advantages are 1. No redundant generation for java_library with need_compile_res == false (i.e. modules that do not require aapt2) 2. Force devs to provide manifest for android_app, and not silently generating one for them Bug: 188652897 Test: TH Test: m nothing in tv-dev, car-dev Change-Id: I69a23e373f1b4ac1569ae5b1d36067bfc0dadc05 --- core/force_aapt2.mk | 7 ------- core/package_internal.mk | 8 ++++++++ core/static_java_library.mk | 7 +++++++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/core/force_aapt2.mk b/core/force_aapt2.mk index 25b45e480d..5f3182afa9 100644 --- a/core/force_aapt2.mk +++ b/core/force_aapt2.mk @@ -44,10 +44,3 @@ ifneq (,$(filter-out current system_current test_current core_current,$(LOCAL_SD LOCAL_SDK_RES_VERSION := current endif -ifeq (,$(strip $(LOCAL_MANIFEST_FILE)$(LOCAL_FULL_MANIFEST_FILE))) - ifeq (,$(wildcard $(LOCAL_PATH)/AndroidManifest.xml)) - # work around missing manifests by creating a default one - LOCAL_FULL_MANIFEST_FILE := $(call local-intermediates-dir,COMMON)/DefaultManifest.xml - $(call create-default-manifest-file,$(LOCAL_FULL_MANIFEST_FILE),$(call module-min-sdk-version)) - endif -endif diff --git a/core/package_internal.mk b/core/package_internal.mk index 800dbbc49b..8199ad2b09 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -97,6 +97,14 @@ LOCAL_MANIFEST_PACKAGE_NAME := $(override_manifest_name) endif include $(BUILD_SYSTEM)/force_aapt2.mk +# validate that app contains a manifest file for aapt2 +ifeq (,$(strip $(LOCAL_MANIFEST_FILE)$(LOCAL_FULL_MANIFEST_FILE))) + ifeq (,$(wildcard $(LOCAL_PATH)/AndroidManifest.xml)) + $(call pretty-error,App missing manifest file which is required by aapt2. \ +Provide a manifest file by either setting LOCAL_MANIFEST_FILE in Android.mk \ +or via a AndroidManifest.xml in this directory) + endif +endif # Process Support Library dependencies. include $(BUILD_SYSTEM)/support_libraries.mk diff --git a/core/static_java_library.mk b/core/static_java_library.mk index 7a873229d7..4053985a3a 100644 --- a/core/static_java_library.mk +++ b/core/static_java_library.mk @@ -101,6 +101,13 @@ all_res_assets := $(all_resources) include $(BUILD_SYSTEM)/java_renderscript.mk ifeq (true,$(need_compile_res)) +# work around missing manifests by creating a default one +ifeq (,$(strip $(LOCAL_MANIFEST_FILE)$(LOCAL_FULL_MANIFEST_FILE))) + ifeq (,$(wildcard $(LOCAL_PATH)/AndroidManifest.xml)) + LOCAL_FULL_MANIFEST_FILE := $(call local-intermediates-dir,COMMON)/DefaultManifest.xml + $(call create-default-manifest-file,$(LOCAL_FULL_MANIFEST_FILE),$(call module-min-sdk-version)) + endif +endif include $(BUILD_SYSTEM)/android_manifest.mk LOCAL_SDK_RES_VERSION:=$(strip $(LOCAL_SDK_RES_VERSION))