2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GraalVMでScala3.3を使って、Androidアプリを作成

Last updated at Posted at 2023-06-21

環境

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のフロントエンドやサーバサイドのアプリケーションの作成を行っていきたい。
(まだ何をするかは未定です…)

以上、長ったらしい記事でした。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?