我目前正在阅读Xamarin,并偶然发现一个令我困惑的话题。我的意图是,开发一个iOS应用程序作为我的项目的目标。但是,由于其他情况,我现在只能在Android手机上进行测试,并且首先在iPhone的开发的最后部分进行测试。因此,该应用程序必须最初开发和测试Android,然后 - 通过Xamarin - 部署为iOS应用程序。
在安装了Xamarin的Visual Studio中,可以选择使用本机应用程序开发,例如Xamarin.iOS,Xamarin.Droid和Xamarin Windows应用程序。据一些经验丰富的程序员告诉我,这三个应用程序/平台中的哪一个会选择初始开发并不重要,因为它总是可以 - 再次通过Xamarin - 部署到最终需要的任何平台
现在项目菜单中还有第四个应用程序解决方案,名为"跨平台"这让我很困惑。据我了解,这是一个通用的应用程序选择,实际上与上一段中提到的本机应用程序的目的相同 - 在项目结束时需要部署到任何平台。
除非我在这里误解了一些东西,否则拥有一个所谓的跨平台应用程序的差异或想法究竟是什么呢?作为第四个选择,如果它基本上可以与本机应用程序相同吗?
答案 0 :(得分:3)
在Xamarin中有两种方法:
使用Xamarin,您可以生成一个原生应用程序并保持引用:
你可以用Java,Objective-c或swift来做的一切 应该能够使用Xamarin。
答案 1 :(得分:1)
Xamarin并没有神奇地制作应用,你为Android写的,在iOS上运行。至少没有创建一个iOS应用程序和所有的UI等。
使用Xamarin,您可以使用C#而不是Java或Objective-C或Swift编写本机应用程序。
那为什么选择Xamarin?它使您可以共享 lot 代码。根据您构建代码的方式,有些应用程序可以实现超过90%的共享代码或更多。但是,从应用程序到应用程序有很大不同,无论您是否使用Xamarin.Forms,都会有所不同。
您可能在您的问题中引用了Xamarin.Forms以及随附的项目类型。 Xamarin.Forms是在Xamarin.Android,Xamarin.iOS和UWP之上运行的UI框架。但请注意,这只是一个UI框架,它可以满足您的所有需求。
然而,Xamarin.Forms并没有神奇地让Android应用程序在iOS上运行。您使用Xamarin.Forms编写的UI具有巨大的运行潜力,并且在iOS上看起来也很好。但是,它仍然在iOS项目中运行,而不是Android项目。对于您要定位的任何其他平台,情况都是如此。
Xamarin.Forms是这些单独平台之上的抽象,可以帮助您编写一次UI并可能在任何地方运行,以及导航和服务定位器等其他功能。
您在Visual Studio的跨平台部分中引用的项目类型,只是创建Xamarin.Forms应用程序的不同方式。这可以在可移植类库(PCL)中,该库创建一个程序集,其目标是所选目标的.NET功能的公共子集。沿着PCL,每个支持的平台都会有一个应用程序项目。
另一种类型是使用共享项目类型创建Xamarin.Forms应用程序,该类型与PCL不同。怎么样?共享项目应该作为连接项目的美化文件。呃什么?查看它,因为在构建项目时,应用程序项目本身会复制和编译共享项目中的文件。因此,您可以在该共享项目中编写特定于平台的代码。但是,它确实没有像PCL一样生成可以与朋友分享的程序集。
这是很多Xamarin.Forms谈话。但是,Xamarin.Forms 不是是您创建Xamarin应用程序的唯一方法。 Xamarin提供1:1的原生API暴露。意思是,就像在iOS上一样,您可以创建故事板,ViewControllers,利用UIKit for Views等。您可以在Xamarin.iOS项目中完全相同。 Xamarin.Android也是如此,您可以在Xamarin.Android项目中创建小部件,活动等。这两个都产生本机App。但是,在这种情况下,UI不是抽象的,并且为您提供了更多的自定义应用程序的能力,而不必对抗Xamarin.Forms。
你应该选哪一个?这取决于你要弄明白。这两种方法都可以使用 native UI完全生成 native 应用程序。这取决于你是想要更多还是更少的抽象。