bevy/examples/mobile/android_basic
Mads Marquart 94deca81bf
Use target_abi = "sim" instead of ios_simulator feature (#17702)
## Objective

Get rid of a redundant Cargo feature flag.

## Solution

Use the built-in `target_abi = "sim"` instead of a custom Cargo feature
flag, which is set for the iOS (and visionOS and tvOS) simulator. This
has been stable since Rust 1.78.

In the future, some of this may become redundant if Wgpu implements
proper supper for the iOS Simulator:
https://github.com/gfx-rs/wgpu/issues/7057

CC @mockersf who implemented [the original
fix](https://github.com/bevyengine/bevy/pull/10178).

## Testing

- Open mobile example in Xcode.
- Launch the simulator.
- See that no errors are emitted.
- Remove the code cfg-guarded behind `target_abi = "sim"`.
- See that an error now happens.

(I haven't actually performed these steps on the latest `main`, because
I'm hitting an unrelated error (EDIT: It was
https://github.com/bevyengine/bevy/pull/17637). But tested it on
0.15.0).

---

## Migration Guide

> If you're using a project that builds upon the mobile example, remove
the `ios_simulator` feature from your `Cargo.toml` (Bevy now handles
this internally).
2025-02-11 23:01:26 +00:00
..
Cargo.toml Use target_abi = "sim" instead of ios_simulator feature (#17702) 2025-02-11 23:01:26 +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<<