Commit 1fa1c441 authored by David 'Digit' Turner's avatar David 'Digit' Turner Committed by Commit Bot

android build: Split process_resources GN rule and script.

The process_resources() GN template and the associated
process_resources.py script are huge and difficult to understand
because they can be used to perform two slightly related
different things.

In preparation for a future CL that will introduce a new resource
compilation mode, this CL tries to clarify the situation by splitting
them into two sets of GN template + script:

   - prepare_resources() + prepare_resources.py, which are
     used to create .resources.zip archives of raw/uncompiled
     resources for resource related targets, as well as
     generating a corresponding R.txt and .srcjar(R.java)
     file.

     This corresponds to what process_resources() did when
     it was called from android_resources() and junit_binary().

     Note that this always generates non-final resource IDs,
     as well as a dummy onResourcesLoaded() method, necessary
     to compile, but not link, the ResourceRewriter class
     used to implement the system webview feature.

   - compile_resources() + compile_resources.py, which are used
     to compile all resource dependencies of a given binary
     (e.g. android_apk) into an intermediate .ap_ file.

     This corresponds to the behaviour of process_resources()
     when called from android_apk(). This generates final
     resource IDs by default, unless |shared_resources| or
     |shared_resources_whitelist| is used.

     Also, as a simplification, |shared_resources_whitelist|
     now implies |shared_resources|, except that it restrict
     the list of non-final resource IDs.

- Removed generate_constant_ids, since compile_resources()
  will always generate constant ids unless shared resources
  are being used. And prepare_resources() always generates
  non-constant IDs, as before the CL.

+ Add documentation for the prepare_resources() and
  compile_resources() internal GN rules, to make them
  a little less intimidating.

+ Removed |app_as_shared_lib|, since even before this CL all
  resources were generated with package ID 0x7f anyway, or
  fixed a compile_resources() time. Hence |shared_resources|
  did the exact same thing.

+ Improve --help output for prepare_resources.py and
  compile_resources.py by using option groups for inputs
  and outputs.

R=agrieve@chromium.org,yfriedman@chromium.org,estevenson@chromium.org,trevordixon@chromium.org

