環境
OS: Windows 11
Android Studio
Google USB Driver
WSL2: Ubuntu 22.04.2
やり方
https://docs.scala-lang.org/tutorials/scala-on-android.html
ここを参照。ちょっと記事が古いので、現在のバージョンではアプリはScala3.3を使って動きます。
まず、GraalVMをインストールします。
このときバージョンは22.1.0 を選びます。それより高いバージョンではビルドできません。
圧縮されたファイルは、
WSL2上で
> explorer.exe .
と実行して、UbuntuのカレントディレクトリをWindows上に表示させて、そこにコピーしておきましょう。
展開して、パスを通して、native-image
がインストールされていないと思うので、インストールします。
あと、gccとg++がいります。インストールします。
ADBはインストールの仕方が書いてありましたが、結局、WSL2上からは接続が確認できなかったので、Windows上でインストールして、使用しました。
WSL2上からもADBでUSB接続してデバイスを確認できた方いらっしゃいましたら教えてほしいです…
とりあえず、下記の分だけ、インストールします。
libasound2-dev (for pkgConfig alsa)
libavcodec-dev (for pkgConfig libavcodec)
libavformat-dev (for pkgConfig libavformat)
libavutil-dev (for pkgConfig libavutil)
libfreetype6-dev (for pkgConfig freetype2)
libgl-dev (for pkgConfig gl)
libglib2.0-dev (for pkgConfig gmodule-no-export-2.0)
( libglib2.0-dev (for pkgConfig gthread-2.0) )
libgtk-3-dev (for pkgConfig gtk+-x11-3.0)
libpango1.0-dev (for pkgConfig pangoft2)
libx11-dev (for pkgConfig x11)
libxtst-dev (for pkgConfig xtst)
https://github.com/makingthematrix/scalaonandroid/tree/main/helloscala
これをダウンロードします。
git clone https://github.com/makingthematrix/scalaonandroid
でごっそりといただきましょう。
あとは、
cd scalaonandroid/helloscala
しておいてから
mvn gluonfx:run
でアプリを実行してみて
mvn gluonfx:build gluonfx:nativerun
これで多分デスクトップ環境のネイティブアプリをビルド
mvn -Pandroid gluonfx:build gluonfx:package
これで目的のAndroidアプリをビルドします。
あとは、APKファイルをADBでAndroid端末へ送ってやれば、インストール完了で、
自分はWSL2上からWindows上にAPKファイルをコピーしてきて、
Windows上から下記のコマンドでAndroidへインストールしました。
adb install <path to APK>
Logcatは試していないです。
まとめ
GraalVMを使って、Scalaで書かれたコードで、Androidのネイティブアプリケーションがビルドできました。
記事のとおりやっただけです。(実際にはなん箇所か手間取りましたが…)
余談
GraalVMを使うとiOSやデスクトップ環境のネイティブアプリのビルドも行けるのだとかなんとか。
Flutterほどではないかもしれませんが、マルチなプラットフォームを一つの環境で書けてしまうのはありがたいですね。
Scalaにもそういった価値は残されていそうです。
(まぁ、僕はScalaにその価値がなくても使い続けるつもりではいますが)
予定
これで、モバイルアプリの作成できることがわかった。
Webのフロントエンドやサーバサイドのアプリケーションの作成を行っていきたい。
(まだ何をするかは未定です…)
以上、長ったらしい記事でした。