Tauri楽しくなってきました。かたりぃなです。
マルチプラットフォームという言葉にはとてもあこがれを感じます。
その昔、スマートフォンという言葉が浸透し始めたころ、iPhoneはObjective-C, AndroidはJava, 両方うまくやれないものか?みたいなことを考えてた時代がありました。
そうこうしているうちにMSからはHololensが出てきて、じゃあC#だな!Unityでいこう!なんならC++で下回り書けばいいかな?とかやってた頃がありました。
そんな当時出ていたマルチプラットフォームな開発環境としては
などでしょうか。
あとはUnityもマルチプラットフォームとして数える人もいるかもしれません。
これらに期待していた頃もありましたが、ちょうどUnity + Hololensで遊んでたので、なんかもうUnityでよくね?みたいな雑な感じになって、調べるのは放棄してました。
Tauriに何を期待してるか?
まず期待しているのはRustです。
純粋にRustが楽しいからですね。あとは本業のWeb開発みたいな感じで開発できるってのがラクでいいですね。
というわけで、早速環境を作って、アプリを作り、インストールするところまでやってみます。
今回やった内容
リストアップしてみると結構多かったです。
そしてほとんどがTauri関係ないですね。
環境
環境はこんな感じです。
Tauri含めRust関係のものはひととおりインストール済みとします。
このWSL2上にAndroidの開発環境をインストールしていきます。
WSL2上にAndroidStudioをインストールする準備
WSL2上でGUIアプリ動くらしいので、それでいきます。X-Windowは不要です。最近のWindowsすごいですね。
なぜWSL2上でやるか?ここ最近Windowsの開発をしなくなっていて、何も入ってないWindows上にRustの環境を作るのが辛いからです。
参考資料はこのあたりです。
https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/gui-apps
WSL上にchromeをダウンロードして起動する
AndroidStudioをインストールしたいだけなのですが、WindowsのブラウザからLinux用のAndroidStudioのインストーラが探せません。
AndroidStudioのダウンロードページはとても親切なことにOSに応じたAndroidStudioのダウンロードページに遷移するみたいです。
UA偽装してやればいけるのかもしれませんが、環境構築は安定的な方法でやりたいので、WSL2上にChromeをインストールし、そのChromeでAndroidStudioをダウンロードするという手順をとりました。
Chromeのインストールと起動は上記のサイトの説明のとおり
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install --fix-missing ./google-chrome-stable_current_amd64.deb
google-chrome
です。
chromeが起動すると一部文字化けしてたりしますが、細かいことは気にせずAndroidStudioでぐぐってダウンロードページからダウンロードします。
ファイル名からして自動的にlinux版になるはずです。
/home/<wslユーザー名>/Downloads/android-studio-2024.3.1.13-linux.tar.gz
にダウンロードされれていると思います。
AndroidStudioのインストール
適当なディレクトリに移動して展開しました。
どうもこのあたりの流儀よくわからないので、パスとかの扱いはもっと詳しいサイトを調べたほうが良いと思います。
私はAndroid開発にはそこまで力入れるつもりはないので、動けばいいやスタンスです。
今回ほしいのはAndroid向けビルドとデプロイ、アプリへの署名ツールとかだけなので、それが動けばなんでもいいです。
展開して
mv /home/<wslユーザー名>/Downloads/android-studio-2024.3.1.13-linux.tar.gz /opt/
tar zxvf /opt/android-studio-2024.3.1.13-linux.tar.gz
インストーラを起動
./android-studio/bin/studio.sh
インストール先とか聞かれるので適当に進めます
インストール後のログ
Preparing "Install Android Emulator v.35.4.9".
Downloading https://dl.google.com/android/repository/emulator-linux_x64-13025442.zip
"Install Android Emulator v.35.4.9" ready.
Installing Android Emulator in /home/<ユーザー名>/Android/Sdk/emulator
"Install Android Emulator v.35.4.9" complete.
"Install Android Emulator v.35.4.9" finished.
Preparing "Install Google Play Intel x86_64 Atom System Image API 35 (revision 9)".
Downloading https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-35_r09.zip
"Install Google Play Intel x86_64 Atom System Image API 35 (revision 9)" ready.
Installing Google Play Intel x86_64 Atom System Image in /home/<ユーザー名>/Android/Sdk/system-images/android-35/google_apis_playstore/x86_64
"Install Google Play Intel x86_64 Atom System Image API 35 (revision 9)" complete.
"Install Google Play Intel x86_64 Atom System Image API 35 (revision 9)" finished.
Preparing "Install Sources for Android 35 (revision 1)".
Downloading https://dl.google.com/android/repository/source-35_r01.zip
"Install Sources for Android 35 (revision 1)" ready.
Installing Sources for Android 35 in /home/<ユーザー名>/Android/Sdk/sources/android-35
"Install Sources for Android 35 (revision 1)" complete.
"Install Sources for Android 35 (revision 1)" finished.
Preparing "Install Android SDK Platform 35 (revision 2)".
Downloading https://dl.google.com/android/repository/platform-35_r02.zip
"Install Android SDK Platform 35 (revision 2)" ready.
Installing Android SDK Platform 35 in /home/<ユーザー名>/Android/Sdk/platforms/android-35
"Install Android SDK Platform 35 (revision 2)" complete.
"Install Android SDK Platform 35 (revision 2)" finished.
Preparing "Install Android SDK Build-Tools 35.0.1 v.35.0.1".
Downloading https://dl.google.com/android/repository/build-tools_r35.0.1_linux.zip
"Install Android SDK Build-Tools 35.0.1 v.35.0.1" ready.
Installing Android SDK Build-Tools 35.0.1 in /home/<ユーザー名>/Android/Sdk/build-tools/35.0.1
"Install Android SDK Build-Tools 35.0.1 v.35.0.1" complete.
"Install Android SDK Build-Tools 35.0.1 v.35.0.1" finished.
Preparing "Install Android SDK Platform-Tools v.35.0.2".
Downloading https://dl.google.com/android/repository/platform-tools_r35.0.2-linux.zip
"Install Android SDK Platform-Tools v.35.0.2" ready.
Installing Android SDK Platform-Tools in /home/<ユーザー名>/Android/Sdk/platform-tools
"Install Android SDK Platform-Tools v.35.0.2" complete.
"Install Android SDK Platform-Tools v.35.0.2" finished.
Parsing /home/<ユーザー名>/Android/Sdk/build-tools/35.0.1/package.xml
Parsing /home/<ユーザー名>/Android/Sdk/emulator/package.xml
Parsing /home/<ユーザー名>/Android/Sdk/platform-tools/package.xml
Parsing /home/<ユーザー名>/Android/Sdk/platforms/android-35/package.xml
Parsing /home/<ユーザー名>/Android/Sdk/sources/android-35/package.xml
Parsing /home/<ユーザー名>/Android/Sdk/system-images/android-35/google_apis_playstore/x86_64/package.xml
Android SDK is up to date.
Creating Android virtual device
Android virtual device Medium_Phone_API_35 was successfully created
インストールしたら適当に初期設定しましょう。
$ /opt/android-studio/bin/studio.shでAndroid Studioが起動すると思いますが、/bin/studioを使えみたいに言われてますね。
The IDE seems to be launched with a script launcher ('bin/studio.sh'). Please consider switching to a native launcher ('bin/studio') for better experience.
なので以降は/opt/android-studio/bin/studioを使います。
AndroidStudioでのビルドとデバッグ
ビルドはIDEの金槌マーク
デバッグは虫マークみたいです
デバッガを開始するとエミュレータが起動するはずなのですが、エラーログがたくさん出ていて起動してこないので修復します。
AndroidStudioの起動後、エミュレータを起動するとエラーになってしまいます。
kvmにアクセスできないみたいなエラーなのでインストールと設定をします。
kvmの設定がうまくいかないときはこのあたりを参考に
https://help.ubuntu.com/community/KVM/Installation
追加の設定
不足している依存パッケージがあったのでインストールします。
sudo apt update
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
WSLを再起動
PS> wsl.exe --shutdown
あとは /dev/kvm のパーミッション云々言われるときはとりあえず sudo chmod a+rw /dev/kvm してからAndroidStudioを起動すれば一旦は動く。
これでandroidの開発環境ができたので、いったん閉じる。
tauriプロジェクトをつくる
いつもどおりtauriプロジェクトを作りましょう。
$ cargo create-tauri-app
✔ Project name · tauri-android
✔ Identifier · com.tauri-android.app
✔ Choose which language to use for your frontend · TypeScript / JavaScript - (pnpm, yarn, npm, deno, bun)
✔ Choose your package manager · npm
✔ Choose your UI template · React - (https://react.dev/)
✔ Choose your UI flavor · JavaScript
Template created! To get started run:
cd tauri-android
npm install
npm run tauri android init
For Desktop development, run:
npm run tauri dev
For Android development, run:
npm run tauri android dev
なんかDesktop開発の場合はこうする、Android開発の場合はこうするって親切にコマンド提示してくれてるので、指示の通りやってみましょう。
Tauriの指示のとおりビルドする
$ npm install
added 67 packages, and audited 68 packages in 10s
9 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
$ npm run tauri android init
> tauri-android@0.1.0 tauri
> tauri android init
action request: to initialize Android environment; Android support won't be usable until you fix the issue below and re-run `tauri android init`!
Have you installed the Android SDK? The `ANDROID_HOME` environment variable isn't set, and is required: environment variable not found
victory: Project generated successfully!
Make cool apps! 🌻 🐕 🎉
$ npm run tauri dev
ここまでで
tauriのデスクトップアプリの画面が出ました。
Android用tauriを動かしてみる(失敗1)
TauriでAndroid開発やってみましょう。
$ npm run tauri android dev
> tauri-android@0.1.0 tauri
> tauri android dev
Have you installed the Android SDK? The `ANDROID_HOME` environment variable isn't set, and is required: environment variable not found: environment variable not found
Error Have you installed the Android SDK? The `ANDROID_HOME` environment variable isn't set, and is required: environment variable not found: environment variable not found
だめでした。。。
ANDROID_HOME環境変数が設定されてないってことなので設定する。
適当にインストールした結果、どうやらここっぽいですね?
/home/<ユーザー名>/Android/Sdk/
なので、
echo "export ANDROID_HOME=~/Android/Sdk" >> ~/.bash_profile
して、WSL2端末を再起動。
Android用Tauriを動かしてみる(失敗2)
$ npm run tauri android dev
Have you installed the NDK? The `NDK_HOME` environment variable isn't set, and is required: environment variable not found: environment variable not found
Error Have you installed the NDK? The `NDK_HOME` environment variable isn't set, and is required: environment variable not found: environment variable not found
NDK_HOME環境変数が設定されてないってことなので設定する。
android開発者のドキュメントのインストールの方法が書いてあるのでそのとおりに。
https://developer.android.com/studio/projects/install-ndk?hl=ja
ついでにCMakeも必要らしいので、併せてやっておきます。
さっきと同様、
echo "export NDK_HOME=~/Android/Sdk/ndk/29.0.13113456" >> ~/.bash_profile
してから、WSL再起動。
android用tauriを動かしてみる(失敗3)
initからやり直しです。
$ sudo chmod a+rw /dev/kvm
$ npm run tauri android init
$ npm run tauri android dev
> tauri-android@0.1.0 tauri
> tauri android dev
応答なくなりました。
なんかgradlewってコマンドでログ見れるらしいので調べてみます。
/home/<ユーザー名>/tauri-android/src-tauri/gen/android/gradlew --project-dir /home/<ユーザー名>/tauri-android/src-tauri/gen/android assembleDebug
JAVA_HOMEが設定されていないエラーが出てますね?
https://developer.android.com/build/jdks?hl=ja#jdk-config-in-studio
をもとにandroidstudioの設定を確認します。
androidstudioのJAVA_HOMEは/opt/android-studio/jbrが設定されていたので、これを設定します。
echo "export JAVA_HOME=/opt/android-studio/jbr" >> ~/.bash_profile
WSL再起動です。
android用tauriを動かしてみる(失敗4)
全然反応ないです。
何が正解かわからないのですが、ネットの情報を見ているとエミュレータ上でtauriの画面が出るみたいです。
そういえばtauriに対してエミュレータが起動する設定とかやってないというか、そんな連携してくれるみたいな話は聞いたことないですね?
裏でAndroidStudioとエミュレータを起動した状態でnpm run tauri android devする必要がありそうです。
android用tauriを動かしてみる(成功)
AndroidStudioとエミュレータを起動した状態でいけました!
$ npm run tauri android dev
> tauri-android@0.1.0 tauri
> tauri android dev
Info Detected connected device: Medium_Phone_API_35 (sdk_gphone64_x86_64) with target "x86_64-linux-android"
Running BeforeDevCommand (`npm run dev`)
> tauri-android@0.1.0 dev
> vite
VITE v6.2.1 ready in 136 ms
➜ Local: http://localhost:1420/
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.38s
Info symlinking lib "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" in jniLibs dir "/home/<ユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/x86_64"
Info "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" requires shared lib "libandroid.so"
Info "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" requires shared lib "libdl.so"
Info "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" requires shared lib "liblog.so"
Info "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" requires shared lib "libm.so"
Info "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" requires shared lib "libc.so"
Info symlink at "/home/<ユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/x86_64/libtauri_android_lib.so" points to "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so"
Downloading https://services.gradle.org/distributions/gradle-8.9-bin.zip
............10%.............20%.............30%.............40%.............50%.............60%.............70%.............80%.............90%.............100%
Errors during XML parse:
Additionally, the fallback loader failed to parse the XML.
Checking the license for package Android SDK Build-Tools 34 in /home/<ユーザー名>/Android/Sdk/licenses
License for package Android SDK Build-Tools 34 accepted.
Preparing "Install Android SDK Build-Tools 34 v.34.0.0".
"Install Android SDK Build-Tools 34 v.34.0.0" ready.
Installing Android SDK Build-Tools 34 in /home/<ユーザー名>/Android/Sdk/build-tools/34.0.0
"Install Android SDK Build-Tools 34 v.34.0.0" complete.
"Install Android SDK Build-Tools 34 v.34.0.0" finished.
Checking the license for package Android SDK Platform 34 in /home/<ユーザー名>/Android/Sdk/licenses
License for package Android SDK Platform 34 accepted.
Preparing "Install Android SDK Platform 34 (revision 3)".
"Install Android SDK Platform 34 (revision 3)" ready.
Installing Android SDK Platform 34 in /home/<ユーザー名>/Android/Sdk/platforms/android-34
"Install Android SDK Platform 34 (revision 3)" complete.
"Install Android SDK Platform 34 (revision 3)" finished.
> tauri-android@0.1.0 tauri
> tauri android android-studio-script --target x86_64
<=======------> 60% EXECUTING [1m 51s]
Info Forwarding port 1420 with adb
1420
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.54s
Info symlinking lib "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" in jniLibs dir "/home/<ユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/x86_64"
Info "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" requires shared lib "libandroid.so"
Info "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" requires shared lib "libdl.so"
Info "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" requires shared lib "liblog.so"
Info "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" requires shared lib "libm.so"dX86_64Debug
Info "/home/<ユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/debug/libtauri_android_lib.so" requires shared lib "libc.so"
w: file:///home/<ユーザー名>/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tauri-2.3.1/mobile/android/src/main/java/app/tauri/plugin/PluginMethodData.kt:11:23 Parameter 'methodDecorator' is never used
Java compiler version 21 has deprecated support for compiling with source/target version 8.
Try one of the following options:
1. [Recommended] Use Java toolchain with a lower language version
2. Set a higher source/target version
3. Use a lower version of the JDK running the build (if you're not using Java toolchain)
For more details on how to configure these settings, see https://developer.android.com/build/jdks.
To suppress this warning, set android.javaCompile.suppressSourceTargetDeprecationWarning=true in gradle.properties.
warning: [options] source value 8 is obsolete and will be removed in a future release
warning: [options] target value 8 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings
Java compiler version 21 has deprecated support for compiling with source/target version 8.
Try one of the following options:
1. [Recommended] Use Java toolchain with a lower language version
2. Set a higher source/target version
3. Use a lower version of the JDK running the build (if you're not using Java toolchain)
For more details on how to configure these settings, see https://developer.android.com/build/jdks.
To suppress this warning, set android.javaCompile.suppressSourceTargetDeprecationWarning=true in gradle.properties.
warning: [options] source value 8 is obsolete and will be removed in a future release
warning: [options] target value 8 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings
Performing Streamed Install
Success
Starting: Intent { cmp=com.tauri_android.app/.MainActivity }
いけました!

長かった。。。。ていうかTauri関係ないやん。。。全部Androidのせい。
https://learn.microsoft.com/ja-jp/windows/wsl/connect-usb
https://zenn.dev/headwaters/articles/b9183cca7e7233
https://zenn.dev/thorie/articles/548mbl-android-studio-on-wsl2
このあたりを参考にやっていきます。
初期設定
WSL側に必要なツールをいれておく。
sudo apt install usbutils linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20
Windows側からWSL側へUSBデバイスを転送できるように
PS> winget install --interactive --exact dorssel.usbipd-win
以降は毎回やるやつ。
sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20
管理者権限のpower shell側から設定
> usbipd bind --busid 1-10
> usbipd.exe attach --wsl --busid 1-10
usbipd: info: Using WSL distribution 'Ubuntu-24.04' to attach; the device will be available in all WSL 2 distributions.
usbipd: info: Detected networking mode 'nat'.
usbipd: info: Using IP address 172.24.128.1 to reach the host.
確認する。
PS C:\Windows\system32> usbipd.exe list
Connected:
BUSID VID:PID DEVICE STATE
1-2 056e:013a USB 入力デバイス Not shared
1-10 04dd:9ca8 SH-M08, ADB Interface Attached
1-11 26ce:01a2 USB 入力デバイス Not shared
5-2 056e:1061 USB 入力デバイス Not shared
Persisted:
GUID DEVICE
よさそうなので、wsl2側から確認する。
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 007: ID 04dd:9ca8 Sharp Corp. SHM08
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
OK.
adbで認識されてるか確認する。
$ ./Android/Sdk/platform-tools/adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
357779091706398 unauthorized
$ ./Android/Sdk/platform-tools/adb devices
List of devices attached
357779091706398 device
ちなみに、USB抜き差しとかしてバインドしたのが増えすぎてきたらWindows側から消すとよい。
PS > usbipd.exe list
Connected:
BUSID VID:PID DEVICE STATE
1-2 056e:013a USB 入力デバイス Not shared
1-11 26ce:01a2 USB 入力デバイス Not shared
5-2 056e:1061 USB 入力デバイス Not shared
Persisted:
GUID DEVICE
db8c4ff9-0b10-4ea5-9a2d-49a6b955975b SH-M13
PS > usbipd.exe unbind --guid db8c4ff9-0b10-4ea5-9a2d-49a6b955975b
https://v2.tauri.app/ja/distribute/google-play/を参考に。
ビルドする
npm run tauri android build
npm run tauri android build -- --apk
ログ
> tauri-android@0.1.0 tauri
> tauri android build --apk
Running beforeBuildCommand `npm run build`
> tauri-android@0.1.0 build
> vite build
vite v6.2.1 building for production...
✓ 30 modules transformed.
dist/index.html 0.46 kB │ gzip: 0.30 kB
dist/assets/react-CHdo91hT.svg 4.13 kB │ gzip: 2.14 kB
dist/assets/index-B3KA1C1_.css 1.37 kB │ gzip: 0.65 kB
dist/assets/index-CrD08m3M.js 144.84 kB │ gzip: 46.54 kB
✓ built in 423ms
Compiling tauri-android v0.1.0 (/home/<wslユーザー名>/tauri-android/src-tauri)
Finished `release` profile [optimized] target(s) in 5.29s
Info symlinking lib "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" in jniLibs dir "/home/<wslユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/arm64-v8a"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" requires shared lib "libandroid.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" requires shared lib "libdl.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" requires shared lib "liblog.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" requires shared lib "libm.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" requires shared lib "libc.so"
Info symlink at "/home/<wslユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/arm64-v8a/libtauri_android_lib.so" points to "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so"
Info symlink at "/home/<wslユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/armeabi-v7a/libtauri_android_lib.so" points to "/home/<wslユーザー名>/tauri-android/src-tauri/target/armv7-linux-androideabi/release/libtauri_android_lib.so"
Info symlink at "/home/<wslユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/x86/libtauri_android_lib.so" points to "/home/<wslユーザー名>/tauri-android/src-tauri/target/i686-linux-android/release/libtauri_android_lib.so"
Info symlink at "/home/<wslユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/x86_64/libtauri_android_lib.so" points to "/home/<wslユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/release/libtauri_android_lib.so"
> tauri-android@0.1.0 tauri
> tauri android android-studio-script --release --target aarch64
<=========----> 74% EXECUTING [889ms]
Finished `release` profile [optimized] target(s) in 0.12s
Info symlinking lib "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" in jniLibs dir "/home/<wslユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/arm64-v8a"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" requires shared lib "libandroid.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" requires shared lib "libdl.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" requires shared lib "liblog.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" requires shared lib "libm.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/aarch64-linux-android/release/libtauri_android_lib.so" requires shared lib "libc.so"
> tauri-android@0.1.0 tauri
> tauri android android-studio-script --release --target armv7
<=========----> 75% EXECUTING [2s]
Compiling tauri-android v0.1.0 (/home/<wslユーザー名>/tauri-android/src-tauri)
Finished `release` profile [optimized] target(s) in 5.96s
Info symlinking lib "/home/<wslユーザー名>/tauri-android/src-tauri/target/armv7-linux-androideabi/release/libtauri_android_lib.so" in jniLibs dir "/home/<wslユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/armeabi-v7a"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/armv7-linux-androideabi/release/libtauri_android_lib.so" requires shared lib "libandroid.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/armv7-linux-androideabi/release/libtauri_android_lib.so" requires shared lib "libdl.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/armv7-linux-androideabi/release/libtauri_android_lib.so" requires shared lib "liblog.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/armv7-linux-androideabi/release/libtauri_android_lib.so" requires shared lib "libm.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/armv7-linux-androideabi/release/libtauri_android_lib.so" requires shared lib "libc.so"
> tauri-android@0.1.0 tauri
> tauri android android-studio-script --release --target i686
<=========----> 75% EXECUTING [9s]
Compiling tauri-android v0.1.0 (/home/<wslユーザー名>/tauri-android/src-tauri)
Finished `release` profile [optimized] target(s) in 5.76s
Info symlinking lib "/home/<wslユーザー名>/tauri-android/src-tauri/target/i686-linux-android/release/libtauri_android_lib.so" in jniLibs dir "/home/<wslユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/x86"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/i686-linux-android/release/libtauri_android_lib.so" requires shared lib "libandroid.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/i686-linux-android/release/libtauri_android_lib.so" requires shared lib "libdl.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/i686-linux-android/release/libtauri_android_lib.so" requires shared lib "liblog.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/i686-linux-android/release/libtauri_android_lib.so" requires shared lib "libm.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/i686-linux-android/release/libtauri_android_lib.so" requires shared lib "libc.so"
<=========----> 76% EXECUTING [18s]
> tauri-android@0.1.0 tauri
> tauri android android-studio-script --release --target x86_64
Compiling tauri-android v0.1.0 (/home/<wslユーザー名>/tauri-android/src-tauri)
Finished `release` profile [optimized] target(s) in 5.21s
Info symlinking lib "/home/<wslユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/release/libtauri_android_lib.so" in jniLibs dir "/home/<wslユーザー名>/tauri-android/src-tauri/gen/android/app/src/main/jniLibs/x86_64"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/release/libtauri_android_lib.so" requires shared lib "libandroid.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/release/libtauri_android_lib.so" requires shared lib "libdl.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/release/libtauri_android_lib.so" requires shared lib "liblog.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/release/libtauri_android_lib.so" requires shared lib "libm.so"
Info "/home/<wslユーザー名>/tauri-android/src-tauri/target/x86_64-linux-android/release/libtauri_android_lib.so" requires shared lib "libc.so"
Finished 1 APK at:
/home/<wslユーザー名>/tauri-android/src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release-unsigned.apk
どうも全アーキテクチャのものを作るらしいので、時間かかる。
デプロイの準備
ここを参考に、証明書を作って署名する
https://developer.android.com/studio/publish/app-signing?hl=ja#generate-key
署名の方法はこのあたり。
https://developer.android.com/tools/apksigner?hl=ja
署名用のキーストアを作る
AndroidStudioでAPKを選択して、jksファイルを生成する。
~/keystore以下に指定したファイル名で出力される。今回はmykey.jksという名前にした。
アプリに署名する
さきほど作ったキーストアのjksファイルを使ってapksignerで署名する。
このコマンドを実行するにはjavaのパスが通ってる必要があるので、PATH変数に追加しておく。
export PATH=$PATH:/opt/android-studio/jbr/bin
~/Android/Sdk/build-tools/35.0.1/apksigner sign --ks ~/keystore/mykey.jks app-universal-release-unsigned.apk
これでapkファイルに署名ができた。
自身のgoogleドライブにアップロードして、Android端末でそのファイルを指定すればインストールできる。
インストールできないときは、adbでインストールを試みることで細かい情報が得られる。
~/Android/Sdk/platform-tools/adb install -r "C:\Users\USERNAME\Downloads\app-universal-release-unsigned.apk"
このコマンドで失敗した場合は原因となるエラーログ出してくれる。
署名されてないとかなんとか。
このapkファイルをAndroid端末にインストールしてアプリを起動すると、こんな画面でました!

感想と今後の展望
AndroidでTauri動かしてみると久しぶりに感動しました!
C言語でHello Worldを印字したとか、アゼンブラでVRAMに直アクセスして1ドット打てたとか、あの時と同じ気分です。これでTauriだけでほぼすべてのデバイス向けのアプリを作れちゃう気がします。
実際問題そう単純にはいかなくて、デバイス固有の対応は必要になるんだろうなとは思っています。
すぐ思いつくやつだと、ファイルの保存とかがそうですね。PC上なら/tmpとかに一旦書いても怒られませんが、スマホというかアプリには固有の保存領域があってですね、みたいな。
そういう問題はありつつも、夢が広がってきた気がします。
次のステップに向けてアプリ作ってみたいと思います。
では今回はこれくらいで。