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 的简单总和吗?的主要内容,如果未能解决你的问题,请参考以下文章