Add Android.bp and TEST_MAPPING

Enable targets, and tests.
Some tests requiring rand 0.6.1 are removed.

Test: build, TH
Bug: 155855709

Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/base64/+/1751201
Change-Id: I01217c8252a05741bd2e6768ef24597263f0c511
(cherry picked from commit f365400a8b9f8a8c5c902f04511a10508055b83b)
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..5c43223
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,86 @@
+// This file is generated by cargo2android.py --config cargo2android.json.
+// Do not modify this file as changes will be overridden on upgrade.
+
+
+
+rust_library {
+    name: "libbase64_rust",
+    stem: "libbase64",
+    host_supported: true,
+    crate_name: "base64",
+    srcs: ["src/lib.rs"],
+    edition: "2018",
+    features: [
+        "default",
+        "std",
+    ],
+    apex_available: [
+        "//apex_available:platform",
+        "com.android.resolv",
+    ],
+    min_sdk_version: "29",
+}
+
+rust_defaults {
+    name: "base64_defaults_base64",
+    crate_name: "base64",
+    test_suites: ["general-tests"],
+    auto_gen_config: true,
+    edition: "2018",
+    features: [
+        "default",
+        "std",
+    ],
+    rustlibs: [
+        "libbase64_rust",
+        "libcriterion",
+        "librand",
+        "libstructopt",
+    ],
+}
+
+rust_test_host {
+    name: "base64_host_test_tests_decode",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/decode.rs"],
+    test_options: {
+        unit_test: true,
+    },
+}
+
+rust_test {
+    name: "base64_device_test_tests_decode",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/decode.rs"],
+}
+
+rust_test_host {
+    name: "base64_host_test_tests_encode",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/encode.rs"],
+    test_options: {
+        unit_test: true,
+    },
+}
+
+rust_test {
+    name: "base64_device_test_tests_encode",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/encode.rs"],
+}
+
+rust_test_host {
+    name: "base64_host_test_tests_helpers",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/helpers.rs"],
+    test_options: {
+        unit_test: true,
+    },
+}
+
+rust_test {
+    name: "base64_device_test_tests_helpers",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/helpers.rs"],
+}
+
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..768046f
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,14 @@
+// Generated by update_crate_tests.py for tests that depend on this crate.
+{
+  "presubmit": [
+    {
+      "name": "base64_device_test_tests_decode"
+    },
+    {
+      "name": "base64_device_test_tests_encode"
+    },
+    {
+      "name": "base64_device_test_tests_helpers"
+    }
+  ]
+}
diff --git a/cargo2android.json b/cargo2android.json
new file mode 100644
index 0000000..6d85f2f
--- /dev/null
+++ b/cargo2android.json
@@ -0,0 +1,10 @@
+{
+    "add-toplevel-block": "cargo2android_tests.bp",
+    "apex-available": [
+      "//apex_available:platform",
+      "com.android.resolv"
+    ],
+    "min_sdk_version": "29",
+    "device": true,
+    "run": true
+  }
\ No newline at end of file
diff --git a/cargo2android_tests.bp b/cargo2android_tests.bp
new file mode 100644
index 0000000..1213c14
--- /dev/null
+++ b/cargo2android_tests.bp
@@ -0,0 +1,62 @@
+rust_defaults {
+    name: "base64_defaults_base64",
+    crate_name: "base64",
+    test_suites: ["general-tests"],
+    auto_gen_config: true,
+    edition: "2018",
+    features: [
+        "default",
+        "std",
+    ],
+    rustlibs: [
+        "libbase64_rust",
+        "libcriterion",
+        "librand",
+        "libstructopt",
+    ],
+}
+
+rust_test_host {
+    name: "base64_host_test_tests_decode",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/decode.rs"],
+    test_options: {
+        unit_test: true,
+    },
+}
+
+rust_test {
+    name: "base64_device_test_tests_decode",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/decode.rs"],
+}
+
+rust_test_host {
+    name: "base64_host_test_tests_encode",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/encode.rs"],
+    test_options: {
+        unit_test: true,
+    },
+}
+
+rust_test {
+    name: "base64_device_test_tests_encode",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/encode.rs"],
+}
+
+rust_test_host {
+    name: "base64_host_test_tests_helpers",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/helpers.rs"],
+    test_options: {
+        unit_test: true,
+    },
+}
+
+rust_test {
+    name: "base64_device_test_tests_helpers",
+    defaults: ["base64_defaults_base64"],
+    srcs: ["tests/helpers.rs"],
+}