Busybox all the Bazel Android tools.

This change reduces the size taken up in the bazel binary by Android tools deploy jars from 38.2 mb to 9.8 mb, which is 15% of the bazel binary size. Also, some minor cleanups of our BUILD files.

https://github.com/bazelbuild/bazel/issues/2385

RELNOTES: None
PiperOrigin-RevId: 166373241
diff --git a/src/BUILD b/src/BUILD
index 8f5d12f..e0ad2c8 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -150,9 +150,6 @@
         "//third_party/py/six:srcs",
         "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper:srcs",
         "//src/tools/android/java/com/google/devtools/build/android:embedded_tools",
-        "//src/tools/android/java/com/google/devtools/build/android/idlclass:embedded_tools",
-        "//src/tools/android/java/com/google/devtools/build/android/dexer:embedded_tools",
-        "//src/tools/android/java/com/google/devtools/build/android/ziputils:embedded_tools",
         "//src/tools/launcher:srcs",
         "//src/tools/singlejar:embedded_tools",
         "//src/main/cpp/util:embedded_tools",
diff --git a/src/test/java/com/google/devtools/build/android/ziputils/BUILD b/src/test/java/com/google/devtools/build/android/ziputils/BUILD
index 59a2e8c..cda02f7 100644
--- a/src/test/java/com/google/devtools/build/android/ziputils/BUILD
+++ b/src/test/java/com/google/devtools/build/android/ziputils/BUILD
@@ -12,7 +12,6 @@
     test_class = "com.google.devtools.build.android.ziputils.AllTests",
     deps = [
         "//src/test/java/com/google/devtools/build/lib:testutil",
-        "//src/tools/android/java/com/google/devtools/build/android/ziputils:splitter_lib",
         "//src/tools/android/java/com/google/devtools/build/android/ziputils:ziputils_lib",
         "//third_party:guava",
         "//third_party:jsr305",
diff --git a/src/tools/android/java/com/google/devtools/build/android/BUILD b/src/tools/android/java/com/google/devtools/build/android/BUILD
index 834483a..9162527 100644
--- a/src/tools/android/java/com/google/devtools/build/android/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/BUILD
@@ -6,18 +6,27 @@
     name = "embedded_tools",
     srcs = [
         "BUILD.tools",
-        "classes_deploy.jar",
+        ":all_android_tools_deploy.jar",
         "//src/tools/android/java/com/google/devtools/build/android/desugar:embedded_tools",
+        "//src/tools/android/java/com/google/devtools/build/android/dexer:embedded_tools",
+        "//src/tools/android/java/com/google/devtools/build/android/idlclass:embedded_tools",
         "//src/tools/android/java/com/google/devtools/build/android/incrementaldeployment:embedded_tools",
         "//src/tools/android/java/com/google/devtools/build/android/junctions:embedded_tools",
         "//src/tools/android/java/com/google/devtools/build/android/proto:srcs",
+        "//src/tools/android/java/com/google/devtools/build/android/ziputils:embedded_tools",
     ],
 )
 
 java_binary(
-    name = "classes",
-    main_class = "does.not.exist",
-    runtime_deps = [":android_builder_lib"],
+    name = "all_android_tools",
+    create_executable = 0,
+    runtime_deps = [
+        ":android_builder_lib",
+        "//src/tools/android/java/com/google/devtools/build/android/desugar",
+        "//src/tools/android/java/com/google/devtools/build/android/dexer:dexerdeps",
+        "//src/tools/android/java/com/google/devtools/build/android/idlclass:idlclass_lib",
+        "//src/tools/android/java/com/google/devtools/build/android/ziputils:ziputils_lib",
+    ],
 )
 
 # Used by //src/test/shell/bazel/android:android_integration_test
