system_webview_bundle.gni 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. # Copyright 2019 The Chromium Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. import("//build/config/android/rules.gni")
  5. import("//build/config/locales.gni")
  6. import("//weblayer/variables.gni")
  7. template("system_webview_bundle") {
  8. _base_target_name = get_label_info(invoker.base_module_target, "name")
  9. _base_target_gen_dir =
  10. get_label_info(invoker.base_module_target, "target_gen_dir")
  11. _base_module_build_config =
  12. "$_base_target_gen_dir/${_base_target_name}.build_config.json"
  13. _rebased_base_module_build_config =
  14. rebase_path(_base_module_build_config, root_build_dir)
  15. _base_module_version_code =
  16. "@FileArg($_rebased_base_module_build_config:deps_info:version_code)"
  17. if (webview_includes_weblayer && weblayer_in_split) {
  18. # TODO(crbug.com/1105096): If WebView starts using
  19. # //components/module_installer, it will probably make sense to refactor
  20. # chrome_feature_module() to be used here.
  21. _base_module_build_config_target =
  22. "${invoker.base_module_target}$build_config_target_suffix"
  23. _weblayer_module_target = "${target_name}__weblayer_bundle_module"
  24. _weblayer_module_desc = {
  25. name = "weblayer"
  26. module_target = ":${_weblayer_module_target}"
  27. }
  28. # TODO(crbug.com/1105096): This target is needed to add all WebLayer
  29. # resources to the base module because of bugs with shared resources in
  30. # splits.
  31. android_resources("${_base_target_name}__all_weblayer_resources") {
  32. recursive_resource_deps = true
  33. deps = [ "//weblayer/browser/java" ]
  34. if (defined(invoker.weblayer_deps)) {
  35. deps += invoker.weblayer_deps
  36. }
  37. }
  38. android_app_bundle_module(_weblayer_module_target) {
  39. forward_variables_from(invoker,
  40. [
  41. "base_module_target",
  42. "min_sdk_version",
  43. "uncompress_shared_libraries",
  44. ])
  45. android_manifest = "//weblayer/browser/java/AndroidManifest.xml"
  46. # The manifest depends on the package name from the base build config.
  47. android_manifest_dep = _base_module_build_config_target
  48. deps = [
  49. "//weblayer/browser/java",
  50. _base_module_build_config_target,
  51. ]
  52. if (defined(invoker.weblayer_deps)) {
  53. deps += invoker.weblayer_deps
  54. }
  55. aapt_locale_allowlist = platform_pak_locales
  56. proguard_enabled = !is_java_debug
  57. package_name = "weblayer"
  58. package_id = 126
  59. version_name =
  60. "@FileArg($_rebased_base_module_build_config:deps_info:version_name)"
  61. version_code = _base_module_version_code
  62. manifest_package =
  63. "@FileArg($_rebased_base_module_build_config:deps_info:package_name)"
  64. }
  65. }
  66. android_app_bundle(target_name) {
  67. command_line_flags_file = "webview-command-line"
  68. proguard_enabled = !is_java_debug
  69. enable_language_splits = true
  70. version_code = _base_module_version_code
  71. if (webview_includes_weblayer && weblayer_in_split) {
  72. extra_modules = [ _weblayer_module_desc ]
  73. }
  74. system_image_locale_allowlist = platform_pak_locales
  75. is_multi_abi =
  76. android_64bit_target_cpu && (!defined(invoker.include_64_bit_webview) ||
  77. invoker.include_64_bit_webview) &&
  78. (!defined(invoker.include_32_bit_webview) ||
  79. invoker.include_32_bit_webview)
  80. if (!defined(proguard_android_sdk_dep)) {
  81. proguard_android_sdk_dep = webview_framework_dep
  82. }
  83. # For this to be respected, it must also be set on the base module target.
  84. strip_unused_resources = is_official_build
  85. forward_variables_from(invoker, "*")
  86. }
  87. }