Add support for aar_import_external and aar_maven_import_external

Usage example:

```python
# In WORKSPACE
load("@bazel_tools//tools/build_defs/repo:android.bzl", "aar_import_external", "aar_maven_import_external")

# Specify the URL directly:
aar_import_external(
    name = "com_android_support_preference_v14_25_1_0",                              # required
    licenses = ["notice"],                                                           # required
    aar_urls = [                                                                     # required
        "https://dl.google.com/dl/android/maven2/com/android/support/preference-v14/25.1.0/preference-v14-25.1.0.aar"
    ],
    aar_sha256 = "442473fe5c395ebef26c14eb01d17ceda33ad207a4cc23a32a2ad95b87edfabb", # optional or empty string
    deps = [                                                                         # optional or empty list
        "@com_android_support_recyclerview_v7_25_1_0//aar",
        "@com_android_support_appcompat_v7_25_1_0//aar",
        "@com_android_support_preference_v7_25_1_0//aar",
        "@com_android_support_support_v4_25_1_0//aar",
    ],
)

# Or, specify the artifact coordinate:
aar_maven_import_external(
    name = "com_android_support_preference_v14_25_1_0",                         # required
    artifact = "com.android.support.test:preference-v14:25.1.0",                # required
    sha256 = "442473fe5c395ebef26c14eb01d17ceda33ad207a4cc23a32a2ad95b87edfabb" # optional or empty string
    licenses = ["notice"],                                                      # required
    server_urls = ["https://maven.google.com"],                                 # required
    deps = [                                                                    # optional or empty list
        "@com_android_support_recyclerview_v7_25_1_0//aar",
        "@com_android_support_appcompat_v7_25_1_0//aar",
        "@com_android_support_preference_v7_25_1_0//aar",
        "@com_android_support_support_v4_25_1_0//aar",
    ],
)

# In BUILD.bazel
android_library(
    name = "foo",
    srcs = [...],
    deps = [
        "@com_android_support_preference_v14_25_1_0//aar",
    ],
)
```

To test this out with gmaven_rules, change the `load` statement in https://github.com/bazelbuild/gmaven_rules/blob/master/gmaven.bzl to

```
load('@bazel_tools//tools/build_defs/repo:android.bzl', 'aar_import_external')
load('@bazel_tools//tools/build_defs/repo:java.bzl', 'java_import_external')
```

Fixes https://github.com/bazelbuild/bazel/issues/4654

RELNOTES: New rules for importing Android dependencies: `aar_import_external` and `aar_maven_import_external`. `aar_import_external` enables specifying external AAR dependencies using a list of HTTP URLs for the artifact. `aar_maven_import_external` enables specifying external AAR dependencies using the artifact coordinate and a list of server URLs.

Closes #5319.

Change-Id: I9517e68ab78f2e30fb6ceabfe3b35061c585d607
PiperOrigin-RevId: 199839047
diff --git a/tools/build_defs/repo/android.bzl b/tools/build_defs/repo/android.bzl
new file mode 100644
index 0000000..1e0e9ca
--- /dev/null
+++ b/tools/build_defs/repo/android.bzl
@@ -0,0 +1,85 @@
+# Copyright 2018 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Rules for importing external Android Archives (AARs).
+
+Usage:
+
+    # In WORKSPACE
+    load("@bazel_tools//tools/build_defs/repo:android.bzl", "aar_import_external", "aar_maven_import_external")
+
+    # Specify the URL directly:
+    aar_import_external(
+        name = "com_android_support_preference_v14_25_1_0",                              # required
+        licenses = ["notice"],                                                           # required
+        aar_urls = [                                                                     # required
+            "https://dl.google.com/dl/android/maven2/com/android/support/preference-v14/25.1.0/preference-v14-25.1.0.aar"
+        ],
+        aar_sha256 = "442473fe5c395ebef26c14eb01d17ceda33ad207a4cc23a32a2ad95b87edfabb", # optional or empty string
+        deps = [                                                                         # optional or empty list
+            "@com_android_support_recyclerview_v7_25_1_0//aar",
+            "@com_android_support_appcompat_v7_25_1_0//aar",
+            "@com_android_support_preference_v7_25_1_0//aar",
+            "@com_android_support_support_v4_25_1_0//aar",
+        ],
+    )
+
+    # Or, specify the artifact coordinate:
+    aar_maven_import_external(
+        name = "com_android_support_preference_v14_25_1_0",                         # required
+        artifact = "com.android.support.test:preference-v14:25.1.0",                # required
+        sha256 = "442473fe5c395ebef26c14eb01d17ceda33ad207a4cc23a32a2ad95b87edfabb" # optional or empty string
+        licenses = ["notice"],                                                      # required
+        server_urls = ["https://maven.google.com"],                                 # required
+        deps = [                                                                    # optional or empty list
+            "@com_android_support_recyclerview_v7_25_1_0//aar",
+            "@com_android_support_appcompat_v7_25_1_0//aar",
+            "@com_android_support_preference_v7_25_1_0//aar",
+            "@com_android_support_support_v4_25_1_0//aar",
+        ],
+    )
+
+    # In BUILD.bazel
+    android_library(
+        name = "foo",
+        srcs = [...],
+        deps = [
+            "@com_android_support_preference_v14_25_1_0//aar",
+        ],
+    )
+"""
+
+load(":jvm.bzl", "convert_artifact_coordinate_to_urls", "jvm_import_external")
+
+def aar_import_external(aar_sha256, aar_urls, **kwargs):
+    jvm_import_external(
+        rule_name = "aar_import",
+        rule_metadata = {
+            "extension": "aar",
+            "import_attr": "aar = %s",
+        },
+        artifact_sha256 = aar_sha256,
+        artifact_urls = aar_urls,
+        **kwargs
+    )
+
+def aar_maven_import_external(artifact, server_urls, aar_sha256 = "", **kwargs):
+    aar_import_external(
+        aar_sha256 = aar_sha256,
+        aar_urls = convert_artifact_coordinate_to_urls(
+            artifact,
+            server_urls,
+            "aar",
+        ),
+        **kwargs
+    )