Skip to content

Instantly share code, notes, and snippets.

@sh-zam
Created November 8, 2018 22:35
Show Gist options
  • Save sh-zam/a784506a3e21f1a7bee2ba5f93a4ecb6 to your computer and use it in GitHub Desktop.
Save sh-zam/a784506a3e21f1a7bee2ba5f93a4ecb6 to your computer and use it in GitHub Desktop.
Builds a binary for Android using with Rust.
# Rust & Cargo
curl https://sh.rustup.rs -sSf | sh -s -- -y
export PATH="~/.cargo/bin:$PATH"
rustup target add aarch64-linux-android armv7-linux-androideabi arm-linux-androideabi
# Android NDK and toolchain
wget -q https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip && \
unzip -qq android-ndk-r18b-linux-x86_64.zip && \
rm android-ndk-r18b-linux-x86_64.zip
export NDK_HOME="$PWD/android-ndk-r18b"
mkdir NDK
# build toolchain for arm
${NDK_HOME}/build/tools/make-standalone-toolchain.sh \
--arch=arm --install-dir=NDK/arm --platform=android-22
# build toolchain for aarch64
${NDK_HOME}/build/tools/make-standalone-toolchain.sh \
--arch=arm64 --install-dir=NDK/aarch64 --platform=android-26
sudo sh -c "echo '[target.arm-linux-androideabi]
ar = \"arm-linux-androideabi-ar\"
linker = \"arm-linux-androideabi-clang\"
[target.aarch64-linux-android]
ar = \"aarch64-linux-android-ar\"
linker = \"aarch64-linux-android-clang\"' > ~/.cargo/config"
export PATH="$PATH:$PWD/NDK/arm/bin"
export PATH="$PATH:$PWD/NDK/aarch64/bin"
cargo build --target="arm-linux-androideabi" --release
cargo build --target="aarch64-linux-android" --release
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment