如何使用 Xamarin 为 Android 开发?

m93*_*93a 6 mono android dotnet android-sdk

我想用 C# 为 Android 开发应用程序。在 Windows 上,我尝试了 Xamarin Studio,我对它非常满意。有没有办法在 Ubuntu 上使用 Xamarin?

我注意到Internet上有适用于 Linux 的Xamarin.Android 二进制文件,但这些仅适用于 Xamarin.Android 9.22,我很想使用 Xamarin.Android 10。可以这样做吗?

最后,我知道没有适用于 Linux 的 Xamarin Studio。我可以使用什么 IDE 来代替它?如何设置它以构建 Android 应用程序并部署它们?

m93*_*93a 9

简答

是的,您可以在 Ubuntu 上使用 Xamarin.Android 进行开发!但是,遗憾的是,由于 Xamarin 并未正式支持 Linux,因此它不像在 Windows 上那样简单。简而言之,首先你必须安装 Java、Mono 和 Android Studio,然后你必须自己编译 Xamarin.Android,最后你必须设置你最喜欢的 IDE 来使用 Xamarin。

.

先决条件

安装 Android Studio

(注意:理论上你可以只下载 Android SDK 和 NDK,不过我还没有尝试过。)

在 Ubuntu 上安装 Android Studio 已经在不同的 SO answer 中进行了彻底的介绍,但我会快速回顾一下:首先你需要安装 Java 8 JDK。虽然官方建议使用 Oracle Java,但 OpenJDK 会做得很好:

sudo apt install openjdk-8-jdk
Run Code Online (Sandbox Code Playgroud)

您还需要设置JAVA_HOME变量以匹配 Java 8 JDK 的安装目录。为此,将此行添加到您的~/.bashrc

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)

然后,您必须下载 Android Studio并将其解压缩到您喜欢的位置,例如您的主文件夹或/opt/androidstudio.

一旦你有了它,你就可以启动它并在右上角打开 SDK Manager:

SDK管理器

现在下载您要定位的 SDK 版本。不过,请务必安装 NDK,因为这是我们部署 Xamarin 应用程序所需要的。然后您可以尝试构建一个示例应用程序并将其部署到您的手机(或正在运行的模拟器),以确保一切正常。

您还需要设置AndroidSdkDirectory环境变量,以便 Xamarin 知道在哪里查找已安装的 SDK。您可以通过将此行添加到您的.bashrc.zshrc或您使用的任何外壳来实现:

export AndroidSdkDirectory=~/Android/Sdk
Run Code Online (Sandbox Code Playgroud)

您还可以为有用的命令创建别名:

alias sdkmanager=~/Android/Sdk/tools/bin/sdkmanager
alias avdmanager=~/Android/Sdk/tools/bin/avdmanager
alias adb=~/Android/Sdk/platform-tools/adb
alias android-emulator=~/Android/Sdk/emulator/emulator
Run Code Online (Sandbox Code Playgroud)

安装 Mono

截至 2019 年 10 月,Ubuntu 的存储库中仍然没有 Mono 5。因此,我们必须添加官方 Mono 存储库(无论如何这是个好主意):

sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
Run Code Online (Sandbox Code Playgroud)

下一步我们安装 Mono 开发包。也许你不需要所有东西,但我很懒惰,用mono-complete. 您还需要nuget,所以让我们也安装它:

sudo apt install mono-complete nuget
Run Code Online (Sandbox Code Playgroud)

您可以通过尝试msbuild命令来检查是否安装了正确的版本。单声道的老版本没有,所以如果命令发现,你可能准备好了。

.

编译 Xamarin.Android

依赖关系

成功编译 Xamarin.Android 需要一些依赖项。大多数软件包已经安装在您的计算机上,因此您可以尝试跳过此步骤,只安装缺少的软件包。但是,重试构建需要一些时间,因此您可以通过立即安装它们来保存它:

sudo apt install mono-complete nuget
Run Code Online (Sandbox Code Playgroud)

克隆

从 GitHub 获取最新的 Xamarin.Android 源代码:

sudo apt install autoconf autotools-dev automake cmake build-essential curl gcc g++ g++-mingw-w64 gcc-mingw-w64 git libncurses5-dev libtool libz-mingw-w64-dev libzip-dev linux-libc-dev make ninja-build p7zip-full sqlite3 vim-common zlib1g-dev linux-libc-dev:i386 zlib1g-dev:i386 libx32tinfo-dev
Run Code Online (Sandbox Code Playgroud)

您可能不想从 master 构建,因此在GitHub 存储库中选择一个稳定版本并使用git checkout [chosen commit hash]. 确保还将子模块重置为正确的版本。

系统检测

如果您使用的是从 Ubuntu 派生的发行版,则必须在系统检测代码中添加额外的行以使其工作:

nano build-tools/xaprepare/xaprepare/OperatingSystems/Linux.cs
Run Code Online (Sandbox Code Playgroud)

和线下

{"Ubuntu",    (ctx) => new LinuxUbuntu (ctx)},
Run Code Online (Sandbox Code Playgroud)

您必须为您的系统添加一行,例如。对于基本操作系统,它是:

{"elementary",(ctx) => new LinuxUbuntu (ctx)},
Run Code Online (Sandbox Code Playgroud)

如果您使用的是纯 Ubuntu,则可以跳过此步骤。

建造

首先,您必须构建所有依赖项:

git clone https://github.com/xamarin/xamarin-android.git
cd xamarin-android
Run Code Online (Sandbox Code Playgroud)

然后你可以构建 Xamarin.Android 本身。如果您只想针对最新的 Android,请运行:

nano build-tools/xaprepare/xaprepare/OperatingSystems/Linux.cs
Run Code Online (Sandbox Code Playgroud)

(目标版本是您的应用程序支持的最新 Android 版本。因此,如果您想为 7 到 10 的 Android 版本编写应用程序,您需要定位v10.0。如果您希望能够定位任何版本的 Android,您将必须运行make jenkins。)

这两个步骤都需要极大的耐心和互联网连接。

安装

最后,您可以将 Xamarin.Android 安装到您的系统:

{"Ubuntu",    (ctx) => new LinuxUbuntu (ctx)},
Run Code Online (Sandbox Code Playgroud)

.

使用 Xamarin

设置项目

为了测试我们的构建是否真的有效,我们想要构建和部署一个实际的 Xamarin 项目。为此目的,xamarin/monodroid存储库中的演示项目是理想的选择。所以让我们克隆它:

{"elementary",(ctx) => new LinuxUbuntu (ctx)},
Run Code Online (Sandbox Code Playgroud)

添加支持的 ABI

出于某种原因,我们需要将支持的 ABI 列表添加到项目文件中。在编辑器中打开它:

make prepare
Run Code Online (Sandbox Code Playgroud)

并在第一PropertyGroup行添加以下行:

make
Run Code Online (Sandbox Code Playgroud)

如果您没有使用 构建make jenkins,您还需要将 更改TargetFrameworkVersionv10.0

建造

sudo make install prefix=/usr
Run Code Online (Sandbox Code Playgroud)

部署

在 AVD 管理器中启动虚拟设备(例如通过 Android Studio 访问),或者在调试模式下连接手机,然后运行:

git clone https://github.com/xamarin/monodroid-samples.git
cd monodroid-samples/Button
Run Code Online (Sandbox Code Playgroud)

这应该将该应用程序安装到您的手机上。如果你想用一个命令来构建和部署,你可以使用/t:Build,Install. 如果您想向 ADB 传递额外参数(例如,标识要部署的设备),请使用/p:AdbTarget=[adb options],例如:msbuild /t:Install /p:AdbTarget=-s1080c487

.

概括

所以我们已经设置了 Xamarin!这是一段漫长的旅程,不是吗?充满惊喜、失望和通常纯粹的痛苦。它值得吗?你来决定,但对我来说绝对是。现在,休息一下(虽然只是短暂的!)然后开始构建您梦想中的应用程序!

  • 我让它工作了,根据 xamarin 人的说法,我应该在准备过程中依赖他们提供的 jdk 和 android sdk,这对我来说是诀窍 (2认同)