diff --git a/src/tools/android/java/com/google/devtools/build/android/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/BUILD.tools
index d94dc4b..f0f858b 100644
--- a/src/tools/android/java/com/google/devtools/build/android/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/BUILD.tools
@@ -1,19 +1,19 @@
 package(default_visibility = ["//visibility:public"])
 
 java_import(
-    name = "classes",
-    jars = [":classes_deploy.jar"],
+    name = "all_android_tools",
+    jars = ["all_android_tools_deploy.jar"],
 )
 
 java_binary(
     name = "ResourceProcessorBusyBox",
-    main_class = "com.google.devtools.build.android.ResourceProcessorBusyBox",
-    runtime_deps = [
-        ":classes",
-    ],
     data = select({
         "//src:windows": ["//src/main/native/windows:windows_jni.dll"],
         "//src:windows_msvc": ["//src/main/native/windows:windows_jni.dll"],
         "//conditions:default": [],
     }),
+    main_class = "com.google.devtools.build.android.ResourceProcessorBusyBox",
+    runtime_deps = [
+        ":all_android_tools",
+    ],
 )
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD b/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD
index f2b0ec4..f7a5209 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD
@@ -3,16 +3,18 @@
 
 filegroup(
     name = "embedded_tools",
-    srcs = [
-        "BUILD.tools",
-        "Desugar_deploy.jar",
+    srcs = ["BUILD.tools"],
+    visibility = [
+        "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
     ],
-    visibility = ["//src/tools/android/java/com/google/devtools/build/android:__pkg__"],
 )
 
 java_library(
     name = "desugar",
     srcs = glob(["*.java"]),
+    visibility = [
+        "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
+    ],
     runtime_deps = ["//src/tools/android/java/com/google/devtools/build/android/desugar/runtime:throwable_extension"],
     deps = [
         "//src/main/java/com/google/devtools/common/options",
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD.tools
index 5d0a8e8..b3dfdce 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD.tools
@@ -1,9 +1,9 @@
 package(default_visibility = ["//visibility:public"])
 
-# This target is named "Desugar_embedded" instead of "Desugar" so as to avoid
-# a naming conflict with the existing Desugar_deploy.jar that it depends on.
 java_binary(
-    name = "Desugar_embedded",
+    name = "Desugar",
     main_class = "com.google.devtools.build.android.desugar.Desugar",
-    runtime_deps = [":Desugar_deploy.jar"],
+    runtime_deps = [
+        "//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
+    ],
 )
diff --git a/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD b/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD
index b80ab0c..3afe9ab 100644
--- a/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD
@@ -15,10 +15,7 @@
     srcs = glob(
         ["*.java"],
         exclude = ["NoAndroidSdkStub.java"],
-    ) + [
-        "BUILD.tools",
-        ":dexerdeps_deploy.jar",
-    ],
+    ) + ["BUILD.tools"],
     visibility = ["//visibility:public"],
 )
 
@@ -47,11 +44,12 @@
 
 # The DexFileMerger and DexBuilder are built in BUILD.tools which is built in
 # a developers workspace, not the Bazel workspace. So we must bundle the
-# dependencies of those binaries into the embedded tools. We use a java_binary
-# instead of a java_library so that we can build a deploy jar which contains the
-# transitive closure of the dependencies.
-java_binary(
+# dependencies of those binaries into the embedded tools.
+java_library(
     name = "dexerdeps",
+    visibility = [
+        "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
+    ],
     runtime_deps = [
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/protobuf:worker_protocol_java_proto",
diff --git a/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD.tools
index da14efa..dd5be15 100644
--- a/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD.tools
@@ -3,17 +3,17 @@
 java_library(
     name = "dexer",
     srcs = glob(["*.java"]),
+    plugins = ["auto_value_plugin"],
     deps = [
         "//external:android/dx_jar_import",
-        ":dexerdeps_deploy.jar",
+        "//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
     ],
-    plugins = ["auto_value_plugin"],
 )
 
 java_plugin(
     name = "auto_value_plugin",
     processor_class = "com.google.auto.value.processor.AutoValueProcessor",
-    deps = [":dexerdeps_deploy.jar"],
+    deps = ["//src/tools/android/java/com/google/devtools/build/android:all_android_tools"],
 )
 
 java_binary(
diff --git a/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD b/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD
index df2c726..6984bfc 100644
--- a/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD
@@ -1,22 +1,14 @@
 filegroup(
     name = "embedded_tools",
-    srcs = [
-        "BUILD.tools",
-        "classes_deploy.jar",
+    srcs = ["BUILD.tools"],
+    visibility = [
+        "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
     ],
-    visibility = ["//src:__pkg__"],
-)
-
-java_binary(
-    name = "classes",
-    main_class = "does.not.exist",
-    runtime_deps = [":idlclass_lib"],
 )
 
 java_binary(
     name = "IdlClass",
     main_class = "com.google.devtools.build.android.idlclass.IdlClass",
-    visibility = ["//visibility:public"],
     runtime_deps = [":idlclass_lib"],
 )
 
@@ -24,8 +16,8 @@
     name = "idlclass_lib",
     srcs = glob(["*.java"]),
     visibility = [
-        "//devtools/blaze/integration:__pkg__",
         "//src/test/java/com/google/devtools/build/android/idlclass:__pkg__",
+        "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
     ],
     deps = [
         "//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper",
@@ -40,5 +32,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["**"]),
-    visibility = ["//src/tools/android/java/com/google/devtools/build/android:__pkg__"],
+    visibility = [
+        "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
+    ],
 )
diff --git a/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD.tools
index af785cc..5d3088b 100644
--- a/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD.tools
@@ -1,12 +1,9 @@
 package(default_visibility = ["//visibility:public"])
 
-java_import(
-    name = "classes",
-    jars = [":classes_deploy.jar"],
-)
-
 java_binary(
     name = "IdlClass",
     main_class = "com.google.devtools.build.android.idlclass.IdlClass",
-    runtime_deps = [":classes"],
+    runtime_deps = [
+        "//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
+    ],
 )
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD b/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD
index 81fc56c..a53afc2 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD
@@ -1,7 +1,10 @@
 # Low level zip archive processing library.
 
 package(
-    default_visibility = ["//visibility:public"],
+    default_visibility = [
+        "//src/test/java/com/google/devtools/build/android/ziputils:__pkg__",
+        "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
+    ],
 )
 
 filegroup(
@@ -11,41 +14,14 @@
 
 filegroup(
     name = "embedded_tools",
-    srcs = [
-        "BUILD.tools",
-        "all_deploy.jar",
-    ],
+    srcs = ["BUILD.tools"],
 )
 
 java_library(
     name = "ziputils_lib",
-    srcs = glob(
-        ["*.java"],
-        exclude = [
-            "DexMapper.java",
-            "DexReducer.java",
-            "SplitZip.java",
-            "SplitZipFilters.java",
-            "Splitter.java",
-        ],
-    ),
-    visibility = ["//visibility:public"],
+    srcs = glob(["*.java"]),
     deps = [
-        "//third_party:guava",
-        "//third_party:jsr305",
-    ],
-)
-
-java_library(
-    name = "splitter_lib",
-    srcs = [
-        "SplitZip.java",
-        "SplitZipFilters.java",
-        "Splitter.java",
-    ],
-    visibility = ["//visibility:public"],
-    deps = [
-        ":ziputils_lib",
+        "//src/main/java/com/google/devtools/common/options",
         "//third_party:guava",
         "//third_party:jsr305",
     ],
@@ -53,43 +29,14 @@
 
 java_binary(
     name = "mapper",
-    srcs = [
-        "DexMapper.java",
-    ],
     main_class = "com.google.devtools.build.android.ziputils.DexMapper",
-    visibility = ["//visibility:public"],
-    deps = [
-        ":splitter_lib",
-        "//src/main/java/com/google/devtools/common/options",
-        "//third_party:guava",
-    ],
+    visibility = ["//visibility:private"],
+    runtime_deps = [":ziputils_lib"],
 )
 
 java_binary(
     name = "reducer",
-    srcs = [
-        "DexReducer.java",
-    ],
     main_class = "com.google.devtools.build.android.ziputils.DexReducer",
-    visibility = ["//visibility:public"],
-    deps = [
-        ":ziputils_lib",
-        "//src/main/java/com/google/devtools/common/options",
-        "//third_party:guava",
-    ],
-)
-
-java_binary(
-    name = "all",
-    srcs = [
-        "DexMapper.java",
-        "DexReducer.java",
-    ],
-    main_class = "does.not.exist",
-    deps = [
-        ":splitter_lib",
-        ":ziputils_lib",
-        "//src/main/java/com/google/devtools/common/options",
-        "//third_party:guava",
-    ],
+    visibility = ["//visibility:private"],
+    runtime_deps = [":ziputils_lib"],
 )
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD.tools
index e86fad0..3e0df0b 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD.tools
@@ -1,18 +1,17 @@
 package(default_visibility = ["//visibility:public"])
 
-java_import(
-    name = "classes",
-    jars = [":all_deploy.jar"],
-)
-
 java_binary(
     name = "mapper",
     main_class = "com.google.devtools.build.android.ziputils.DexMapper",
-    runtime_deps = [":classes"],
+    runtime_deps = [
+        "//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
+    ],
 )
 
 java_binary(
     name = "reducer",
     main_class = "com.google.devtools.build.android.ziputils.DexReducer",
-    runtime_deps = [":classes"],
+    runtime_deps = [
+        "//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
+    ],
 )
diff --git a/tools/android/BUILD.tools b/tools/android/BUILD.tools
index 6828ddc..866d6af 100644
--- a/tools/android/BUILD.tools
+++ b/tools/android/BUILD.tools
@@ -42,7 +42,7 @@
 
 alias(
     name = "desugar_java8",
-    actual = "//src/tools/android/java/com/google/devtools/build/android/desugar:Desugar_embedded",
+    actual = "//src/tools/android/java/com/google/devtools/build/android/desugar:Desugar",
 )
 
 # Bazel puts this on the bootclasspath of android_* targets to support Java 8