@ -325,50 +325,10 @@ endif
i n c l u d e $( BUILD_SYSTEM ) / a n d r o i d _ m a n i f e s t . m k
called_from_package_internal := true
#################################
i n c l u d e $( BUILD_SYSTEM ) / j a v a . m k
#################################
called_from_package_internal :=
LOCAL_SDK_RES_VERSION := $( strip $( LOCAL_SDK_RES_VERSION) )
i f e q ( $( LOCAL_SDK_RES_VERSION ) , )
LOCAL_SDK_RES_VERSION:= $( LOCAL_SDK_VERSION)
e n d i f
$(LOCAL_INTERMEDIATE_TARGETS) : \
PRIVATE_ANDROID_MANIFEST := $( full_android_manifest)
i f e q ( $( LOCAL_DATA_BINDING ) , t r u e )
data_binding_stamp := $( data_binding_intermediates) /data-binding.stamp
$(data_binding_stamp) : PRIVATE_INTERMEDIATES := $( data_binding_intermediates )
$(data_binding_stamp) : PRIVATE_MANIFEST := $( full_android_manifest )
# Generate code into $(LOCAL_INTERMEDIATE_SOURCE_DIR) so that the generated .java files
# will be automatically picked up by function compile-java.
$(data_binding_stamp) : PRIVATE_SRC_OUT := $( LOCAL_INTERMEDIATE_SOURCE_DIR ) /data -binding
$(data_binding_stamp) : PRIVATE_XML_OUT := $( data_binding_intermediates ) /xml
$(data_binding_stamp) : PRIVATE_RES_OUT := $( data_binding_res_out )
$(data_binding_stamp) : PRIVATE_RES_IN := $( data_binding_res_in )
$(data_binding_stamp) : PRIVATE_ANNO_SRC_DIR := $( data_binding_intermediates ) /anno -src
$(data_binding_stamp) : $( all_res_assets ) $( full_android_manifest ) \
$( DATA_BINDING_COMPILER)
@echo " Data-binding process: $@ "
@rm -rf $( PRIVATE_INTERMEDIATES) $( PRIVATE_SRC_OUT) && \
mkdir -p $( PRIVATE_INTERMEDIATES) $( PRIVATE_SRC_OUT) \
$( PRIVATE_XML_OUT) $( PRIVATE_RES_OUT) $( PRIVATE_ANNO_SRC_DIR)
$( hide) $( JAVA) -classpath $( DATA_BINDING_COMPILER) android.databinding.tool.MakeCopy \
$( PRIVATE_MANIFEST) $( PRIVATE_SRC_OUT) $( PRIVATE_XML_OUT) $( PRIVATE_RES_OUT) $( PRIVATE_RES_IN)
$( hide) touch $@
# Make sure the data-binding process happens before javac and generation of R.java.
$(R_file_stamp) : $( data_binding_stamp )
$(java_source_list_file) : $( data_binding_stamp )
$(full_classes_compiled_jar) : $( data_binding_stamp )
e n d i f # LOCAL_DATA_BINDING
resource_export_package :=
i n c l u d e $( BUILD_SYSTEM ) / j a v a _ r e n d e r s c r i p t . m k
i n c l u d e $( BUILD_SYSTEM ) / a a p t _ f l a g s . m k
i f e q ( $( need_compile_res ) , t r u e )
@ -387,69 +347,86 @@ endif # LOCAL_COMPRESSED_MODULE
my_apk_split_configs := $( LOCAL_PACKAGE_SPLITS)
my_split_suffixes := $( subst $( comma) ,_,$( my_apk_split_configs) )
built_apk_splits := $( foreach s,$( my_split_suffixes) ,$( intermediates) /package_$( s) .apk)
installed_apk_splits := $( foreach s,$( my_split_suffixes) ,$( my_module_path) /$( LOCAL_MODULE) _$( s) .apk)
e n d i f
$(R_file_stamp) $(my_res_package) : PRIVATE_AAPT_FLAGS := $( LOCAL_AAPT_FLAGS )
$(R_file_stamp) $(my_res_package) : PRIVATE_TARGET_AAPT_CHARACTERISTICS := $( TARGET_AAPT_CHARACTERISTICS )
$(R_file_stamp) $(my_res_package) : PRIVATE_MANIFEST_PACKAGE_NAME := $( LOCAL_MANIFEST_PACKAGE_NAME )
$(R_file_stamp) $(my_res_package) : PRIVATE_MANIFEST_INSTRUMENTATION_FOR := $( LOCAL_MANIFEST_INSTRUMENTATION_FOR )
###############################
## AAPT/AAPT2
i f d e f L O C A L _ U S E _ A A P T 2
my_compiled_res_base_dir := $( intermediates.COMMON) /flat-res
i f n e q ( , $( renderscript_target_api ) )
i f n e q ( $( call math_gt_or_eq ,$ ( renderscript_target_api ) ,21) , t r u e )
my_generated_res_zips := $( rs_generated_res_zip)
e n d i f # renderscript_target_api < 21
e n d i f # renderscript_target_api is set
my_asset_dirs := $( LOCAL_ASSET_DIR)
my_full_asset_paths : = $( all_assets)
# Add AAPT2 link specific flags.
$(my_res_package) : PRIVATE_AAPT_FLAGS := $( LOCAL_AAPT_FLAGS )
i f n d e f L O C A L _ A A P T _ N A M E S P A C E S
$( my_res_package) : PRIVATE_AAPT_FLAGS += --no-static-lib-packages
e n d i f
i n c l u d e $( BUILD_SYSTEM ) / a a p t 2 . m k
my_compiled_res_base_dir : = $( intermediates.COMMON) /flat-res
ifneq ( ,$( renderscript_target_api) )
ifneq ( $( call math_gt_or_eq,$( renderscript_target_api) ,21) ,true )
my_generated_res_zips : = $( rs_generated_res_zip)
endif # renderscript_target_api < 21
endif # renderscript_target_api is set
my_asset_dirs : = $( LOCAL_ASSET_DIR)
my_full_asset_paths : = $( all_assets)
# Add AAPT2 link specific flags.
$( my_res_package) : PRIVATE_AAPT_FLAGS := $( LOCAL_AAPT_FLAGS )
ifndef LOCAL_AAPT_NAMESPACES
$( my_res_package) : PRIVATE_AAPT_FLAGS += --no-static-lib-packages
endif
include $( BUILD_SYSTEM) /aapt2.mk
e l s e # LOCAL_USE_AAPT2
# Since we don't know where the real R.java file is going to end up,
# we need to use another file to stand in its place. We'll just
# copy the generated file to src/R.stamp, which means it will
# have the same contents and timestamp as the actual file.
#
# At the same time, this will copy the R.java file to a central
# 'R' directory to make it easier to add the files to an IDE.
#
# Since we don't know where the real R.java file is going to end up,
# we need to use another file to stand in its place. We'll just
# copy the generated file to src/R.stamp, which means it will
# have the same contents and timestamp as the actual file.
#
# At the same time, this will copy the R.java file to a central
# 'R' directory to make it easier to add the files to an IDE.
#
$(R_file_stamp) : PRIVATE_RESOURCE_PUBLICS_OUTPUT := \
$( R_file_stamp) : PRIVATE_RESOURCE_PUBLICS_OUTPUT := \
$( intermediates.COMMON) /public_resources.xml
$(R_file_stamp) : PRIVATE_PROGUARD_OPTIONS_FILE := $( proguard_options_file )
$(R_file_stamp) : PRIVATE_RESOURCE_LIST := $( all_res_assets )
$(R_file_stamp) : $( all_res_assets ) $( full_android_manifest ) $( rs_generated_res_zip ) $( AAPT ) | $( ACP )
$( R_file_stamp) : PRIVATE_PROGUARD_OPTIONS_FILE := $( proguard_options_file )
$( R_file_stamp) : PRIVATE_RESOURCE_LIST := $( all_res_assets )
$( R_file_stamp) : $( all_res_assets) $( full_android_manifest) $( rs_generated_res_zip) $( AAPT) | $( ACP )
@echo " target R.java/Manifest.java: $( PRIVATE_MODULE) ( $@ ) "
@rm -rf $@ && mkdir -p $( dir $@ )
$( create-resource-java-files)
$( call find-generated-R.java,$@ )
$(proguard_options_file) : $( R_file_stamp )
i f d e f L O C A L _ E X P O R T _ P A C K A G E _ R E S O U R C E S
# Put this module's resources into a PRODUCT-agnositc package that
# other packages can use to build their own PRODUCT-agnostic R.java (etc.)
# files.
resource_export_package : = $( intermediates.COMMON) /package-export.apk
$(R_file_stamp) : $( resource_export_package )
# add-assets-to-package looks at PRODUCT_AAPT_CONFIG, but this target
# can't know anything about PRODUCT. Clear it out just for this target.
$(resource_export_package) : PRIVATE_PRODUCT_AAPT_CONFIG :=
$(resource_export_package) : PRIVATE_PRODUCT_AAPT_PREF_CONFIG :=
$(resource_export_package) : PRIVATE_RESOURCE_LIST := $( all_res_assets )
$(resource_export_package) : $( all_res_assets ) $( full_android_manifest ) $( RenderScript_file_stamp ) $( AAPT )
$( proguard_options_file) : $( R_file_stamp )
ifdef LOCAL_EXPORT_PACKAGE_RESOURCES
# Put this module's resources into a PRODUCT-agnositc package that
# other packages can use to build their own PRODUCT-agnostic R.java (etc.)
# files.
resource_export_package : = $( intermediates.COMMON) /package-export.apk
$( R_file_stamp) : $( resource_export_package )
# add-assets-to-package looks at PRODUCT_AAPT_CONFIG, but this target
# can't know anything about PRODUCT. Clear it out just for this target.
$( resource_export_package) : PRIVATE_PRODUCT_AAPT_CONFIG :=
$( resource_export_package) : PRIVATE_PRODUCT_AAPT_PREF_CONFIG :=
$( resource_export_package) : PRIVATE_RESOURCE_LIST := $( all_res_assets )
$( resource_export_package) : $( all_res_assets) $( full_android_manifest) $( RenderScript_file_stamp) $( AAPT )
@echo " target Export Resources: $( PRIVATE_MODULE) ( $@ ) "
$( create-empty-package)
$( add-assets-to-package)
e n d i f
endif
e n d i f # LOCAL_USE_AAPT2
e n d i f # need_compile_res
called_from_package_internal := true
#################################
i n c l u d e $( BUILD_SYSTEM ) / j a v a . m k
#################################
called_from_package_internal :=
i f e q ( $( need_compile_res ) , t r u e )
# Other modules should depend on the BUILT module if
# they want to use this module's R.java file.
$(LOCAL_BUILT_MODULE) : $( R_file_stamp )
@ -458,7 +435,43 @@ $(LOCAL_BUILT_MODULE): $(R_file_stamp)
# list is generated
$(java_source_list_file) : $( R_file_stamp )
e n d i f # need_compile_res
e n d i f # need_compile_res
LOCAL_SDK_RES_VERSION := $( strip $( LOCAL_SDK_RES_VERSION) )
i f e q ( $( LOCAL_SDK_RES_VERSION ) , )
LOCAL_SDK_RES_VERSION:= $( LOCAL_SDK_VERSION)
e n d i f
$(LOCAL_INTERMEDIATE_TARGETS) : \
PRIVATE_ANDROID_MANIFEST := $( full_android_manifest)
i f e q ( $( LOCAL_DATA_BINDING ) , t r u e )
data_binding_stamp := $( data_binding_intermediates) /data-binding.stamp
$(data_binding_stamp) : PRIVATE_INTERMEDIATES := $( data_binding_intermediates )
$(data_binding_stamp) : PRIVATE_MANIFEST := $( full_android_manifest )
# Generate code into $(LOCAL_INTERMEDIATE_SOURCE_DIR) so that the generated .java files
# will be automatically picked up by function compile-java.
$(data_binding_stamp) : PRIVATE_SRC_OUT := $( LOCAL_INTERMEDIATE_SOURCE_DIR ) /data -binding
$(data_binding_stamp) : PRIVATE_XML_OUT := $( data_binding_intermediates ) /xml
$(data_binding_stamp) : PRIVATE_RES_OUT := $( data_binding_res_out )
$(data_binding_stamp) : PRIVATE_RES_IN := $( data_binding_res_in )
$(data_binding_stamp) : PRIVATE_ANNO_SRC_DIR := $( data_binding_intermediates ) /anno -src
$(data_binding_stamp) : $( all_res_assets ) $( full_android_manifest ) \
$( DATA_BINDING_COMPILER)
@echo " Data-binding process: $@ "
@rm -rf $( PRIVATE_INTERMEDIATES) $( PRIVATE_SRC_OUT) && \
mkdir -p $( PRIVATE_INTERMEDIATES) $( PRIVATE_SRC_OUT) \
$( PRIVATE_XML_OUT) $( PRIVATE_RES_OUT) $( PRIVATE_ANNO_SRC_DIR)
$( hide) $( JAVA) -classpath $( DATA_BINDING_COMPILER) android.databinding.tool.MakeCopy \
$( PRIVATE_MANIFEST) $( PRIVATE_SRC_OUT) $( PRIVATE_XML_OUT) $( PRIVATE_RES_OUT) $( PRIVATE_RES_IN)
$( hide) touch $@
# Make sure the data-binding process happens before javac and generation of R.java.
$(R_file_stamp) : $( data_binding_stamp )
$(java_source_list_file) : $( data_binding_stamp )
$(full_classes_compiled_jar) : $( data_binding_stamp )
e n d i f # LOCAL_DATA_BINDING
framework_res_package_export :=
@ -495,6 +508,14 @@ ifdef LOCAL_USE_AAPT2
$(my_res_package) : $( all_library_res_package_export_deps )
e n d i f
# These four are set above for $(R_stamp_file) and $(my_res_package), but
# $(LOCAL_BUILT_MODULE) is not set before java.mk, so they have to be set again
# here.
$(LOCAL_BUILT_MODULE) : PRIVATE_AAPT_FLAGS := $( LOCAL_AAPT_FLAGS )
$(LOCAL_BUILT_MODULE) : PRIVATE_TARGET_AAPT_CHARACTERISTICS := $( TARGET_AAPT_CHARACTERISTICS )
$(LOCAL_BUILT_MODULE) : PRIVATE_MANIFEST_PACKAGE_NAME := $( LOCAL_MANIFEST_PACKAGE_NAME )
$(LOCAL_BUILT_MODULE) : PRIVATE_MANIFEST_INSTRUMENTATION_FOR := $( LOCAL_MANIFEST_INSTRUMENTATION_FOR )
i f n e q ( $( full_classes_jar ) , )
$(LOCAL_BUILT_MODULE) : PRIVATE_DEX_FILE := $( built_dex )
# Use the jarjar processed arhive as the initial package file.
@ -661,6 +682,7 @@ $(built_apk_splits) : $(intermediates)/%.apk : $(LOCAL_BUILT_MODULE)
$( sign-package)
# Rules to install the splits
installed_apk_splits := $( foreach s,$( my_split_suffixes) ,$( my_module_path) /$( LOCAL_MODULE) _$( s) .apk)
$(installed_apk_splits) : $( my_module_path ) /$( LOCAL_MODULE ) _ %.apk : $( intermediates ) /package_ %.apk
@echo " Install: $@ "
$( copy-file-to-new-target)