Xamarin 是一个开放源代码平台,用于通过 .NET 构建适用于跨平台的新式高性能应用程序。
Xamarin可以构建用C#编写的跨平台应用,目前支持的平台包括Windows、Linux、Android和IOS平台。开发Mac和Ios程序需要对应的设备。Android、IOS和UWP平台由微软提供支持,GTK#(Linux,Win7)支持由社区提供。详细参阅Xamarin.Forms 平台支持。
注意:观看此文需要你对VisualStudio使用和.NET开发有一定基础。
配置VisualStudio
本文以VisualStudio2017为例,支持更高的版本。
安装
1.使用.NET的移动开发
2.通用Windows平台开发
其他自动关联项目一并安装。
新建第一个Xamarin项目
打开vs,新建一个Xamarin项目。
默认OK即可。
然后就可以看到第一个工程了。解决方案包含四个项目:
- 共享代码项目,你的大部分代码都会写在这里面
- 第二个是构建Android平台应用项目,安卓专用代码写在这里
- 第三个是构建IOS平台,IOS专用代码写在这里
- 第三个是构建UWP项目,UWP专用代码写在这里
下面设置UWP项目为启动项,点击调试,然后你的第一个Xamarin应用程序就运行成功了!
加入GTK#平台
安装GTK支持
在Windows上安装GTK#支持,下载GTK# for .NET这个。Linux的支持程序也在这个页面,我们之后会用到。安装完成后重启电脑。
回到VisualStudio,在解决方案里加入新的项目类库(.NET Framework),注意有很多种类库,必须选Framework的,因为Xamarin的GTK包需要.NET Framework。
管理NuGet包
加入项目之后,管理它的NuGet包。
首先安装Xamarin.Forms,注意包版本需要和你的第一个项目,也就是共享项目里的版本保持一致,否则将报错。初始版本较低,你也可以把所有项目的Xamarin.Forms升到高版本,注意所有项目里的都需要保持同一版本,其依赖包需要一起升级。
然后安装Xamarin.Forms.Platform.GTK,同样需要和Xamarin.Forms包保持同一版本。
添加dll引用
最后给GTK项目添加dll引用,去你刚才安装的GTK# for .NET的安装目录里,默认在C:\Program Files (x86)\GtkSharp,然后找到一个叫2.12的文件夹,它里面有一个lib文件夹,在里面找到我们需要的dll,分别是:
- atk-sharp.dll
- gdk-sharp.dll
- glade-sharp.dll
- glib-sharp.dll
- gtk-dotnet.dll
- gtk-sharp.dll
- pango-sharp.dll
总计七个。我的电脑上它们在 GtkSharp\2.12\lib\gtk-sharp-2.0 里,你的电脑可能不一样,但是找到这七个dll即可。
有可能只有6个,如果遇到这种情况可以继续尝试,如遇到问题请访问MSDN。
哦对了,别忘了还要添加对第一个项目,也就是共享代码的项目的引用,如果没有添加的话会找不到App类。
修改代码
添加引用之后,在GTK项目里的唯一一个类里面加入以下代码:
using System;
using Xamarin.Forms;
using Xamarin.Forms.Platform.GTK;
[STAThread]
public static void Main(string[] args)
{
Gtk.Application.Init();
Forms.Init();
var app = new App();
var window = new FormsWindow();
window.LoadApplication(app);
window.SetApplicationTitle("Game of Life");
window.Show();
Gtk.Application.Run();
}
最后调试运行
出现窗口,写着 "Welcome to Xamarin.Forms",也许和上面的UWP程序界面有一点点不同。恭喜你,成功构建了第一个Xamarin的GTK#版本应用程序!
如果报错你的.NET Framework版本出错,请升级GTK项目的.NET Framework版本到第一个项目需要的版本。
尝试在Linux上构建Xamarin的GTK#程序
Linux版本是Ubuntu18.04.4LTS,经测试在deepin v15版本成功运行。
安装GTK支持
安装对应版本的Mono,GTK#会作为Mono的一部分被安装。重启电脑。
编译程序
把我们的项目复制到Linux上去。用MonoDevelop打开项目解决方案,可以看见除了GTK之外的项目都出现错误,我们先不管它。点开GTK项目的引用,当然对dll的引用也都出错了,用linux的本机dll替换调之前在windows上引用的dll。不同版本路径可能不同,我的是在/user/lib/cli/下。
编译运行,出现欢迎窗口,大功告成!
如果运行时出现缺失某dll错误,请重启电脑在尝试。