Skip to content

ssrlive/rust_on_android_ios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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):

img

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 macOS Monterey 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 | sh
  • rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios
  • cargo install cargo-lipo
  • cargo 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

Done!

About

Rust with Android Studio or Xcode iOS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published