Skip to content

yrom/rules_android_cc_test

Repository files navigation

android_cc_test

Sample codes for running cc_test on Android devices.

cd sample

#launch android emulator (use arm64-v8a in this case)
$ANDROID_HOME/emulator/emulator -avd {AVDNAME}

bazel run  \
    --platforms=@rules_android_cc_test//:android_arm64-v8a \
    //:gtest_samples_android \
    -- \
    --gtest_color=yes

Usage

Using Bzlmod

Add to your MODULE.bazel file:

bazel_dep(name = "rules_android_cc_test", version = "0.0.1")
git_override(
    module_name = "rules_android_cc_test",
    remote = "https://github.com/yrom/rules_android_cc_test.git",
    branch = "main",
)

# for using ndk r25
bazel_dep(name = "rules_android_ndk", version = "0.1.3")
bazel_dep(name = "rules_android", version = "0.6.0")

android_ndk_repository_extension = use_extension("@rules_android_ndk//:extension.bzl", "android_ndk_repository_extension")
android_ndk_repository_extension.configure(api_level = 21)
use_repo(android_ndk_repository_extension, "androidndk")

register_toolchains("@androidndk//:all")

register_toolchains(
    "@rules_android//toolchains/android:android_default_toolchain",
    "@rules_android//toolchains/android_sdk:android_sdk_tools",
)

android_sdk_repository_extension = use_extension("@rules_android//rules/android_sdk_repository:rule.bzl", "android_sdk_repository_extension")
use_repo(android_sdk_repository_extension, "androidsdk")

register_toolchains("@androidsdk//:sdk-toolchain", "@androidsdk//:all")

Using WORKSPACE

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

android_sdk_repository(
    name = "androidsdk",
    api_level = 33,
)
# for using ndk r21
android_ndk_repository(
    name = "androidndk",
    api_level = 21
)

git_repository(
    name = "rules_android_cc_test",
    remote = "https://github.com/yrom/rules_android_cc_test.git",
    branch = "main",
)

Declare target

Declares cc_test target in BUILD:

load("@rules_android_cc_test//:defs.bzl", "cc_test")
cc_test(
    name = "samples",
    size = "small",
    srcs = [...]
)

...it will auto declares android target suffix with _android: //:samples_android

bazel query //:all
#//:samples
#//:samples_android
#Loading: 0 packages loaded

Run cc_test on Android:

bazel run  \
    --platforms=@rules_android_cc_test//:android_<cpu_abi> \
    //:samples_android \
    -- \
    [options]
  • cpu_abi: arm64-v8a, x86_64
  • options: opts of samples_android, e.g. --gtest_color=yes, --gtest_filter=TestSuite.TestName

About

Bazel rules for running cc_test on Android

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published