Skip to content

Commit 1898d5c

Browse files
committed
Build-test (documentation) on the host and fix broken doc samples
1 parent 51d05d4 commit 1898d5c

File tree

4 files changed

+26
-17
lines changed

4 files changed

+26
-17
lines changed

.github/workflows/ci.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ jobs:
9696
run: >
9797
cargo ndk -t arm64-v8a doc --no-deps
9898
99+
- name: Tests (host build-testing)
100+
run: |
101+
cargo test -F native-activity -F test
102+
cargo test -F game-activity -F test
103+
99104
format:
100105
runs-on: ubuntu-latest
101106
steps:

android-activity/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ native-activity = []
3030
api-level-30 = ["ndk/api-level-30"]
3131
api-level-33 = ["api-level-30", "ndk/api-level-33"]
3232

33+
# "Internal" feature to allow build-testing this crate for the host
34+
# architecture, needed to make doctests actually compile sample code.
35+
test = ["ndk/test", "ndk-sys/test"]
36+
3337
[dependencies]
3438
log = "0.4"
3539
jni-sys = "0.3"

android-activity/src/input/sdk.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -284,13 +284,12 @@ impl KeyCharacterMap {
284284

285285
/// Get the character that is produced by combining the dead key producing accent with the key producing character c.
286286
///
287-
/// For example, ```get_dead_char('`', 'e')``` returns 'è'. `get_dead_char('^', ' ')` returns '^' and `get_dead_char('^', '^')` returns '^'.
287+
/// For example, ``get_dead_char('`', 'e')`` returns `'è'`. `get_dead_char('^', ' ')` returns `'^'` and `get_dead_char('^', '^')` returns `'^'`.
288288
///
289289
/// # Errors
290290
///
291-
/// Since this API needs to use JNI internally to call into the Android JVM it may return
292-
/// a [`AppError::JavaError`] in case there is a spurious JNI error or an exception
293-
/// is caught.
291+
/// Since this API needs to use JNI internally to call into the Android JVM it may return a
292+
/// [`AppError::JavaError`] in case there is a spurious JNI error or an exception is caught.
294293
pub fn get_dead_char(
295294
&self,
296295
accent_char: char,

android-activity/src/lib.rs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@
1313
//! a wider range of devices.
1414
//!
1515
//! Standalone applications based on this crate need to be built as `cdylib` libraries, like:
16-
//! ```
16+
//! ```toml
1717
//! [lib]
1818
//! crate_type=["cdylib"]
1919
//! ```
2020
//!
2121
//! and implement a `#[no_mangle]` `android_main` entry point like this:
22-
//! ```rust
22+
//! ```
2323
//! #[no_mangle]
24-
//! fn android_main(app: AndroidApp) {
24+
//! fn android_main(app: android_activity::AndroidApp) {
2525
//!
2626
//! }
2727
//! ```
@@ -64,6 +64,7 @@
6464
//! These are undone after `android_main()` returns
6565
//!
6666
//! # Android Extensible Enums
67+
// TODO: Move this to the NDK crate, which now implements this for most of the code?
6768
//!
6869
//! There are numerous enums in the `android-activity` API which are effectively
6970
//! bindings to enums declared in the Android SDK which need to be considered
@@ -95,7 +96,7 @@
9596
//! For example, here is how you could ensure forwards compatibility with both
9697
//! compile-time and runtime extensions of a `SomeEnum` enum:
9798
//!
98-
//! ```rust
99+
//! ```ignore
99100
//! match some_enum {
100101
//! SomeEnum::Foo => {},
101102
//! SomeEnum::Bar => {},
@@ -126,7 +127,7 @@ use ndk::native_window::NativeWindow;
126127

127128
use bitflags::bitflags;
128129

129-
#[cfg(not(target_os = "android"))]
130+
#[cfg(all(not(target_os = "android"), not(feature = "test")))]
130131
compile_error!("android-activity only supports compiling for Android");
131132

132133
#[cfg(all(feature = "game-activity", feature = "native-activity"))]
@@ -550,10 +551,10 @@ impl AndroidApp {
550551
/// between native Rust code and Java/Kotlin code running within the JVM.
551552
///
552553
/// If you use the [`jni`] crate you can wrap this as a [`JavaVM`] via:
553-
/// ```ignore
554+
/// ```no_run
554555
/// # use jni::JavaVM;
555-
/// # let app: AndroidApp = todo!();
556-
/// let vm = unsafe { JavaVM::from_raw(app.vm_as_ptr()) };
556+
/// # let app: android_activity::AndroidApp = todo!();
557+
/// let vm = unsafe { JavaVM::from_raw(app.vm_as_ptr().ast()) };
557558
/// ```
558559
///
559560
/// [`jni`]: https://crates.io/crates/jni
@@ -565,10 +566,10 @@ impl AndroidApp {
565566
/// Returns a JNI object reference for this application's JVM `Activity` as a pointer
566567
///
567568
/// If you use the [`jni`] crate you can wrap this as an object reference via:
568-
/// ```ignore
569+
/// ```no_run
569570
/// # use jni::objects::JObject;
570-
/// # let app: AndroidApp = todo!();
571-
/// let activity = unsafe { JObject::from_raw(app.activity_as_ptr()) };
571+
/// # let app: android_activity::AndroidApp = todo!();
572+
/// let activity = unsafe { JObject::from_raw(app.activity_as_ptr().cast()) };
572573
/// ```
573574
///
574575
/// # JNI Safety
@@ -725,7 +726,7 @@ impl AndroidApp {
725726
/// # Example
726727
/// Code to iterate all pending input events would look something like this:
727728
///
728-
/// ```rust
729+
/// ```
729730
/// match app.input_events_iter() {
730731
/// Ok(mut iter) => {
731732
/// loop {
@@ -780,7 +781,7 @@ impl AndroidApp {
780781
///
781782
/// Code to handle unicode character mapping as well as combining dead keys could look some thing like:
782783
///
783-
/// ```rust
784+
/// ```
784785
/// let mut combining_accent = None;
785786
/// // Snip
786787
///

0 commit comments

Comments
 (0)