LoginSignup
4
1

More than 1 year has passed since last update.

AndroidでASP.NET Coreを動かす

Posted at

はじめに

AndroidにはTermuxというLinuxのターミナルエミュレーターがあります。
今回はこの子にPRoot経由でUbuntuをインストールして、そのうえでASP.NET Coreを動かしてみようと思います。

Termux と F-Droid

最新版のTermuxF-Droidで配信されています。
PlayストアでもTermuxは配布されていますが、2020年ごろに更新が停止され現在は一部機能が動作していません。
F-Droidは非公式ストアになるため、不明なアプリのインストールに許可する必要があるので注意してください。

インストールが完了すると次のようなターミナルが表示されます。
image.png

PRoot と proot-distro

次にproot-distro経由でUbuntuをインストールしていきたいのですが、このままだとdotnet buildを実行したときにerror MSB6006: "csc.dll" exited with code 139というアドレス違反でビルドが異常終了します。
PRootした時の初期アドレスに間違いがあるらしく、redditの下記のスレッドでパッチを提供している方がいるのでこれを利用します。

パッチは次のGoogle Driveからダウンロードできます。個人のGoogle DriveからPRootのパッチ済みパッケージをダウンロードするのは怖いという方は↑のスレッドにパッチの仕方やビルド方法が書いてあるので試してみてください。

ダウンロードしたらTermuxにパッケージを転送し、インストールします。

$ pkg update -y
$ pkg install -y proot
$ dpkg -i downloads/proot_5.1.107-52_aarch64.deb
$ pkg install -y proot-distro

場合によってパッケージが不足している場合は指示に従ってapt --fix-broken installすると解消しました。
続けてUbuntuをインストールしてログインします。

$ proot-distro install ubuntu
$ proot-distro login ubuntu

残念ながらARM64版のUbuntuにdotnetのaptは提供されていないので手動でインストールしていきます。

# apt update
# apt upgrade -y 
# apt install -y libicu70 wget vim
# wget https://download.visualstudio.microsoft.com/download/pr/67ca3f83-3769-4cd8-882a-27ab0c191784/bf631a0229827de92f5c026055218cc0/dotnet-sdk-6.0.403-linux-arm64.tar.gz
# mkdir -p $HOME/dotnet
# tar zxf dotnet-sdk-6.0.403-linux-arm64.tar.gz -C $HOME/dotnet
# export DOTNET_ROOT=$HOME/dotnet
# export PATH=$PATH:$HOME/dotnet
# echo 'export DOTNET_ROOT=$HOME/dotnet' >> ~/.bashrc
# echo 'export PATH=$PATH:$HOME/dotnet' >> ~/.bashrc

インストールが終わったので動作を確かめてみましょう。

# dotnet --version
6.0.403
$ dotnet new mvc -o App
$ cd App
$ dotnet run
Building...
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key {4fccf8d4-466d-4c48-aa11-1a9173579896} may be persisted to storage in unencrypted form.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7036
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5124
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /root/App/

無事起動出来たら、ウェブブラウザーでhttps://localhost:7036に接続すると結果を確認することができます。
image.png

インストールが確認出来たら、TARボールは削除しておきましょう。

# rm dotnet-sdk-6.0.100-linux-arm64.tar.gz

CodeServer のインストール

続けてAndroid単体でコードを修正しやすくするためにCodeServerをインストールしていきます。
CodeServerを動作させるにはnodeが必要です。直にインストールしてもよいのですが念のためnvm経由にしておきましょう。
インストールしたら一度Ubuntuからログアウトして、再度ログイン後にnodeをインストールします。

# wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
# exit
$ proot-distro login ubuntu
# nvm install 14
# nvm use 14

CodeServer をインストールして起動して、ウェブブラウザーでhttp://localhost:8080を表示するとCodeServerのログイン画面が表示されます。

curl -fsSL https://code-server.dev/install.sh | sh

image.png
パスワードが不要な場合は、一度コンソールにもどりCtrl+CでCodeServerを停止した後に~/.config/code-server/config.yamlを次のように修正します。

~/.config/code-server/config.yaml
bind-addr: 127.0.0.1:8080
-auth: password
+auth: none
password: xxxxx
cert: false

設定変更後CodeServerを起動すればパスワードなしでログインできます。

# code-server

ここまでくれば、コードを修正したりターミナルで処理を実行したりと通常の開発作業ができるようになりますね。
image.png

おわりに

やってみると意外と簡単に構築できました。
まぁ、ビルドの時間など気になることはありますけれど、Androidで.NETがビルドできることに比べれば大したことは無いですね!

4
1
1

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
4
1