rust_on_android_ios
rust_on_android_ios copied to clipboard
Rust with Android Studio or Xcode iOS
Rust with Android Studio or Xcode iOS
Android Studio
- Android Studio Arctic Fox | 2020.3.1 Patch 2
- Android SDK Platform 31
- Android NDK 24.0.8215888
- Android SDK Build-Tools 31.0.0
- Android SDK Command-line Tools
- Android SDK Platform-Tools
Config: Tools >> SDK Manager >> SDK Tools (middle tab):

Rust
Install rust on your PC from rustup, then add some Android targets (arm64, arm, x86_64, x86) for rust.
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
Uses rust-android-gradle plugin, so is built with the command:
gradlew cargoBuild
# build release version
./gradlew assembleRelease
Function naming convention
In src/lib.rs you need to name the function according to the following naming convention in order to make it available in Java.
If the Java function is called greeting and it is saved in a file named RustBindings.java pulled from package com.krupitskas.pong then in Rust the function name is:
| Java | package name | filename | function name |
|---|---|---|---|
| Java | com_krupitskas_pong | RustBindings | greeting |
Which would look like this:
Java_com_krupitskas_pong_RustBindings_greeting(...)
Python
Install Python on your PC.
In
macOSMonterey 12.3 and above, python was removed by Apple, you must install Python3 by yourself, then run this command to make python3 as python.ln -s -f /usr/local/bin/python3 /usr/local/bin/python
iOS
Prepare
- macOS / Xcode
curl https://sh.rustup.rs -sSf | shrustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ioscargo install cargo-lipocargo install cbindgen
Automation build script
set -e
PATH="$PATH:${HOME}/.cargo/bin"
RUST_PROJ=${PROJECT_DIR}/../..
cd "${RUST_PROJ}"
cargo lipo --release
cbindgen --config cbindgen-ios.toml -l C -o target/greetings.h
References
- Rust Android Gradle Plugin
- One more plugin to build Rust for Android
- Cargo NDK for Android projects
- Running Rust on Android
- Building and Deploying a Rust library on iOS
- Building and Deploying a Rust library on Android
- Render Fractal image in Android bitmap with Rust
- How to Use Rust in iOS Apps
- Workshop: Use Rust in iOS Apps
Done!