问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

使用Android手机运行.NET

创作时间:
作者:
@小白创作中心

使用Android手机运行.NET

引用
CSDN
1.
https://blog.csdn.net/farway000/article/details/136956788

在2024年,微软对.NET的开源已经持续了9年,但仍然有不少人对.NET的开源和跨平台能力存在误解。事实上,自从.NET 6开始,微软就提供了基于ARM64平台的.NET SDK,这意味着我们可以在Android平台上运行.NET 6.0及以后的所有.NET版本。本文将详细介绍如何在Android手机上安装和运行.NET,适合有一定Linux基础的读者。

安装Termux

首先我们需要安装Termux这个Android端的终端模拟软件。下载地址如下:

https://github.com/termux/termux-app/releases/download/v0.118.0/termux-app_v0.118.0+github-debug_arm64-v8a.apk

安装完成后,我们先更新一下Termux,执行如下命令:

pkg upgrade

如果出现访问速度特别慢的问题,可以更换一下清华源:

sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/apt/termux-main stable main@' $PREFIX/etc/apt/sources.list
apt update && apt upgrade

安装Linux环境

由于Termux的一些限制,我们需要在其中安装一个Linux环境。Termux上安装各种Linux系统是通过proot-distro工具来实现的,所以先安装一下proot-distro工具:

pkg install proot-distro

等待安装完成后,输入如下命令查看支持的Linux列表:

proot-distro list

会输出类似如下内容:

Supported distributions:
 * Alpine Linux
   Alias: alpine
   Installed: no
   Comment: Rolling release branch (edge).
 * Arch Linux
   Alias: archlinux
   Installed: no
   Comment: Currently available only AArch64 and ARM ports.
 * Artix Linux
   Alias: artix
   Installed: no
   Comment: Currently available only for AArch64.
 * Debian (bookworm)
   Alias: debian
   Installed: no
   Comment: Stable release.
 * Debian (bullseye)
   Alias: debian-oldstable
   Installed: no
   Comment: Old stable release.
 * deepin
   Alias: deepin
   Installed: no
   Comment: Supports only 64-bit CPUs.
 * Fedora
   Alias: fedora
   Installed: no
   Comment: Version 39. Supports only 64-bit CPUs.
 * Manjaro
   Alias: manjaro
   Installed: no
   Comment: Currently available only for AArch64.
 * OpenKylin
   Alias: openkylin
   Installed: no
   Comment: Version 'yangtze'. Supports only 64-bit CPUs.
 * OpenSUSE
   Alias: opensuse
   Installed: no
   Comment: Rolling release (Tumbleweed).
 * Pardus
   Alias: pardus
   Installed: no
   Comment: Version 'yirmibir'. Not available for ARM 32 bit.
 * Ubuntu (23.10)
   Alias: ubuntu
   Installed: no
   Comment: Regular release (mantic). Not available for x86 32-bit (i686) CPUs.
 * Ubuntu (23.04 LTS)
   Alias: ubuntu-lts
   Installed: no
   Comment: LTS release (jammy). Not available for x86 32-bit (i686) CPUs.
 * Ubuntu (22.04 LTS)
   Alias: ubuntu-oldlts
   Installed: no
   Comment: Previous LTS release (focal). Not available for x86 32-bit (i686) CPUs.
 * Void Linux
   Alias: void
   Installed: no
Install selected one with: proot-distro install <alias>

根据提示信息,我们可以使用如下命令安装Linux环境:

proot-distro install debian

由于我个人更喜欢使用Debian/Ubuntu系统,所以这里我选择了Debian,其他系统可以根据自己的喜好选择,后面可能会存在一些命令上的差异,请自行调整。

安装过程会持续一段时间,请耐心等待。等待安装完成后,即可进入Linux环境中进行操作:

prott-distro login debian

进入Linux系统环境后,我们执行如下一些操作,来安装一些常用的工具:

  • 更新软件源和更新系统软件
apt update -y && apt upgrade -y
  • 完成后我们安装一些常用的工具,如wget、nano等。
