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