xref: /aosp_15_r20/external/bazelbuild-rules_rust/examples/android/BUILD.bazel (revision d4726bddaa87cc4778e7472feed243fa4b6c267f)
1load("@build_bazel_rules_android//android:rules.bzl", "android_binary", "android_library")
2load("@rules_cc//cc:defs.bzl", "cc_library")
3load("@rules_rust//rust:defs.bzl", "rust_library")
4
5rust_library(
6    name = "rust_lib",
7    srcs = ["demo.rs"],
8    edition = "2018",
9)
10
11cc_library(
12    name = "jni_shim",
13    srcs = ["android_link_hack.c"],  # Required because of https://github.com/bazelbuild/rules_rust/issues/1271
14    linkopts = [
15        "-lm",  # Required to avoid dlopen runtime failures unrelated to rust
16    ],
17    deps = [":rust_lib"],
18    alwayslink = True,  # Required since JNI symbols appear to be unused
19)
20
21android_library(
22    name = "android_main",
23    srcs = [
24        "AndroidMain.java",
25        "JniShim.java",
26    ],
27    custom_package = "com.example.androidapp",
28    manifest = "AndroidManifest.xml",
29    resource_files = ["res/layout/android_main.xml"],
30    deps = [":jni_shim"],
31)
32
33android_binary(
34    name = "android_app",
35    custom_package = "com.example.androidapp",
36    manifest = "AndroidManifest.xml",
37    deps = [":android_main"],
38)
39
40platform(
41    name = "arm64-v8a",
42    constraint_values = [
43        "@platforms//cpu:arm64",
44        "@platforms//os:android",
45    ],
46)
47