Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e295c3df authored by Ying Wang's avatar Ying Wang Committed by Adam Lesinski
Browse files

AAPT2: library resource compilation

- Switch to static library's package-res.apk as the link artifact.
- For prebuilt AAR file, build package-res.apk using aapt2's "--dir"
  option.
- New LOCAL variables:
  LOCAL_USE_AAPT2: a module can opt-in with "LOCAL_USE_AAPT2 := true".
  LOCAL_STATIC_ANDROID_LIBRARIES: static Java libraries with compiled
                   resources.
  LOCAL_SHARED_ANDROID_LIBRARIES: shared Java libraries with compiled
                   resources.

Bug: 25958912
Change-Id: I4be2d1e8137555986338c2583cb39b0c97391751
parent 6519b90b
Loading
Loading
Loading
Loading
+21 −12
Original line number Diff line number Diff line
@@ -3,8 +3,11 @@
# Input variables:
# full_android_manifest,
# my_res_resources, my_overlay_resources, my_aapt_characteristics,
# my_compiled_res_base_dir, rs_generated_res_dir, my_res_package,
# my_compiled_res_base_dir, my_res_package,
# R_file_stamp, proguard_options_file
# my_generated_res_dirs: Resources generated during the build process and we have to compile them in a single run of aapt2.
# my_generated_res_dirs_deps: the dependency to use for my_generated_res_dirs.
#
# Output variables:
# my_res_resources_flat, my_overlay_resources_flat,
# my_generated_resources_flata
@@ -27,39 +30,45 @@ my_overlay_resources_flat := \

my_generated_resources_flata :=
# Compile generated resources
ifneq ($(rs_generated_res_dir),)
rs_gen_resource_flata := $(my_compiled_res_base_dir)/renderscript_gen_res.flata
$(rs_gen_resource_flata): PRIVATE_SOURCE_RES_DIR := $(rs_generated_res_dir)
$(rs_gen_resource_flata) : $(RenderScript_file_stamp)
	@echo "AAPT2 compile $@ <- $(PRIVATE_SOURCE_RES_DIR)"
	$(call aapt2-compile-one-resource-dir)
ifneq ($(my_generated_res_dirs),)
my_generated_resources_flata := $(my_compiled_res_base_dir)/gen_res.flata
$(my_generated_resources_flata): PRIVATE_SOURCE_RES_DIRS := $(my_generated_res_dirs)
$(my_generated_resources_flata) : $(my_generated_res_dirs_deps)
	@echo "AAPT2 compile $@ <- $(PRIVATE_SOURCE_RES_DIRS)"
	$(call aapt2-compile-resource-dirs)

my_generated_resources_flata += $(rs_gen_resource_flata)
my_generated_resources_flata += $(my_generated_resources_flata)
endif

$(my_res_resources_flat) $(my_overlay_resources_flat) $(my_generated_resources_flata): \
  PRIVATE_AAPT2_CFLAGS := $(addprefix --product ,$(my_aapt_characteristics)) $(PRODUCT_AAPT2_CFLAGS)

# Link the static library resource packages.
my_static_library_resources := $(foreach l, $(LOCAL_STATIC_JAVA_LIBRARIES),\
  $(call intermediates-dir-for,JAVA_LIBRARIES,$(l),,COMMON)/library-res.flata)
my_static_library_resources := $(foreach l, $(LOCAL_STATIC_ANDROID_LIBRARIES),\
  $(call intermediates-dir-for,JAVA_LIBRARIES,$(l),,COMMON)/package-res.apk)
my_shared_library_resources := $(foreach l, $(LOCAL_SHARED_ANDROID_LIBRARIES),\
  $(call intermediates-dir-for,JAVA_LIBRARIES,$(l),,COMMON)/package-res.apk)

$(my_res_package): PRIVATE_RES_FLAT := $(my_res_resources_flat)
$(my_res_package): PRIVATE_OVERLAY_FLAT := $(my_overlay_resources_flat) $(my_generated_resources_flata) $(my_static_library_resources)
$(my_res_package): PRIVATE_SHARED_ANDROID_LIBRARIES := $(my_shared_library_resources)
$(my_res_package): PRIVATE_PROGUARD_OPTIONS_FILE := $(proguard_options_file)
$(my_res_package) : $(full_android_manifest)
$(my_res_package) : $(full_android_manifest) $(my_static_library_resources) $(my_shared_library_resources)
$(my_res_package) : $(my_res_resources_flat) $(my_overlay_resources_flat) \
  $(my_generated_resources_flata) $(my_static_library_resources) \
  $(AAPT2)
	@echo "AAPT2 link $@"
	$(call aapt2-link)

ifdef R_file_stamp
$(R_file_stamp) : $(my_res_package) | $(ACP)
	@echo "target R.java/Manifest.java: $(PRIVATE_MODULE) ($@)"
	@rm -rf $@ && mkdir -p $(dir $@)
	$(call find-generated-R.java)
endif

ifdef proguard_options_file
$(proguard_options_file) : $(my_res_package)
endif

