Merge remote-tracking branch 'aosp/upstream-pre-alpha' into mergeUpstream am: dac61f349d am: ae03d131fe am: a59fc225f8 am: cf1903cf5c

Original change: https://android-review.googlesource.com/c/platform/external/bazelbuild-rules_android/+/1646589

Change-Id: Ic1e6d8b966c28ddfb9085a2d4ffeb21bc622e92d
diff --git a/toolchains/android/BUILD b/toolchains/android/BUILD
index 6c731a9..3741ee8 100644
--- a/toolchains/android/BUILD
+++ b/toolchains/android/BUILD
@@ -12,7 +12,10 @@
 )
 
 # Android Toolchain Type
-toolchain_type(name = "toolchain_type")
+toolchain_type(
+    name = "toolchain_type",
+    visibility = ["//visibility:public"],
+)
 
 # Default Android Toolchain
 android_toolchain(
@@ -44,9 +47,11 @@
 sh_binary(
     name = "zip",
     srcs = [":zip.sh"],
+    visibility = ["//visibility:public"],
 )
 
 sh_binary(
     name = "unzip",
     srcs = [":unzip.sh"],
+    visibility = ["//visibility:public"],
 )
diff --git a/toolchains/android_sdk/BUILD b/toolchains/android_sdk/BUILD
index 10e40ca..d675cbe 100644
--- a/toolchains/android_sdk/BUILD
+++ b/toolchains/android_sdk/BUILD
@@ -9,7 +9,10 @@
 )
 
 # Android SDK Toolchain Type
-toolchain_type(name = "toolchain_type")
+toolchain_type(
+    name = "toolchain_type",
+    visibility = ["//visibility:public"],
+)
 
 toolchain(
     name = "android_sdk_tools",
diff --git a/tools/android/BUILD b/tools/android/BUILD
index c0f554c..7c33f67 100644
--- a/tools/android/BUILD
+++ b/tools/android/BUILD
@@ -8,6 +8,18 @@
 # TODO(b/175833857): This is a stub, should remove.
 alias(
     name = "merge_manifests",
-    actual = "@androidsdk//:fail",
+    actual = ":fail",
     visibility = ["//visibility:public"],
 )
+
+genrule(
+  name = "gen_fail",
+  outs = ["fail.sh"],
+  cmd = "echo 'exit 1' > $@",
+  executable = 1,
+)
+
+sh_binary(
+  name = "fail",
+  srcs =[":fail.sh"],
+)
diff --git a/tools/android/defs.bzl b/tools/android/defs.bzl
index 6aa1896..07c7a13 100644
--- a/tools/android/defs.bzl
+++ b/tools/android/defs.bzl
@@ -21,7 +21,20 @@
 
 android_jar = rule(
     implementation = _android_jar_impl,
+    # TODO: Should use a toolchain instead of a configuration_field on
+    # --android_sdk as below, however that appears to be broken when used
+    # from an local_repository: b/183060658.
+    #toolchains = [
+    #    "//toolchains/android_sdk:toolchain_type",
+    #],
     attrs = {
-        "_sdk": attr.label(default = "@androidsdk//:sdk"),
+        "_sdk": attr.label(
+            allow_rules = ["android_sdk"],
+            default = configuration_field(
+                fragment = "android",
+                name = "android_sdk_label",
+            ),
+            providers = [AndroidSdkInfo],
+        ),
     },
 )