Bug: 820459
Change-Id: If05ac24a57c4dfa11f9ce43c30ab22e957b2765d
Reviewed-on: https://chromium-review.googlesource.com/957095
Commit-Queue: David Turner <digit@chromium.org>
Reviewed-by: default avataragrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543957}
parent f6520325
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -723,8 +723,6 @@ if (enable_java_templates) { ...@@ -723,8 +723,6 @@ if (enable_java_templates) {
# false. (see build/android/gyp/generate_v14_compatible_resources.py) # false. (see build/android/gyp/generate_v14_compatible_resources.py)
# shared_resources: If true make a resource package that can be loaded by a # shared_resources: If true make a resource package that can be loaded by a
# different application at runtime to access the package's resources. # different application at runtime to access the package's resources.
# app_as_shared_lib: If true make a resource package that can be loaded as
# both shared_resources and normal application.
# r_text_file: (optional) path to pre-generated R.txt to be used when # r_text_file: (optional) path to pre-generated R.txt to be used when
# generating R.java instead of resource-based aapt-generated one. # generating R.java instead of resource-based aapt-generated one.
# create_srcjar: If false, does not create an R.java file. Needed only for # create_srcjar: If false, does not create an R.java file. Needed only for
...@@ -792,17 +790,15 @@ if (enable_java_templates) { ...@@ -792,17 +790,15 @@ if (enable_java_templates) {
} }
} }
process_resources(target_name) { prepare_resources(target_name) {
forward_variables_from(invoker, forward_variables_from(invoker,
[ [
"app_as_shared_lib",
"android_manifest", "android_manifest",
"custom_package", "custom_package",
"deps", "deps",
"generated_resource_dirs", "generated_resource_dirs",
"generated_resource_files", "generated_resource_files",
"resource_dirs", "resource_dirs",
"shared_resources",
"v14_skip", "v14_skip",
]) ])
if (!defined(deps)) { if (!defined(deps)) {
...@@ -1151,8 +1147,8 @@ if (enable_java_templates) { ...@@ -1151,8 +1147,8 @@ if (enable_java_templates) {
_deps += invoker.deps _deps += invoker.deps
} }
_process_resources_target = "${target_name}__process_resources" _prepare_resources_target = "${target_name}__prepare_resources"
process_resources(_process_resources_target) { prepare_resources(_prepare_resources_target) {
deps = _deps + [ ":$_build_config_target_name" ] deps = _deps + [ ":$_build_config_target_name" ]
build_config = _build_config build_config = _build_config
srcjar_path = "${target_gen_dir}/${target_name}.srcjar" srcjar_path = "${target_gen_dir}/${target_name}.srcjar"
...@@ -1182,7 +1178,7 @@ if (enable_java_templates) { ...@@ -1182,7 +1178,7 @@ if (enable_java_templates) {
srcjar_deps = [] srcjar_deps = []
} }
srcjar_deps += [ srcjar_deps += [
":$_process_resources_target", ":$_prepare_resources_target",
# This dep is required for any targets that depend on //base:base_java. # This dep is required for any targets that depend on //base:base_java.
"//base:base_build_config_gen", "//base:base_build_config_gen",
...@@ -2014,12 +2010,11 @@ if (enable_java_templates) { ...@@ -2014,12 +2010,11 @@ if (enable_java_templates) {
"$_base_path.resources.main-dex-proguard.txt" "$_base_path.resources.main-dex-proguard.txt"
} }
_generated_proguard_config = "$_base_path.resources.proguard.txt" _generated_proguard_config = "$_base_path.resources.proguard.txt"
_process_resources_target = "${_template_name}__process_resources" _compile_resources_target = "${_template_name}__compile_resources"
process_resources(_process_resources_target) { compile_resources(_compile_resources_target) {
forward_variables_from(invoker, forward_variables_from(invoker,
[ [
"alternative_android_sdk_jar", "alternative_android_sdk_jar",
"app_as_shared_lib",
"shared_resources", "shared_resources",
"support_zh_hk", "support_zh_hk",
"aapt_locale_whitelist", "aapt_locale_whitelist",
...@@ -2036,7 +2031,6 @@ if (enable_java_templates) { ...@@ -2036,7 +2031,6 @@ if (enable_java_templates) {
} }
srcjar_path = "${target_gen_dir}/${target_name}.srcjar" srcjar_path = "${target_gen_dir}/${target_name}.srcjar"
r_text_out_path = "${target_gen_dir}/${target_name}_R.txt" r_text_out_path = "${target_gen_dir}/${target_name}_R.txt"
generate_constant_ids = true
proguard_file = _generated_proguard_config proguard_file = _generated_proguard_config
if (_enable_multidex) { if (_enable_multidex) {
proguard_file_main_dex = _generated_proguard_main_dex_config proguard_file_main_dex = _generated_proguard_main_dex_config
...@@ -2056,13 +2050,13 @@ if (enable_java_templates) { ...@@ -2056,13 +2050,13 @@ if (enable_java_templates) {
get_label_info(invoker.shared_resources_whitelist_target, "name") get_label_info(invoker.shared_resources_whitelist_target, "name")
shared_resources_whitelist = shared_resources_whitelist =
"${_whitelist_gen_dir}/${_whitelist_target_name}" + "${_whitelist_gen_dir}/${_whitelist_target_name}" +
"__process_resources_R.txt" "__compile_resources_R.txt"
deps += [ deps += [
"${invoker.shared_resources_whitelist_target}__process_resources", "${invoker.shared_resources_whitelist_target}__compile_resources",
] ]
} }
} }
_srcjar_deps += [ ":$_process_resources_target" ] _srcjar_deps += [ ":$_compile_resources_target" ]
if (_native_libs_deps != []) { if (_native_libs_deps != []) {
_enable_chromium_linker_tests = false _enable_chromium_linker_tests = false
...@@ -2240,7 +2234,7 @@ if (enable_java_templates) { ...@@ -2240,7 +2234,7 @@ if (enable_java_templates) {
]) ])
deps = _deps + [ deps = _deps + [
":$_build_config_target", ":$_build_config_target",
":$_process_resources_target", ":$_compile_resources_target",
":$_java_target", ":$_java_target",
] ]
inputs = [ inputs = [
...@@ -2298,7 +2292,7 @@ if (enable_java_templates) { ...@@ -2298,7 +2292,7 @@ if (enable_java_templates) {
if (_enable_multidex) { if (_enable_multidex) {
extra_main_dex_proguard_config = _generated_proguard_main_dex_config extra_main_dex_proguard_config = _generated_proguard_main_dex_config
deps += [ ":$_process_resources_target" ] deps += [ ":$_compile_resources_target" ]
} }
# All deps are already included in _dex_sources when proguard is used. # All deps are already included in _dex_sources when proguard is used.
...@@ -2426,7 +2420,7 @@ if (enable_java_templates) { ...@@ -2426,7 +2420,7 @@ if (enable_java_templates) {
incremental_deps = _deps + [ incremental_deps = _deps + [
":$_merge_manifest_target", ":$_merge_manifest_target",
":$_build_config_target", ":$_build_config_target",
":$_process_resources_target", ":$_compile_resources_target",
] ]
# This target generates the input file _all_resources_zip_path. # This target generates the input file _all_resources_zip_path.
...@@ -2434,7 +2428,7 @@ if (enable_java_templates) { ...@@ -2434,7 +2428,7 @@ if (enable_java_templates) {
":$_merge_manifest_target", ":$_merge_manifest_target",
":$_build_config_target", ":$_build_config_target",
":$_final_dex_target_name", ":$_final_dex_target_name",
":$_process_resources_target", ":$_compile_resources_target",
] ]
if (_native_libs_deps != [] || if (_native_libs_deps != [] ||
......
...@@ -112,7 +112,6 @@ template("monochrome_public_apk_tmpl") { ...@@ -112,7 +112,6 @@ template("monochrome_public_apk_tmpl") {
} }
alternative_android_sdk_jar = webview_framework_jar alternative_android_sdk_jar = webview_framework_jar
app_as_shared_lib = true
use_chromium_linker = false use_chromium_linker = false
requires_sdk_api_level_23 = true requires_sdk_api_level_23 = true
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment