Switch to using the d8 jar from maven.google.com instead of the jar from the
Android SDK.

RELNOTES: None
PiperOrigin-RevId: 303112546
diff --git a/WORKSPACE b/WORKSPACE
index cd0eb77..4208a66 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -1,6 +1,6 @@
 workspace(name = "io_bazel")
 
-load("//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
+load("//tools/build_defs/repo:http.bzl", "http_archive", "http_file", "http_jar")
 
 # These can be used as values for the patch_cmds and patch_cmds_win attributes
 # of http_archive, in order to export the WORKSPACE file from the BUILD or
@@ -154,6 +154,8 @@
         "1.25.0.zip",
         "rules_nodejs-1.3.0.tar.gz",
         "android_tools_pkg-0.16.0.tar.gz",
+        # for android_gmaven_r8
+        "r8-1.6.84.jar",
         # bazelbuild/bazel-skylib
         "2d4c9528e0f453b5950eeaeac11d8d09f5a504d4.tar.gz",
         # bazelbuild/platforms
@@ -184,6 +186,7 @@
         # rules_nodejs
         "rules_nodejs-1.3.0.tar.gz": "b6670f9f43faa66e3009488bbd909bc7bc46a5a9661a33f6bc578068d1837f37",
         "android_tools_pkg-0.16.0.tar.gz": "e2cbd43a9d23aa32197c29d689a7e017f205acb07053f5dd584f500a1a9d4361",
+        "r8-1.6.84.jar": "824d94de0210df3692a812e18ffa334a17365e059856ae03c772e9490d61d4d8",
         # bazelbuild/bazel-skylib
         "2d4c9528e0f453b5950eeaeac11d8d09f5a504d4.tar.gz": "c00ceec469dbcf7929972e3c79f20c14033824538038a554952f5c31d8832f96",
         # bazelbuild/platforms
@@ -233,6 +236,9 @@
         "android_tools_pkg-0.16.0.tar.gz": [
             "https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.16.0.tar.gz",
         ],
+        "r8-1.6.84.jar": [
+            "https://maven.google.com/com/android/tools/r8/1.6.84/r8-1.6.84.jar",
+        ],
         # bazelbuild/bazel-skylib
         "2d4c9528e0f453b5950eeaeac11d8d09f5a504d4.tar.gz": [
             "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/archive/2d4c9528e0f453b5950eeaeac11d8d09f5a504d4.tar.gz",
@@ -483,6 +489,7 @@
         "zulu11.37.17-ca-jdk11.0.6-macosx_x64.tar.gz",
         "zulu11.37.17-ca-jdk11.0.6-win_x64.zip",
         "android_tools_pkg-0.16.0.tar.gz",
+        "r8-1.6.84.jar",
         # bazelbuild/bazel-skylib
         "2d4c9528e0f453b5950eeaeac11d8d09f5a504d4.tar.gz",
         # bazelbuild/platforms
@@ -507,6 +514,7 @@
         "zulu11.37.17-ca-jdk11.0.6-macosx_x64.tar.gz": "e1fe56769f32e2aaac95e0a8f86b5a323da5af3a3b4bba73f3086391a6cc056f",
         "zulu11.37.17-ca-jdk11.0.6-win_x64.zip": "a9695617b8374bfa171f166951214965b1d1d08f43218db9a2a780b71c665c18",
         "android_tools_pkg-0.16.0.tar.gz": "e2cbd43a9d23aa32197c29d689a7e017f205acb07053f5dd584f500a1a9d4361",
+        "r8-1.6.84.jar": "824d94de0210df3692a812e18ffa334a17365e059856ae03c772e9490d61d4d8",
         # bazelbuild/bazel-skylib
         "2d4c9528e0f453b5950eeaeac11d8d09f5a504d4.tar.gz": "c00ceec469dbcf7929972e3c79f20c14033824538038a554952f5c31d8832f96",
         # bazelbuild/platforms
@@ -532,6 +540,9 @@
         "android_tools_pkg-0.16.0.tar.gz": [
             "https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.16.0.tar.gz",
         ],
+        "r8-1.6.84.jar": [
+            "https://maven.google.com/com/android/tools/r8/1.6.84/r8-1.6.84.jar",
+        ],
         # bazelbuild/bazel-skylib
         "2d4c9528e0f453b5950eeaeac11d8d09f5a504d4.tar.gz": [
             "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/archive/2d4c9528e0f453b5950eeaeac11d8d09f5a504d4.tar.gz",
@@ -632,6 +643,13 @@
     url = "https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.16.0.tar.gz",
 )
 
+# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_remote_tools.WORKSPACE
+http_jar(
+    name = "android_gmaven_r8_for_testing",
+    sha256 = "824d94de0210df3692a812e18ffa334a17365e059856ae03c772e9490d61d4d8",
+    url = "https://maven.google.com/com/android/tools/r8/1.6.84/r8-1.6.84.jar",
+)
+
 # This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/coverage.WORKSPACE.
 http_archive(
     name = "remote_coverage_tools_for_testing",
diff --git a/src/BUILD b/src/BUILD
index 1873fd1..86c9421 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -727,6 +727,7 @@
 filegroup(
     name = "test_repos",
     srcs = [
+        "@android_gmaven_r8_for_testing//jar:file",
         "@android_tools_for_testing//:WORKSPACE",
         "@bazel_skylib//:WORKSPACE",
         "@bazel_toolchains//:WORKSPACE",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_remote_tools.WORKSPACE b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_remote_tools.WORKSPACE
index 0a37d01..d2c90f2 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_remote_tools.WORKSPACE
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_remote_tools.WORKSPACE
@@ -1,4 +1,4 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_jar")
 
 # This must be kept in sync with the top-level WORKSPACE file.
 http_archive(
@@ -6,3 +6,10 @@
     sha256 = "e2cbd43a9d23aa32197c29d689a7e017f205acb07053f5dd584f500a1a9d4361",
     url = "https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.16.0.tar.gz",
 )
+
+# This must be kept in sync with the top-level WORKSPACE file.
+http_jar(
+    name = "android_gmaven_r8",
+    sha256 = "824d94de0210df3692a812e18ffa334a17365e059856ae03c772e9490d61d4d8",
+    url = "https://maven.google.com/com/android/tools/r8/1.6.84/r8-1.6.84.jar",
+)
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index 1f3b225..2d6d614 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -433,6 +433,9 @@
         "  pass",
         "",
         "def http_file(**kwargs):",
+        "  pass",
+        "",
+        "def http_jar(**kwargs):",
         "  pass");
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 1b507d1..ccafaf5 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -250,6 +250,9 @@
         "  pass",
         "",
         "def http_file(**kwargs):",
+        "  pass",
+        "",
+        "def http_jar(**kwargs):",
         "  pass");
     initializeMockClient();
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
index 3dd3408..9ec869e 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
@@ -125,6 +125,9 @@
         "  pass",
         "",
         "def http_file(**kwargs):",
+        "  pass",
+        "",
+        "def http_jar(**kwargs):",
         "  pass");
 
     analysisMock.setupMockClient(mockToolsConfig);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java
index 49b4148..0b603d4 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java
@@ -85,6 +85,9 @@
         "  pass",
         "",
         "def http_file(**kwargs):",
+        "  pass",
+        "",
+        "def http_jar(**kwargs):",
         "  pass");
     FileSystemUtils.writeIsoLatin1(
         tools.getRelative("tools/build_defs/repo/utils.bzl"),
diff --git a/src/test/shell/bazel/android/android_integration_test.sh b/src/test/shell/bazel/android/android_integration_test.sh
index 92764e0..579570f 100755
--- a/src/test/shell/bazel/android/android_integration_test.sh
+++ b/src/test/shell/bazel/android/android_integration_test.sh
@@ -80,4 +80,67 @@
   assert_build //java/bazel/multidex:bin
 }
 
+function write_hello_android_files() {
+  mkdir -p java/com/example/hello
+  mkdir -p java/com/example/hello/res/values
+  cat > java/com/example/hello/res/values/strings.xml <<'EOF'
+<resources>
+    <string name="app_name">HelloWorld</string>
+    <string name="title_activity_main">Hello Main</string>
+</resources>
+EOF
+
+  cat > java/com/example/hello/AndroidManifest.xml <<'EOF'
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.hello"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk
+        android:minSdkVersion="7"
+        android:targetSdkVersion="18" />
+
+    <application android:label="@string/app_name">
+        <activity
+            android:name="com.example.hello.MainActivity"
+            android:label="@string/title_activity_main" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
+EOF
+
+  cat > java/com/example/hello/MainActivity.java <<'EOF'
+package com.example.hello;
+
+import android.app.Activity;
+
+public class MainActivity extends Activity {
+}
+EOF
+
+}
+
+function test_d8_compiles_hello_android() {
+  write_hello_android_files
+  setup_android_sdk_support
+  cat > java/com/example/hello/BUILD <<'EOF'
+android_binary(
+    name = 'hello',
+    manifest = "AndroidManifest.xml",
+    srcs = ['MainActivity.java'],
+    resource_files = glob(["res/**"]),
+)
+EOF
+
+  bazel clean
+  bazel build --define=android_standalone_dexing_tool=d8_compat_dx \
+      //java/com/example/hello:hello || fail "build failed"
+}
+
+
+
 run_suite "Android integration tests"
diff --git a/src/test/shell/testenv.sh b/src/test/shell/testenv.sh
index 1a92fd7..a0562f8 100755
--- a/src/test/shell/testenv.sh
+++ b/src/test/shell/testenv.sh
@@ -287,6 +287,7 @@
 
     repos=(
         "android_tools_for_testing"
+        "android_gmaven_r8_for_testing"
         "bazel_skylib"
         "bazel_toolchains"
         "com_google_protobuf"
diff --git a/tools/android/android_sdk_repository_template.bzl b/tools/android/android_sdk_repository_template.bzl
index b8d33d6..1a7ecda 100644
--- a/tools/android/android_sdk_repository_template.bzl
+++ b/tools/android/android_sdk_repository_template.bzl
@@ -284,11 +284,11 @@
     java_binary(
         name = "d8_compat_dx",
         main_class = "com.android.tools.r8.compatdx.CompatDx",
-        runtime_deps = [":d8_jar_import"],
+        runtime_deps = ["@android_gmaven_r8//jar"],
     )
-    java_import(
+    native.alias(
         name = "d8_jar_import",
-        jars = ["build-tools/%s/lib/d8.jar" % build_tools_directory],
+        actual = "@android_gmaven_r8//jar",
     )
 
 TAGDIR_TO_TAG_MAP = {