Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?

Posted

技术标签:

【中文标题】Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?【英文标题】:Is Xamarin.Forms a simple sum of Xamarin.Android, Xamarin.IoS and Xamarin.Win? 【发布时间】:2019-02-20 16:08:03 【问题描述】:

Xamarin.Forms 是否被视为具有共享代码库包装器的 Xamarin.android 和 Xamarin.ios 的简单总和?还是引擎盖下的内容比表面上看到的更多?

我不是在谈论共享代码库,因为我意识到它是特定于 Xamarin.Forms 的,而是(例如)如果我要将 Xamarin.Droid 项目与 Xamarin.Forms 解决方案的 android 代码库进行比较,将会我发现有什么明显的不同吗?我会发现任何差异。 IOS 和 Windows 也是如此......

只是为了提供上下文;我有兴趣使用一些最初为 Xamarin.android 设计的工具,但是我的项目是 Xamarin.forms 解决方案,如果我遇到麻烦,提前知道会很酷。

提前感谢你们这些好人。

【问题讨论】:

不,它不仅仅是其各个部分的“总和”。它添加了许多它自己的附加功能,并且它也有一些限制,因为它不能充分利用仅存在于一个平台上的功能。但这是一个非常广泛的问题,无法在 SO 上有意义地回答 好的,这是有道理的,但这并不表示 xamarin.droid 项目是否被认为等同于 xamarin.forms 解决方案的 android 代码库。 android 代码库中是否存在这种额外的复杂性? “等价”是什么意思?但一般来说,Forms 解决方案中的 Android 项目将由 Xamarin Android 代码组成,尽管它可能会利用 MessagingCenter 或 DependencyService 等 Forms 功能 通过等价性我的意思是,除了自定义渲染器和依赖服务之外,xamarin.forms 解决方案的 droid 部分是否可以毫无问题地移植到常规 xamarin.droid 项目? 一般来说是的。 【参考方案1】:

最后,Xamarin Forms 是原生 API 的包装器,因此如果您在 Xamarin Forms 中有某些内容,当然可以将其移植到 Xamarin Android、iOS 或 Windows。

Xamarin.Forms 是否被视为具有共享代码库包装器的 Xamarin.Android 和 Xamarin.IoS 的简单总和?还是引擎盖下的内容比表面上看到的更多?

在最简单的情况下,Xamarin.Forms 是一个用于构建用户界面的移动应用程序框架。 Xamarin 网站上的定义是:

Xamarin.Forms 是一个跨平台 UI 工具包,允许开发人员轻松创建可在 Android、iOS 和 Windows Phone 之间共享的本机用户界面布局。

但不要只关注该定义中的“UI”一词,而只考虑屏幕控件。相反,将注意力集中在 Xamarin 中的“工具包”这个词上。除了跨平台工作的用户界面控件之外,表单还提供了更多功能。

Xamarin.Forms 将发出 100% 本机 iOS、Android 或 UWP 应用程序 - 事实上,任何 Xamarin.Forms 应用程序的起点都在这些平台项目之一中。但是,这只是平台特定代码需要完成的。其余代码都可以编写在所有应用程序共享的层中。

如果我要将 Xamarin.Droid 项目与 Xamarin.Forms 解决方案的 android 代码库进行比较,我会发现任何显着差异吗?我会发现任何差异。 IOS 和 Windows 也是如此......

只是基本 API 的区别,就是表单和原生的区别

【讨论】:

【参考方案2】:

您应该将 Xamarin.Forms 视为实际平台上的 UI 的抽象。 Xamarin.Forms (XF) 在本机平台控件中呈现 UI,但它们是使用 XF XAML 创建的。

针对 XF 进行编码就像在 UI 级别使用不同的工具集为不同的平台进行编码!

如果需要,您可以通过接口实现和注入深入了解平台特定的细节。

【讨论】:

以上是关于Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms MvvM框架之FreshMvvM翻译一

Xamarin.Forms教程开发的Xcode的下载安装

Xamarin.Forms 5.0 来了

如何使用 Xamarin.Forms 创建抽屉/滑块菜单?

Xamarin.forms 安排本地通知

将Xamarin.Android应用程序迁移到Xamarin.Forms应用程序