resource_export_package :=
ifdef LOCAL_EXPORT_PACKAGE_RESOURCES
+3 −3
Original line number Diff line number Diff line
@@ -22,11 +22,11 @@ my_full_libs_manifest_deps += $(foreach lib, $(LOCAL_STATIC_JAVA_AAR_LIBRARIES),
my_full_libs_manifest_files += $(foreach lib, $(LOCAL_STATIC_JAVA_AAR_LIBRARIES),\
  $(call intermediates-dir-for,JAVA_LIBRARIES,$(lib),,COMMON)/aar/AndroidManifest.xml)

# With USE_AAPT2, we'll link in the built resource from the AAR.
ifndef USE_AAPT2
# With aapt2, we'll link in the built resource from the AAR.
ifndef LOCAL_USE_AAPT2
LOCAL_RESOURCE_DIR += $(foreach lib, $(LOCAL_STATIC_JAVA_AAR_LIBRARIES),\
  $(call intermediates-dir-for,JAVA_LIBRARIES,$(lib),,COMMON)/aar/res)
endif  # USE_AAPT2
endif  # LOCAL_USE_AAPT2
endif  # LOCAL_STATIC_JAVA_AAR_LIBRARIES

# Set up rules to merge library manifest files
+3 −0
Original line number Diff line number Diff line
@@ -193,6 +193,9 @@ LOCAL_INIT_RC:=
LOCAL_MODULE_HOST_OS:=
LOCAL_FINDBUGS_FLAGS:=
LOCAL_NOTICE_FILE:=
LOCAL_USE_AAPT2:=$(USE_AAPT2)
LOCAL_STATIC_ANDROID_LIBRARIES:=
LOCAL_SHARED_ANDROID_LIBRARIES:=

# arch specific variables
LOCAL_SRC_FILES_$(TARGET_ARCH):=
+4 −2
Original line number Diff line number Diff line
@@ -1825,9 +1825,9 @@ define aapt2-compile-one-resource-file
$(hide) $(AAPT2) compile -o $(dir $@) $(PRIVATE_AAPT2_CFLAGS) --legacy $<
endef

define aapt2-compile-one-resource-dir
define aapt2-compile-resource-dirs
@mkdir -p $(dir $@)
$(hide) $(AAPT2) compile -o $@ --dir $(PRIVATE_SOURCE_RES_DIR) \
$(hide) $(AAPT2) compile -o $@ $(addprefix --dir ,$(PRIVATE_SOURCE_RES_DIRS)) \
  $(PRIVATE_AAPT2_CFLAGS) --legacy
endef

@@ -1856,8 +1856,10 @@ endef
define aapt2-link
$(hide) $(AAPT2) link -o $@ \
  $(PRIVATE_AAPT_FLAGS) \
  --auto-add-overlay \
  $(addprefix --manifest ,$(PRIVATE_ANDROID_MANIFEST)) \
  $(addprefix -I ,$(PRIVATE_AAPT_INCLUDES)) \
  $(addprefix -I ,$(PRIVATE_SHARED_ANDROID_LIBRARIES)) \
  $(addprefix --java ,$(PRIVATE_SOURCE_INTERMEDIATES_DIR)) \
  $(addprefix --proguard ,$(PRIVATE_PROGUARD_OPTIONS_FILE)) \
  $(addprefix --min-sdk-version ,$(PRIVATE_DEFAULT_APP_TARGET_SDK)) \
+6 −4
Original line number Diff line number Diff line
@@ -57,10 +57,12 @@ else
endif
endif

# LOCAL_STATIC_JAVA_AAR_LIBRARIES are special LOCAL_STATIC_JAVA_LIBRARIES
LOCAL_STATIC_JAVA_LIBRARIES := $(strip $(LOCAL_STATIC_JAVA_LIBRARIES) $(LOCAL_STATIC_JAVA_AAR_LIBRARIES))

LOCAL_JAVA_LIBRARIES := $(sort $(LOCAL_JAVA_LIBRARIES))
# LOCAL_STATIC_JAVA_AAR_LIBRARIES and LOCAL_STATIC_ANDROID_LIBRARIES are also LOCAL_STATIC_JAVA_LIBRARIES.
LOCAL_STATIC_JAVA_LIBRARIES := $(strip $(LOCAL_STATIC_JAVA_LIBRARIES) \
    $(LOCAL_STATIC_JAVA_AAR_LIBRARIES) \
    $(LOCAL_STATIC_ANDROID_LIBRARIES))
# LOCAL_SHARED_ANDROID_LIBRARIES are also LOCAL_JAVA_LIBRARIES.
LOCAL_JAVA_LIBRARIES := $(sort $(LOCAL_JAVA_LIBRARIES) $(LOCAL_SHARED_ANDROID_LIBRARIES))

LOCAL_BUILT_MODULE_STEM := $(strip $(LOCAL_BUILT_MODULE_STEM))
ifeq ($(LOCAL_BUILT_MODULE_STEM),)
Loading