この記事は Rustその2 Advent Calendar 2016 22日目の記事です。この記事はMac環境向けに書いています。
来年に引き続き今年もRust Advent Calendar を書きます。去年はかなり空いてたんですが、気づいた頃にはその1は埋まっていました。。
人気上昇っぷりにびっくりです。やっぱりRustはいいですね。
Rustはいいぞ
AndroidでRust
この記事では、AndroidでRustを動かしたくなったので tomakaさんの android-rs-glue を実際に動かしてみた内容となっています。 このライブラリを使って筆者が最近はまっている自転車関連のアプリを作りたかったのですが、そちらに関してはまた別の機会に執筆いたします。。
AndroidでRustを動かすために
Rustupを入れる
androidの build target を指定できるようにRustup経由でRustをインストールします。もしもdmgファイルからRustをインストールした場合は
/usr/local/lib/rustlib/uninstall.sh
でアンインストール後、
curl https://sh.rustup.rs -sSf | sh
でrustupをインストールします。rustupのインストールについて、詳しくはこちらをご覧ください。
Android用のbuild target を用意する
rustup target add arm-linux-androideabi
これでRustのAndroid用のバイナリをコンパイル出来るようになります。
Android Studioをインストールしてセットアップ
Androidの開発上必要になってくるため入れておきます。
こちらからダウンロードしてください。Android Studioのセットアップを済ませた後、ホームディレクトリに ~/Library/Android/sdk/
というディレクトリが出来ていればOKです。
adbコマンドを使えるようにする
~/.bashrc
に
# android
PATH=$PATH:~/Library/Android/sdk/platform-tools
を追記します。
Android NDKをダウンロードして配置
ビルド時にAndroid NDKも必要になってくるので、こちらから、Android NDKをダウンロードします。ディレクトリが含まれていますので、このディレクトリを ~/Library/Android/
の中等に配置してください。また、特に場所は決まっていないので適当なディレクトリに配置して良いです。
~/.bashrc に 環境変数をセット
~/.bashrc
に
# android
export ANDROID_SDK_HOME=~/Library/Android/sdk/
export NDK_HOME=~/Library/Android/android-ndk-r13b/
ANDROID_SDK_HOME
と NDK_HOME
の環境変数をセットします。
NDK_HOMEは、Android NDKのバージョンによって変わってきます。
env
を実行して変数が存在すればOKです。
Android SDK を コンソールからアップデートする
$ANDROID_SDK_HOME/tools/android update sdk -u
3つほど質問が聞かれますので全て y
と答えます。
antを入れる
brew install ant
brew で入るので brew で入れてしまいましょう。
cargo apk をインストール
cargo install cargo-apk
cargo apk コマンドが使えるようになります。
ここまでが、環境構築の手順となります。
ビルドする
git clone git@github.com:tomaka/android-rs-glue.git
試しに、サンプルプログラムを実行してみましょう。 tomakaさんの公開している android-rs-glue
のリポジトリをcloneします。
cd android-rs-glue/examples/basic
basicディレクトリまで移動します。
cargo apk
ここで cargo apk
コマンドを実行してエラーが出なければビルド成功です。
find . -name *.apk
でAndroid用のapkファイルが出来ていることを確認したら、adb
でインストールしてみましょう。このときに、Android端末側で USBデバッギングに接続
モードになっている状態になっていることを確認します。
試しに、 画面の明るさを変更するコマンド adb shell settings put system screen_brightness 1
を実行して、正常に動作することが確認できれば繋がっています。
Androidアプリのインストール
adb install -r ./target/android-artifacts/build/bin/android_glue_example-debug.apk
adb install でインストールします。
実行
黒い画面がでれば、成功です!
何も見えなくて面白みがないですが、RustでAndroidアプリができました。