apt install -y nano wget screenfetch tar
  • 等待安装完成后,我们即可用screenfetch命令查看系统信息。
screenfetch

会得到类似于如图内容:

到这里,环境基本上就准备好了。接下来就是安装SDK的环节了。

安装.NET SDK

.NET 9已经发布了Preview1,这里我们就用.NET 9来进行安装。

  • 首先下载.NET 9的ARM64二进制包。虽然我们也可以用包管理器来安装,但是那也太没有难度了,这里我们选择手动安装二进制文件的方式。

  • 我们从官网获取下载链接,一定别选错了,选择ARM64的二进制文件下载链接

wget https://download.visualstudio.microsoft.com/download/pr/e8743929-2c7b-4410-88f5-5f247040b498/ff454c589dc8d5dd9cb42e0950f34a69/dotnet-sdk-9.0.100-preview.1.24101.2-linux-arm64.tar.gz
  • 等待下载完成后,我们创建一个文件夹并且将文件解压到该文件夹中。
mkdir -p $HOME/.dotnet && tar -zxf dotnet-sdk-9.0.100-preview.1.24101.2-linux-arm64.tar.gz -C $HOME/.dotnet
  • 等待解压完成后,我们就可以配置环境变量,以让shell命令行能够识别到命令。

  • 首先编辑.bashrc文件

nano $HOME/.bashrc
  • 在文件末尾添加如下内容。
export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
# 解决错误
# GC heap initialization failed with error 0x8007000E
# Failed to create CoreCLR, HRESULT: 0x8007000E
export DOTNET_GCHeapHardLimit=1C0000000
  • 输入CTRL+O保存,然后输入CTRL+X退出nano编辑器

  • 接着输入命令刷新环境变量

source $HOME/.bashrc
  • 然后就可以输入dotnet --info查看.NET版本信息了。
dotnet --info
  • 若是一切正确就会输出类似如下内容:
.NET SDK:
 Version:           9.0.100-preview.1.24101.2
 Commit:            6bbd460f4d
 Workload version:  9.0.100-manifests.c840f51f
Runtime Environment:
 OS Name:     debian
 OS Version:  12
 OS Platform: Linux
 RID:         linux-arm64
 Base Path:   /root/.dotnet/sdk/9.0.100-preview.1.24101.2/
.NET workloads installed:
There are no installed workloads to display.
Host:
  Version:      9.0.0-preview.1.24080.9
  Architecture: arm64
  Commit:       1d1bf92fcf
.NET SDKs installed:
  9.0.100-preview.1.24101.2 [/root/.dotnet/sdk]
.NET runtimes installed:
  Microsoft.AspNetCore.App 9.0.0-preview.1.24081.5 [/root/.dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 9.0.0-preview.1.24080.9 [/root/.dotnet/shared/Microsoft.NETCore.App]
Other architectures found:
  None
Environment variables:
  DOTNET_ROOT       [/root/.dotnet]
global.json file:
  Not found
Learn more:
  https://aka.ms/dotnet/info
Download .NET:
  https://aka.ms/dotnet/download
  • 到此我们的.NET SDK的安装就已经成功了。

创建一个WebAPI项目来测试是否能够正常运行

我们创建一个文件夹用来存放我们的工程文件,并进入该文件夹。

mkdir -p $HOME/project
cd project

然后我们使用dotnet CLI来创建一个默认的WebAPI项目

dotnet new webapi -n HelloWorld

等待创建完成后,进入项目文件夹,并启动项目。

cd HelloWorld
dotnet run

然后等待编译完成后,查看程序启动输出。

可以看到我这里程序运行在5183端口。我们就可以在浏览器中访问http://localhost:5183/swagger了,并且测试了请求,可以正常工作。

若是存在root权限的手机,我们可以使用ip a命令查看本机IP地址。或许可以折腾成服务器来运行.NET项目。

从理论上来说也可以使用Frpc来映射本机的端口到公网服务器,这样我们的Android手机也可以当作服务器来运行。

到此我们的教程就结束了,感谢大家的支持。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号