我想用 C# 开发 Android 应用程序。我在 Windows 上尝试了 Xamarin Studio,效果非常好。有没有办法在 Ubuntu 上使用 Xamarin?
我注意到Xamarin.Android 二进制文件互联网上有适用于 Linux 的版本,但那些仅适用于 Xamarin.Android 9.22,我很想使用 Xamarin.Android 10。可以这样做吗?
最后,我知道没有适用于 Linux 的 Xamarin Studio。我可以使用什么 IDE 来代替它?如何设置它来构建 Android 应用程序并部署它们?
答案1
简短回答
是的,您可以在 Ubuntu 上使用 Xamarin.Android 进行开发!然而,遗憾的是,由于 Linux 并未得到 Xamarin 的官方支持,因此它并不像在 Windows 上那样简单。简而言之,首先你必须安装 Java、Mono 和 Android Studio,然后你必须自己编译 Xamarin.Android,最后你必须设置你最喜欢的 IDE 来与 Xamarin 配合使用。
。
先决条件
安装 Android Studio
(注意:理论上您可以只下载 Android SDK 和 NDK,但我还没有尝试过。)
在 Ubuntu 上安装 Android Studio 的详细介绍已在不同的答案,但我将快速介绍一下:首先,您需要安装 Java 8 JDK。虽然官方建议使用 Oracle Java,但 OpenJDK 也可以:
sudo apt install openjdk-8-jdk
您还需要设置变量JAVA_HOME
以匹配 Java 8 JDK 的安装目录。为此,请将以下行添加到您的~/.bashrc
:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
那你必须下载 Android Studio并将其解压到您喜欢的位置,例如您的主文件夹,或者/opt/androidstudio
。
一旦拥有它,您就可以启动它并在右上角打开 SDK 管理器:
现在下载您想要针对的 SDK 版本。确保还安装了 NDK,因为这是我们部署 Xamarin 应用程序所需要的。然后,您可以尝试构建一个示例应用程序并将其部署到您的手机(或正在运行的模拟器),以确保一切正常。
您还需要设置AndroidSdkDirectory
环境变量,以便 Xamarin 知道在哪里查找已安装的 SDK。您可以通过将此行添加到您的或您使用的任何 shell 来执行此.bashrc
操作:.zshrc
export AndroidSdkDirectory=~/Android/Sdk
您还可以为有用的命令创建别名:
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
安装 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
下一步我们安装 Mono 开发包。也许你不需要所有东西,但我懒得安装mono-complete
。你还需要nuget
,所以我们也安装它:
sudo apt install mono-complete nuget
您可以通过尝试该命令来检查是否安装了正确的版本msbuild
。旧版本的 Mono 没有它,因此如果命令曾是找到之后,您可能就可以开始了。
。
编译 Xamarin.Android
依赖项
成功编译 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
克隆
从 GitHub 获取最新的 Xamarin.Android 源代码:
git clone https://github.com/xamarin/xamarin-android.git
cd xamarin-android
你可能不想从 master 开始构建,因此选择一个稳定的版本GitHub 存储库并使用 进行检查git checkout [chosen commit hash]
。确保将子模块重置为正确的版本。
系统检测
如果您使用的是源自 Ubuntu 的发行版,则必须在系统检测代码中添加一行额外的代码才能使其正常工作:
nano build-tools/xaprepare/xaprepare/OperatingSystems/Linux.cs
并在线下
{"Ubuntu", (ctx) => new LinuxUbuntu (ctx)},
你必须为你的系统添加一行,例如对于 Elementary OS 它是:
{"elementary",(ctx) => new LinuxUbuntu (ctx)},
如果您使用的是纯 Ubuntu,则可以跳过此步骤。
建造
首先,您必须构建所有依赖项:
make prepare
然后你就可以构建 Xamarin.Android 本身了。如果你只想针对最新的 Android,请运行:
make
(目标版本是您的应用程序支持的最新 Android 版本。因此,如果您想为 Android 7 到 10 版本编写应用程序,您需要以 为目标v10.0
。如果您希望能够以任何版本的 Android 为目标,则必须运行make jenkins
。)
这两个步骤都需要相当有耐心和互联网连接。
安装
最后,您可以将 Xamarin.Android 安装到您的系统中:
sudo make install prefix=/usr
。
使用 Xamarin
设置项目
为了测试我们的构建是否有效,我们希望构建并部署一个实际的 Xamarin 项目。为此目的,理想的选择是xamarin/monodroid存储库。因此让我们克隆它:
git clone https://github.com/xamarin/monodroid-samples.git
cd monodroid-samples/Button
添加支持的 ABI
出于某种原因,我们需要将支持的 ABI 列表添加到项目文件中。在编辑器中打开它:
nano DroidButton.csproj
首先PropertyGroup
添加这一行:
<AndroidSupportedAbis>armeabi-v7a;arm64-v8a;x86</AndroidSupportedAbis>
如果您没有使用 进行构建make jenkins
,那么您还需要将 更改TargetFrameworkVersion
为v10.0
。
建造
msbuild
部署
在 AVD 管理器中启动虚拟设备(例如可通过 Android Studio 访问),或者以调试模式连接手机,然后运行:
msbuild /t:Install
这应该会将应用程序安装到您的手机上。如果您想使用一个命令构建和部署,您可以使用/t:Build,Install
。如果您想将额外参数传递给 ADB(例如识别要部署的设备),请使用/p:AdbTarget=[adb options]
,例如:msbuild /t:Install /p:AdbTarget=-s1080c487
。
。
概括
现在我们已经设置好了 Xamarin!这是一段漫长的旅程,不是吗?充满了惊喜、失望和痛苦。这值得吗?你自己决定,但对我来说绝对值得。现在,休息一下(虽然只是短暂的休息!)然后开始构建你梦想的应用程序!