Enable using lite protos for Android.

Lite is the new preferred proto runtime on Android, for two reasons:
- It lends itself to better proguard optimizing
- There is only one flavor, so there is no risk in including
  proto libraries with overlapping definitions that use different
  flavors

This CL adds a generate_nano argument to the proto_java_library build
rule. This argument is default false, so new proto libraries will use
lite by default. However, existing libraries will be migrated in a
follow-up CL, so this change sets generate_nano to true for those
libraries.

It also adds the android_library rule that contains the runtime
library for lite protos.

For an example conversion CL for a proto target, see:
https://chromium-review.googlesource.com/c/chromium/src/+/757103

Bug: 782237
Change-Id: I8100e70c38d41add9068e493ca2a5822f7025213
Reviewed-on: https://chromium-review.googlesource.com/757134
Commit-Queue: agrieve <agrieve@chromium.org>
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Tommy Nyquist <nyquist@chromium.org>
Reviewed-by: agrieve <agrieve@chromium.org>
Reviewed-by: Doug Steedman <dougsteed@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#517268}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: cc12c7a9522169c079a0c0c6ad446088f6cbea1d
diff --git a/BUILD.gn b/BUILD.gn
index ec15750..072f6f1 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -725,3 +725,59 @@
   data += get_target_outputs(":copy_google_protobuf")
   data += get_target_outputs(":copy_google_protobuf_internal")
 }
+
+if (is_android) {
+  import("//build/config/android/rules.gni")
+
+  android_library("protobuf_lite_javalib") {
+    chromium_code = false
+    java_files = [
+      "java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java",
+      "java/core/src/main/java/com/google/protobuf/AbstractParser.java",
+      "java/core/src/main/java/com/google/protobuf/AbstractProtobufList.java",
+      "java/core/src/main/java/com/google/protobuf/BooleanArrayList.java",
+      "java/core/src/main/java/com/google/protobuf/ByteBufferWriter.java",
+      "java/core/src/main/java/com/google/protobuf/ByteOutput.java",
+      "java/core/src/main/java/com/google/protobuf/ByteString.java",
+      "java/core/src/main/java/com/google/protobuf/CodedInputStream.java",
+      "java/core/src/main/java/com/google/protobuf/CodedOutputStream.java",
+      "java/core/src/main/java/com/google/protobuf/DoubleArrayList.java",
+      "java/core/src/main/java/com/google/protobuf/ExperimentalApi.java",
+      "java/core/src/main/java/com/google/protobuf/ExtensionLite.java",
+      "java/core/src/main/java/com/google/protobuf/ExtensionRegistryFactory.java",
+      "java/core/src/main/java/com/google/protobuf/ExtensionRegistryLite.java",
+      "java/core/src/main/java/com/google/protobuf/FieldSet.java",
+      "java/core/src/main/java/com/google/protobuf/FloatArrayList.java",
+      "java/core/src/main/java/com/google/protobuf/GeneratedMessageLite.java",
+      "java/core/src/main/java/com/google/protobuf/IntArrayList.java",
+      "java/core/src/main/java/com/google/protobuf/Internal.java",
+      "java/core/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java",
+      "java/core/src/main/java/com/google/protobuf/LazyField.java",
+      "java/core/src/main/java/com/google/protobuf/LazyFieldLite.java",
+      "java/core/src/main/java/com/google/protobuf/LazyStringArrayList.java",
+      "java/core/src/main/java/com/google/protobuf/LazyStringList.java",
+      "java/core/src/main/java/com/google/protobuf/LongArrayList.java",
+      "java/core/src/main/java/com/google/protobuf/MapEntryLite.java",
+      "java/core/src/main/java/com/google/protobuf/MapFieldLite.java",
+      "java/core/src/main/java/com/google/protobuf/MessageLite.java",
+      "java/core/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java",
+      "java/core/src/main/java/com/google/protobuf/MessageLiteToString.java",
+      "java/core/src/main/java/com/google/protobuf/MutabilityOracle.java",
+      "java/core/src/main/java/com/google/protobuf/NioByteString.java",
+      "java/core/src/main/java/com/google/protobuf/Parser.java",
+      "java/core/src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java",
+      "java/core/src/main/java/com/google/protobuf/ProtobufArrayList.java",
+      "java/core/src/main/java/com/google/protobuf/ProtocolStringList.java",
+      "java/core/src/main/java/com/google/protobuf/RopeByteString.java",
+      "java/core/src/main/java/com/google/protobuf/SmallSortedMap.java",
+      "java/core/src/main/java/com/google/protobuf/TextFormatEscaper.java",
+      "java/core/src/main/java/com/google/protobuf/UninitializedMessageException.java",
+      "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLite.java",
+      "java/core/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java",
+      "java/core/src/main/java/com/google/protobuf/UnsafeByteOperations.java",
+      "java/core/src/main/java/com/google/protobuf/UnsafeUtil.java",
+      "java/core/src/main/java/com/google/protobuf/Utf8.java",
+      "java/core/src/main/java/com/google/protobuf/WireFormat.java",
+    ]
+  }
+}