Add Android.bp

The Android.bp file is manually written due to:
    1. Binding to Android's existing copy of grpc instead of
       the copy that is bundled within the crate.
    2. The crates customized grpc_wrap.cc file that provides
       additional translation logic.
    3. A lot of bindgen customizations in build.rs.

Test: build
Change-Id: I80ae57aa66702d55f2a5985d52d5705bc21c6de1
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..2915827
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,100 @@
+rust_library {
+    name: "libgrpcio_sys",
+    // has rustc warnings
+    host_supported: true,
+    crate_name: "grpcio_sys",
+    srcs: [
+        "src/lib.rs",
+        ":libgrpc_bindgen",
+    ],
+    edition: "2018",
+    features: [
+        "default",
+        "secure",
+    ],
+    rustlibs: [
+        "liblibc",
+        "liblibz_sys",
+    ],
+    shared_libs: [
+        "libgrpc++",
+        "libgrpc_wrap"
+    ],
+}
+
+cc_defaults {
+    name: "libgrpcio_sys_defaults",
+    cflags: [
+        "-xc++",
+        "-std=c++11",
+        "-DGRPC_SYS_SECURE",
+    ],
+    shared_libs: ["libgrpc++"],
+}
+
+cc_library {
+    name: "libgrpc_wrap",
+    defaults: ["libgrpcio_sys_defaults"],
+    host_supported: true,
+    srcs: ["grpc_wrap.cc"],
+}
+
+rust_bindgen {
+    name: "libgrpc_bindgen",
+    defaults: ["libgrpcio_sys_defaults"],
+    host_supported: true,
+    wrapper_src: "android/bindgen_wrapper.hpp",
+    source_stem: "grpc-bindings",
+    crate_name: "grpc_bindgen",
+    bindgen_flags: [
+        "--size_t-is-usize",
+        "--constified-enum-module grpc_status_code",
+        "--default-enum-style rust",
+        "--whitelist-function=\\bgrpc_.*",
+        "--whitelist-function=\\bgpr_.*",
+        "--whitelist-function=gpr_inf_future",
+        "--whitelist-function=\\bgrpcwrap_.*",
+        "--whitelist-var=\\bGRPC_.*",
+        "--whitelist-type=\\bgrpc_.*",
+        "--whitelist-type=\\bgpr_.*",
+        "--whitelist-type=\\bgrpcwrap_.*",
+        "--whitelist-type=\\bcensus_context.*",
+        "--whitelist-type=\\bverify_peer_options.*",
+        "--blacklist-type=(__)?pthread.*",
+        "--blacklist-function=\\bgpr_mu_.*",
+        "--blacklist-function=\\bgpr_cv_.*",
+        "--blacklist-function=\\bgpr_once_.*",
+        "--blacklist-type=gpr_mu",
+        "--blacklist-type=gpr_cv",
+        "--blacklist-type=gpr_once",
+    ]
+}
+// dependent_library ["feature_list"]
+//   aho-corasick-0.7.13 "default,std"
+//   bindgen-0.51.1
+//   bitflags-1.2.1 "default"
+//   cc-1.0.60
+//   cexpr-0.3.6
+//   cfg-if-0.1.10
+//   clang-sys-0.28.1 "clang_6_0,gte_clang_3_6,gte_clang_3_7,gte_clang_3_8,gte_clang_3_9,gte_clang_4_0,gte_clang_5_0,gte_clang_6_0,libloading,runtime"
+//   cmake-0.1.44
+//   glob-0.3.0
+//   lazy_static-1.4.0
+//   libc-0.2.77 "default,std"
+//   libloading-0.5.2
+//   libz-sys-1.1.2 "default,libc,static,stock-zlib"
+//   memchr-2.3.3 "default,std,use_std"
+//   nom-4.2.3 "alloc,default,std,verbose-errors"
+//   peeking_take_while-0.1.2
+//   pkg-config-0.3.18
+//   proc-macro2-1.0.21
+//   quote-1.0.7
+//   regex-1.3.9 "aho-corasick,default,memchr,perf,perf-cache,perf-dfa,perf-inline,perf-literal,std,thread_local,unicode,unicode-age,unicode-bool,unicode-case,unicode-gencat,unicode-perl,unicode-script,unicode-segment"
+//   regex-syntax-0.6.18 "default,unicode,unicode-age,unicode-bool,unicode-case,unicode-gencat,unicode-perl,unicode-script,unicode-segment"
+//   rustc-hash-1.1.0 "default,std"
+//   same-file-1.0.6
+//   shlex-0.1.1
+//   thread_local-1.0.1
+//   unicode-xid-0.2.1 "default"
+//   version_check-0.1.5
+//   walkdir-2.3.1