| load("//tools/python:private/defs.bzl", "py_binary", "py_library") | 
 | load(":defs.bzl", "run_ijar", "run_singlejar") | 
 |  | 
 | package(default_visibility = ["//visibility:public"]) | 
 |  | 
 | # The toolchain type used to distinguish Android SDK toolchains. | 
 | toolchain_type(name = "sdk_toolchain_type") | 
 |  | 
 | alias( | 
 |     name = "sdk", | 
 |     actual = "//external:android/sdk", | 
 | ) | 
 |  | 
 | android_tools_defaults_jar(name = "android_jar") | 
 |  | 
 | android_library( | 
 |     name = "incremental_stub_application", | 
 |     exports = ["//src/tools/android/java/com/google/devtools/build/android/incrementaldeployment:incremental_stub_application"], | 
 | ) | 
 |  | 
 | android_library( | 
 |     name = "incremental_split_stub_application", | 
 |     exports = ["//src/tools/android/java/com/google/devtools/build/android/incrementaldeployment:incremental_split_stub_application"], | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "busybox", | 
 |     actual = "//src/tools/android/java/com/google/devtools/build/android:ResourceProcessorBusyBox", | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "merge_dexzips", | 
 |     actual = "//src/tools/android/java/com/google/devtools/build/android/ziputils:reducer", | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "shuffle_jars", | 
 |     actual = "//src/tools/android/java/com/google/devtools/build/android/ziputils:mapper", | 
 | ) | 
 |  | 
 | # Defines d8_dexbuilder using @<repo>//:d8_jar_import generated by android_sdk_repository rule | 
 | # without needing the SDK repo's name (typically @androidsdk but not required). | 
 | java_binary( | 
 |     name = "d8_dexbuilder", | 
 |     main_class = "com.google.devtools.build.android.r8.CompatDexBuilder", | 
 |     visibility = ["//visibility:private"], | 
 |     runtime_deps = ["//src/tools/android/java/com/google/devtools/build/android/r8"], | 
 | ) | 
 |  | 
 | # NOTE: d8 dex builder doesn't support the persistent worker mode at the moment. To use this config, | 
 | # without a build error, --nouse_workers_with_dexbuilder flag must also be specified. | 
 | config_setting( | 
 |     name = "d8_incremental_dexing", | 
 |     values = { | 
 |         "define": "android_incremental_dexing_tool=d8_dexbuilder", | 
 |     }, | 
 | ) | 
 |  | 
 | config_setting( | 
 |     name = "dx_incremental_dexing", | 
 |     values = { | 
 |         "define": "android_incremental_dexing_tool=dx_dexbuilder", | 
 |     }, | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "dexbuilder", | 
 |     actual = select({ | 
 |         "d8_incremental_dexing": ":d8_dexbuilder", | 
 |         "dx_incremental_dexing": "//src/tools/android/java/com/google/devtools/build/android/dexer:DexBuilder", | 
 |         "//conditions:default": "//src/tools/android/java/com/google/devtools/build/android/dexer:DexBuilder", | 
 |     }), | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "dexbuilder_after_proguard", | 
 |     actual = "//src/tools/android/java/com/google/devtools/build/android/dexer:DexBuilder", | 
 | ) | 
 |  | 
 | # Defines d8_dexmerger using @<repo>//:d8_jar_import generated by android_sdk_repository rule | 
 | # without needing the SDK repo's name (typically @androidsdk but not required). | 
 | java_binary( | 
 |     name = "d8_dexmerger", | 
 |     main_class = "com.google.devtools.build.android.r8.DexFileMerger", | 
 |     visibility = ["//visibility:private"], | 
 |     runtime_deps = ["//src/tools/android/java/com/google/devtools/build/android/r8"], | 
 | ) | 
 |  | 
 | config_setting( | 
 |     name = "use_dx_dexmerger", | 
 |     values = { | 
 |         "define": "android_dexmerger_tool=dx_dexmerger", | 
 |     }, | 
 | ) | 
 |  | 
 | config_setting( | 
 |     name = "use_d8_dexmerger", | 
 |     values = { | 
 |         "define": "android_dexmerger_tool=d8_dexmerger", | 
 |     }, | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "dexmerger", | 
 |     actual = select({ | 
 |         "use_d8_dexmerger": ":d8_dexmerger", | 
 |         "use_dx_dexmerger": "//src/tools/android/java/com/google/devtools/build/android/dexer:DexFileMerger", | 
 |         "//conditions:default": "//src/tools/android/java/com/google/devtools/build/android/dexer:DexFileMerger", | 
 |     }), | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "dexsharder", | 
 |     actual = "//src/tools/android/java/com/google/devtools/build/android/dexer:DexFileSplitter", | 
 | ) | 
 |  | 
 | sh_binary( | 
 |     name = "desugar_java8", | 
 |     srcs = ["desugar.sh"], | 
 |     data = ["//src/tools/android/java/com/google/devtools/build/android/desugar:Desugar"], | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "aar_import_deps_checker", | 
 |     actual = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker_embedded", | 
 |     visibility = ["//visibility:public"], | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "zip_filter", | 
 |     actual = "//src/tools/android/java/com/google/devtools/build/android:ZipFilterAction", | 
 | ) | 
 |  | 
 | # Bazel puts this on the bootclasspath of android_* targets to support Java 8 | 
 | # if requested. | 
 | filegroup( | 
 |     name = "desugar_java8_extra_bootclasspath", | 
 |     srcs = ["java_base_extras.jar"], | 
 |     visibility = ["//visibility:public"], | 
 | ) | 
 |  | 
 | # javac needs this Jar to compile lambdas, method references, and type annotations. | 
 | # These classes are not part of the android.jar. | 
 | run_singlejar( | 
 |     name = "gen_java_base_extras_jar", | 
 |     srcs = [ | 
 |         "@bazel_tools//tools/jdk:platformclasspath", | 
 |     ], | 
 |     out = "java_base_extras.jar", | 
 |     include_prefixes = [ | 
 |         "java/lang/invoke/", | 
 |         "java/lang/annotation/", | 
 |     ], | 
 |     visibility = ["//visibility:private"], | 
 | ) | 
 |  | 
 | java_import( | 
 |     name = "desugared_java8_legacy_apis", | 
 |     jars = [":ijar_desugared_java8_legacy_libs"], | 
 |     neverlink = 1, | 
 |     visibility = ["//visibility:public"], | 
 | ) | 
 |  | 
 | run_ijar( | 
 |     name = "ijar_desugared_java8_legacy_libs", | 
 |     jar = "desugared_java8_legacy_libs.jar", | 
 |     visibility = ["//visibility:private"], | 
 | ) | 
 |  | 
 | sh_binary( | 
 |     name = "build_java8_legacy_dex", | 
 |     srcs = ["build_java8_legacy_dex.sh"], | 
 |     data = [ | 
 |         "minify_java8_legacy_libs.cfg", | 
 |         ":desugared_java8_legacy_libs", | 
 |         ":dexer", | 
 |         "@bazel_tools//src/tools/android/java/com/google/devtools/build/android/desugar/scan:KeepScanner", | 
 |         "@bazel_tools//tools/jdk:proguard", | 
 |     ], | 
 |     visibility = ["//visibility:public"], | 
 | ) | 
 |  | 
 | sh_binary( | 
 |     name = "merge_proguard_maps", | 
 |     srcs = ["fail.sh"], | 
 |     visibility = ["//visibility:public"], | 
 | ) | 
 |  | 
 | genrule( | 
 |     name = "java8_legacy_dex", | 
 |     outs = ["java8_legacy.dex.zip"], | 
 |     cmd = """$(location :build_java8_legacy_dex) --output $@""", | 
 |     tools = [":build_java8_legacy_dex"], | 
 |     visibility = ["//visibility:public"], | 
 | ) | 
 |  | 
 | filegroup( | 
 |     name = "desugared_java8_legacy_libs", | 
 |     srcs = ["desugared_java8_legacy_libs.jar"], | 
 |     visibility = ["//visibility:private"], | 
 | ) | 
 |  | 
 | genrule( | 
 |     name = "desugar_java8_legacy_libs", | 
 |     srcs = ["@android_tools//:desugar_jdk_libs.jar"], | 
 |     outs = ["desugared_java8_legacy_libs.jar"], | 
 |     cmd = """ | 
 |     $(location :desugar_java8) \ | 
 |         --input $< \ | 
 |         --output $@ \ | 
 |         --classpath_entry "$(location @bazel_tools//tools/jdk:platformclasspath)" \ | 
 |         --core_library --allow_empty_bootclasspath \ | 
 |         --nobest_effort_tolerate_missing_deps \ | 
 |         --noemit_dependency_metadata_as_needed \ | 
 |         --nodesugar_try_with_resources_if_needed \ | 
 |         --desugar_supported_core_libs \ | 
 |         --rewrite_core_library_prefix java/time/ \ | 
 |         --rewrite_core_library_prefix java/lang/Double8 \ | 
 |         --rewrite_core_library_prefix java/lang/Integer8 \ | 
 |         --rewrite_core_library_prefix java/lang/Long8 \ | 
 |         --rewrite_core_library_prefix java/lang/Math8 \ | 
 |         --rewrite_core_library_prefix java/io/Desugar \ | 
 |         --rewrite_core_library_prefix java/io/UncheckedIOException \ | 
 |         --rewrite_core_library_prefix java/util/stream/ \ | 
 |         --rewrite_core_library_prefix java/util/function/ \ | 
 |         --rewrite_core_library_prefix java/util/Desugar \ | 
 |         --rewrite_core_library_prefix java/util/DoubleSummaryStatistics \ | 
 |         --rewrite_core_library_prefix java/util/IntSummaryStatistics \ | 
 |         --rewrite_core_library_prefix java/util/LongSummaryStatistics \ | 
 |         --rewrite_core_library_prefix java/util/Objects \ | 
 |         --rewrite_core_library_prefix java/util/Optional \ | 
 |         --rewrite_core_library_prefix java/util/PrimitiveIterator \ | 
 |         --rewrite_core_library_prefix java/util/Spliterator \ | 
 |         --rewrite_core_library_prefix java/util/StringJoiner \ | 
 |         --rewrite_core_library_prefix javadesugar/testing/ \ | 
 |         --rewrite_core_library_prefix java/util/concurrent/ConcurrentHashMap \ | 
 |         --rewrite_core_library_prefix java/util/concurrent/ThreadLocalRandom \ | 
 |         --rewrite_core_library_prefix java/util/concurrent/atomic/DesugarAtomic \ | 
 |         --auto_desugar_shadowed_api_use \ | 
 |         --emulate_core_library_interface java/util/Collection \ | 
 |         --emulate_core_library_interface java/util/Map \ | 
 |         --emulate_core_library_interface java/util/Map\\$$Entry \ | 
 |         --emulate_core_library_interface java/util/Iterator \ | 
 |         --emulate_core_library_interface java/util/Comparator \ | 
 |         --dont_rewrite_core_library_invocation "java/util/Iterator#remove" """, | 
 |     tools = [ | 
 |         ":desugar_java8", | 
 |         "@bazel_tools//tools/jdk:platformclasspath", | 
 |     ], | 
 |     visibility = ["//visibility:private"], | 
 | ) | 
 |  | 
 | # No-one should depend on this but :desugared_java8_legacy_libs above | 
 | exports_files( | 
 |     ["desugar_jdk_libs.jar"], | 
 |     visibility = ["//visibility:private"], | 
 | ) | 
 |  | 
 | # Mirrors @<repo>//:dx_binary generated by android_sdk_repository rule without | 
 | # needing the SDK repo's name (typically @androidsdk but not required). | 
 | java_binary( | 
 |     name = "dexer", | 
 |     main_class = "com.android.dx.command.Main", | 
 |     visibility = ["//visibility:private"], | 
 |     runtime_deps = ["//external:android/dx_jar_import"], | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "IdlClass", | 
 |     actual = "//src/tools/android/java/com/google/devtools/build/android/idlclass:IdlClass", | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "instrumentation_test_check", | 
 |     srcs = ["instrumentation_test_check.py"], | 
 |     python_version = "PY3", | 
 |     deps = ["//third_party/py/abseil"], | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "build_incremental_dexmanifest", | 
 |     srcs = [":build_incremental_dexmanifest.py"], | 
 |     python_version = "PY3", | 
 |     deps = [], | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "build_split_manifest", | 
 |     srcs = ["build_split_manifest.py"], | 
 |     python_version = "PY3", | 
 |     deps = [ | 
 |         "//third_party/py/abseil", | 
 |     ], | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "incremental_install", | 
 |     srcs = ["incremental_install.py"], | 
 |     python_version = "PY3", | 
 |     deps = [ | 
 |         "//third_party/py/abseil", | 
 |     ], | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "strip_resources", | 
 |     srcs = ["strip_resources.py"], | 
 |     python_version = "PY3", | 
 |     deps = [ | 
 |         "//third_party/py/abseil", | 
 |     ], | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "aar_native_libs_zip_creator", | 
 |     srcs = [ | 
 |         "aar_native_libs_zip_creator.py", | 
 |     ], | 
 |     python_version = "PY3", | 
 |     deps = [ | 
 |         ":junction_lib", | 
 |         "//third_party/py/abseil", | 
 |     ], | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "stubify_manifest", | 
 |     srcs = ["stubify_manifest.py"], | 
 |     python_version = "PY3", | 
 |     deps = [ | 
 |         "//third_party/py/abseil", | 
 |     ], | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "aar_embedded_proguard_extractor", | 
 |     srcs = ["aar_embedded_proguard_extractor.py"], | 
 |     python_version = "PY3", | 
 |     deps = [ | 
 |         ":junction_lib", | 
 |         "//third_party/py/abseil", | 
 |     ], | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "aar_embedded_jars_extractor", | 
 |     srcs = ["aar_embedded_jars_extractor.py"], | 
 |     python_version = "PY3", | 
 |     deps = [ | 
 |         ":junction_lib", | 
 |         "//third_party/py/abseil", | 
 |     ], | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "aar_resources_extractor", | 
 |     srcs = ["aar_resources_extractor.py"], | 
 |     python_version = "PY3", | 
 |     deps = [ | 
 |         ":junction_lib", | 
 |         "//third_party/py/abseil", | 
 |     ], | 
 | ) | 
 |  | 
 | py_binary( | 
 |     name = "resource_extractor", | 
 |     srcs = ["resource_extractor.py"], | 
 |     python_version = "PY3", | 
 | ) | 
 |  | 
 | py_library( | 
 |     name = "junction_lib", | 
 |     srcs = ["junction.py"], | 
 |     # TODO(bazel-team): remove srcs_version = "PY2AND3" while fixing https://github.com/bazelbuild/bazel/issues/10127. | 
 |     srcs_version = "PY2AND3", | 
 |     visibility = ["//visibility:private"], | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "android_runtest", | 
 |     actual = "fail.sh", | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "adb_static", | 
 |     actual = "fail.sh", | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "adb", | 
 |     actual = "@androidsdk//:adb", | 
 | ) | 
 |  | 
 | # If needed, this file can be regenerated by (validity is 30 * 365 days): | 
 | # keytool -genkeypair \ | 
 | #    -alias androiddebugkey \ | 
 | #    -dname "CN=Android Debug, O=Android, C=US" \ | 
 | #    -keystore cica \ | 
 | #    -sigalg SHA256withDSA \ | 
 | #    -validity 10950 | 
 | filegroup( | 
 |     name = "debug_keystore", | 
 |     srcs = ["bazel_debug.keystore"], | 
 | ) | 
 |  | 
 | java_binary( | 
 |     name = "databinding_exec", | 
 |     main_class = "android.databinding.AndroidDataBinding", | 
 |     runtime_deps = [ | 
 |         "//src/tools/android/java/com/google/devtools/build/android:all_android_tools", | 
 |     ], | 
 | ) | 
 |  | 
 | alias( | 
 |     name = "databinding_annotation_processor", | 
 |     actual = "//external:databinding_annotation_processor", | 
 | ) | 
 |  | 
 | # This is the default value of databinding_annotation_processor if the user does | 
 | # not provide one. | 
 | filegroup(name = "empty") | 
 |  | 
 | alias( | 
 |     name = "instrumentation_test_entry_point", | 
 |     actual = "@android_test_support//:instrumentation_test_runner", | 
 | ) | 
 |  | 
 | # This is the default binding of //external:android/sdk. If someone attempts to | 
 | # build a rule that depends on //external:android/sdk without setting up | 
 | # android_sdk_repository in their WORKSPACE, the genrule will fail with a | 
 | # helpful error message. | 
 | android_sdk( | 
 |     name = "poison_pill_android_sdk", | 
 |     aapt = ":error_message", | 
 |     adb = ":error_message", | 
 |     aidl = ":error_message", | 
 |     android_jar = ":error_message.jar", | 
 |     apksigner = ":error_message", | 
 |     dx = ":error_message", | 
 |     framework_aidl = ":error_message", | 
 |     main_dex_classes = ":error_message", | 
 |     main_dex_list_creator = ":error_message", | 
 |     proguard = ":error_message", | 
 |     shrinked_android_jar = ":error_message.jar", | 
 |     zipalign = ":error_message", | 
 | ) | 
 |  | 
 | genrule( | 
 |     name = "no_android_sdk_repository_error", | 
 |     outs = [ | 
 |         "error_message", | 
 |         "error_message.jar", | 
 |     ], | 
 |     cmd = """echo \ | 
 |     This build requires an Android SDK. Please add the android_sdk_repository \ | 
 |     rule to your WORKSPACE. ; \ | 
 |     exit 1 """, | 
 | ) | 
 |  | 
 | # //external:has_androidsdk is bound to either | 
 | # @bazel_tools//tools/android:always_true or | 
 | # @bazel_tools//tools/android:always_false depending on whether | 
 | # android_sdk_repository has run and is valid. This allows targets to depend on | 
 | # targets from @androidsdk if and only if the user has an | 
 | # android_sdk_repository set up. | 
 |  | 
 | config_feature_flag( | 
 |     name = "true", | 
 |     allowed_values = [ | 
 |         "true", | 
 |         "false", | 
 |     ], | 
 |     default_value = "true", | 
 | ) | 
 |  | 
 | config_setting( | 
 |     name = "always_true", | 
 |     flag_values = { | 
 |         ":true": "true", | 
 |     }, | 
 | ) | 
 |  | 
 | config_setting( | 
 |     name = "always_false", | 
 |     flag_values = { | 
 |         ":true": "false", | 
 |     }, | 
 | ) | 
 |  | 
 | package_group( | 
 |     name = "android_device_allowlist", | 
 |     packages = ["//..."], | 
 | ) | 
 |  | 
 | package_group( | 
 |     name = "export_deps_allowlist", | 
 |     packages = ["//..."], | 
 | ) | 
 |  | 
 | package_group( | 
 |     name = "allow_android_library_deps_without_srcs_allowlist", | 
 |     packages = ["//..."], | 
 | ) | 
 |  | 
 | sh_binary( | 
 |     name = "dex_list_obfuscator", | 
 |     srcs = ["dex_list_obfuscator.sh"], | 
 |     visibility = ["//visibility:public"], | 
 | ) | 
 |  | 
 | filegroup( | 
 |     name = "bzl_srcs", | 
 |     srcs = glob(["*.bzl"]), | 
 |     visibility = ["//tools:__pkg__"], | 
 | ) |