bevy/examples/mobile/android_basic
Litttle_fish e924df0e1a
Add features to switch NativeActivity and GameActivity usage (#12095)
# Objective

Add two features to switch bevy to use `NativeActivity` or
`GameActivity` on Android, use `GameActivity` by default.

Also close  #12058 and probably #12026 .

## Solution

Add two features to the corresponding crates so you can toggle it, like
what `winit` and `android-activity` crate did.

---

## Changelog

Removed default `NativeActivity` feature implementation for Android,
added two new features to enable `NativeActivity` and `GameActivity`,
and use `GameActivity` by default.

## Migration Guide

Because `cargo-apk` is not compatible with `GameActivity`,
building/running using `cargo apk build/run -p bevy_mobile_example` is
no longer possible.
Users should follow the new workflow described in document.

---------

Co-authored-by: François Mockers <francois.mockers@vleue.com>
Co-authored-by: BD103 <59022059+BD103@users.noreply.github.com>
Co-authored-by: Rich Churcher <rich.churcher@gmail.com>
2024-10-01 22:23:48 +00:00
..
Cargo.toml Add features to switch NativeActivity and GameActivity usage (#12095) 2024-10-01 22:23:48 +00:00
readme.md Add features to switch NativeActivity and GameActivity usage (#12095) 2024-10-01 22:23:48 +00:00

Basic Android Example Instruction

This folder instructs you how to build android apps with cargo-apk, a deprecated Android apk building tool.

Setup

rustup target add aarch64-linux-android armv7-linux-androideabi
cargo install cargo-apk

Please refer example README for NDK/SDK related instructions.

Build & Run

When using cargo-apk, it must use NativeActivity, so you need to edit it in Cargo.toml manually like this:

bevy = { version = "0.14", default-features = false, features = ["android-native-activity", ...] }

Then the following fields must be added to Cargo.toml:

[package.metadata.android]
build_targets = ["aarch64-linux-android", "armv7-linux-androideabi"]

[package.metadata.android.sdk]
target_sdk_version = 33

Please refer cargo-apk README for other Android Manifest fields.

For this example, you can replace the Cargo.toml with the one within this folder.

After setup, you can run it on a device for Android development:

cargo apk run -p bevy_mobile_example

Please refer example README for debugging instructions.

Old phones

Bevy by default targets Android API level 33 in its examples which is the Play Store's minimum API to upload or update apps. Users of older phones may want to use an older API when testing.

To use a different API, the following fields must be updated in Cargo.toml:

[package.metadata.android.sdk]
target_sdk_version = >>API<<
min_sdk_version = >>API or less<<