📅  最后修改于: 2021-01-11 16:21:51             🧑  作者: Mango
下面列出了Xamarin面试常见问题解答。
Xamarin是一家开发软件的公司。 Xamarin的主要操作是构建可在跨平台上运行的移动应用程序。它用于为Android,iOS和Windows操作系统构建UI。 Xamarin应用程序共享代码库。 Xamarin的功能类似于本机应用程序。开发人员可以在Visual Studio中下载Xamarin工具。
Xamarin开发的好处是:
Xamarin应用程序开发的缺点是:
Xamarin有两种用于应用程序开发的方法。这些是
Xamarin和Xamarin.Forms之间的区别是:
Xamarin | Xamarin.Forms |
---|---|
Xamarin is an app development tool to create cross-platform mobile applications. | Xamarin.Forms is a UI toolkit to develop the application. |
Developers can use Xamarin.iOS, Xamarin.Android and Xamarin.Windows to create the application which is based on the particular platform for which the apps are created. | Developers can use Xamarin. Forms to create the one native version of the App which can run the entire mobile platform. |
Xamarin Profiler是开发人员用来监视Visual Studio中特定应用程序信息的工具。借助Xamarin Profiler,开发人员可以轻松分析该应用程序的行为。我们可以使用探查器来跟踪应用程序的内存信息并可以对其统计信息进行采样。
Xamarin洞察力是使开发人员能够实时识别和跟踪应用程序问题的工具。我们也可以将其用于监视系统以报告问题。 Xamarin于2014年10月推出了Xamarin Insight。但是,它于2016年3月31日关闭。在当今时代,开发人员可以相信Visual Studio App Center具有与Xamarin Insights提供的功能相同的功能。
Xamarin.Forms是一个框架,用于在移动应用程序中构建用户界面。在同一代码库中,开发人员必须为每个平台分别编写UI。这是耗时且困难的过程。 Xamarin.Forms允许开发人员仅创建一个UI,该UI可在所有平台(如Android,iOS和Windows)上使用。
Xamarin在移动应用程序开发中支持三种语言:
XAML或可扩展标记语言是一种特殊的工具,允许开发人员在Xamarin应用程序开发中定义用户界面。 XAML在Xamarin中起着至关重要的作用,但是Xamarin.Forms中的应用程序开发不是必需的。 Xaml可与应用程序的ModelView-ViewModel或MVVM体系结构一起使用。
Xamarin Studio是一个独立的IDE,用于开发基于开源项目Monodevelop的跨平台移动应用程序。
Xamarin Studio和Visual Studio都是IDE,用于开发Android,iOS,类库,控制台,PCL和Windows Phone应用程序。 Xamarin Studio和Visual Studio都支持F#。
Xamarin Studio | Visual Studio |
---|---|
Xamarin Studio works on both Windows OS X environments. | Visual Studio is available only for the windows environment. |
On Windows, Xamarin Studio doesn’t support windows phone and iOS project. | In Visual Studio, we can create any app. |
Xamarin Studio on Windows supports only Xamarin.Android project. | Visual Studio supports Xamarin.Android, Xamarin.iOS, and Xamarin.Windows project. |
Xamarin.Forms是一个平台,用于通过将XAML用于前端并将C#用于应用程序后端来开发跨平台移动应用程序。在Xamarin.Forms应用程序中,我们可以共享所有代码。 Xamarin.Forms还提供了Android和iOS本机API的100%API覆盖率。因此,我们可以开发本机Android,iOS和Windows应用程序。
有关Xamarin.Forms生命周期的更多信息,请单击此链接: Xamarin LifeCycle
当我们创建Xamarin.Forms应用程序时,我们将看到四个项目:
数据绑定模式的不同类型是:
Xamarin | Mono |
---|---|
Xamarin is a powerful solution for building awesome apps. | Mono is used in those cases when we want to build an app for a single platform. In that case, there is a need for a Native platform. |
With the help of Xamarin, we can create Native apps for multiple platforms via the same IDE, APIs, and Language. | Native mobile apps are built on Android, iOS.Java, and Windows. |
Using Xamarin, we can skip the extra development time for each platform. | Using Mono, we cannot skip the extra development time for each platform. |
Xamarin apps are accessible for more comprehensive ranges at a lower cost. | Mono apps are accessible for the broader ranges at a higher cost. |
以下是Xamarin.Forms中使用的不同类型的方案:
数据绑定是一种用于将数据源与用户界面同步的技术。完成数据绑定并且数据或我们的业务模型发生更改时,它会自动向UI元素显示更改,反之亦然。
Xamarin测试云使我们能够在各种设备上测试移动应用程序。测试云还用于同时在许多实际设备中进行自动化测试。
对于Xamarin设置,有四个步骤:
有关更多信息,请单击此处: Xamarin的安装
Xamarin.Forms中不同类型的布局控件为:
有关布局的更多信息,请单击以下链接: XamarinLayout
Xamarin.Forms中存在的不同类型的页面是:
有关Xamarin页面的更多信息,请单击以下链接: Xamarin.Forms
Xamarin的优点是:
在跨平台应用程序之间共享代码有两种方法:
代码共享策略的目标是支持多个平台可以利用单个代码库的体系结构。
可移植类库
我们在.Net中创建类库以重用我们的代码或使我们的代码仅可用于同一类型的应用程序,但是在某些情况下可能无法使用。在这里,我们假设已经为WPF或任何其他类型的应用程序创建了类库。而且,如果我们要访问Windows 8或Windows Phone应用程序的相同类型的类库,则在这种情况下,我们不能将其称为类库。
我们希望所有平台具有相同的应用程序,以使我们的生活变得轻松。我们希望在多个平台上使用相同的应用程序。微软技术日新月异,涵盖了所有设备。我们可以在Windows,Web,Mobile或Tab的所有类型平台上的一个框架内构建和验证所有类型的应用程序。
PCL解决了这个问题。 .Net 4.5引入了可移植类库(PCL),用于在一个位置开发业务逻辑,并且我们可以在.Net Framework上的所有类型的应用程序或所有平台(Windows,Web或移动)上使用该库进行端到端的使用。
该图显示了可移植类库(PCL)的流程。所有这些应用程序都在.Net Framework上运行。所有这些应用程序都有不同的环境和平台,但是它们都可以轻松使用可移植类库。换句话说,我们可以说我们只需要准备UI并为所有Windows,Web和移动窗口进行应用程序的DataBinding,因为相同的业务逻辑可以使用整个平台。
共享项目
共享项目是包含标准代码并链接到每个特定平台库或App的项目。它被编译为平台特定代码的一部分。为了开发基于共享项目的不错的解决方案,需要对其进行架构设计,使其在共享项目中具有核心功能。在这里,我们可能会使用部分类,抽象类和接口来管理平台特定项目中每个平台特定的对象。当我们处于原型阶段时,这类项目很好,因为对于通用代码而言,实现可共享项目很快。我们可以利用特定于平台的框架的所有优势。
可以使用编译器指令(例如,#if_Android _,#if_iOS _,#if_Windows_Phone_App.etc)在平台上分支共享代码。
XAML的优点是:
视图称为控件的控件。它们可以是可视对象,例如Label,Button,Entry,BoxView,ListView,TableView等。所有UI元素都是视图的子类。
ListView和TableView控件相似。我们可以将它们作为一个控件。它们之间的主要区别在于它们如何布置项目。
ListView: ListView控件垂直显示数据堆栈。就像标准的列表框一样。我们使用此控件来显示列表中的数据顺序,特别是长列表,该列表需要滚动,例如电子邮件列表,联系人列表或搜索结果。
TableView: TableView在行中水平显示数据堆栈。当我们需要更多空间来丰富要显示的项目的可视化效果时,可以使用此控件。
使用Xamarin的不同类型的应用程序包括:
Xamarin.Forms使用的方案是:
Xamarin为Android设计的应用程序包括:
Xamarin为iOS设计的应用程序包括:
Xamarin.Android应用程序依赖于Microsoft的Mono虚拟机。 Mono是Microsoft .NET Framework的开源实现,该框架基于C#和CLR的开源标准。 Mono于2001年推出。Mono的创建是为了允许.Net应用程序在Linux平台上运行,但后来进行了修改,以支持各种设备(包括嵌入式系统)上的开发。
在Xamarin中,Mono与Android的ART并行工作。在Android上,大多数系统功能(如音频,图形,OpenGL和电话系统)无法直接用于本机应用程序。可以通过Android Runtime Java API来添加它们,这些API在Java。*名称空间或Android。*名称空间之一中可用。然后,本机应用程序与公开的.NET API进行交互。然后,这些API通过Android Binding调用Android运行时Java API。
该架构如下所示:
Fresh MVVM是一个超轻型MVVM框架,仅针对Xamarin.Forms设计。它的设计简单,简单且灵活。这很容易学习,并且在配置上使用约定。
新鲜的MVVM与MVVM有所不同。 FreshMvvm使用Page和PageModel的概念,而不是View和ViewModel。
MVVM Cross: MVVM Cross是一个.NET跨平台的MVVM框架。它使我们能够为Xamarin等平台提供跨平台解决方案。表单,Xamarin.Android,Xamarin.iOS,Xamarin.Mac和WPF。这是不活跃的发展状态。
MVVM Cross要求将应用程序分为两部分:核心和用户界面。
核心部分包含视图模型,服务,模型和业务逻辑,而UI部分则包含与核心交互的不同视图和特定于平台的代码。这些视图是“视图”屏幕,其中包含图形内容。除了Core和UI外,该应用程序还可以包含用于各种功能的其他库。
MVVM Cross提供的功能包括:
MVVM Cross的后果是:
它的学习曲线过多,并且缺少有关如何开始开发应用程序的Wiki。
MVVM Light: MVVM Light是另一个框架,允许使用Xamarin上的MVVM Architecture模式创建企业级应用程序。 MVVM Light使开发人员能够在Xamarin等各种平台上创建和开发MVVM应用程序。表单,Xamarin.Android,Xamarin.iOS,UWP和WPF。它使我们能够将View与Model分开,从而编写可测试且可扩展的应用程序。它不支持异步。
MVVM Light应用程序分为以下部分:
Model-View-ViewModel可以在所有平台上使用。它旨在在用户界面控件及其逻辑之间提供清晰的分隔。
好处:
NuGet是.Net开发中最受欢迎的软件包管理器。它存在于Xamarin Studio 5和Visual Studio中。我们可以使用IDE轻松搜索包/第三方库并将其添加到Xamarin.Forms。
HTTPClient使用基于REST的服务帮助开发人员通过Internet与外部世界联系。 HTTPClient类用于发送HTTP请求和从由URI标识的资源接收HTTP响应。 System.Net.HTTP命名空间中存在的HTTPClient类。
ResourceDictionary用于定义XAML资源,可以在整个Xamarin.Forms应用程序中多次重复使用。
Xamarin.Forms:
Xamarin.Forms在以下情况下使用:
Xamarin本机:
Xamarin Native在以下情况下使用:
App.cs是应用程序的主要类,提供以下功能:
MainPage:它可以帮助我们设置应用程序的初始页面。
属性字典:它有助于我们存储生命周期状态中的值。
静态当前属性:提供当前应用程序对象的实例
生命周期方法是在应用程序进入特定状态时执行的一组技术。方法是:
使用XAML编译器,我们可以将XAML直接编译为中间(IL)语言。
好处:
XAML名称空间是XAML文件顶部的名称空间声明。当我们创建任何新的XAML UI时,根元素中有两个可用的声明。这是不带任何前缀的xmlns的默认声明:
xmlns="http://xamarin.com/schemas/2014/forms"
第二个声明使用x前缀:
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
使用前缀的名称空间的所有声明都是非默认声明。
假设我们想将ViewModel与XAML绑定,并且ViewModel在名称空间“ XamSample.ViewModels”中声明。
xmlns:vm="clr-namespace:XamSample.ViewModels; assembly=XamSample.ViewModels"
然后,我们可以使用VM prefix从此名称空间内部访问元素。
单击第一页的按钮后,我们调用以下方法,通过该方法可以从一页导航到另一页。
await Navigation.PushAsync(new MySecondPageXaml(), true);
我们必须使用ContentPage类下可用的“ Navigation”页面属性。此代码写在MainPage.XAML文件的编码页中。
ViewCell是一个很小的单独元素,代表ListView或Table的单个项目。 ViewCell不是视觉元素,而是对创建视觉外观的模板的描述。
内置单元格的类型为:
ControlTemplate:此模板决定控件的外观。它定义了控件的表示样式。
例如,一个按钮可以包含图像和文本。
触发器允许我们在XAML中声明动作,当针对控件的特定属性满足特定条件时,它会更改控件的外观。
我们可以在资源字典的控件级别,页面级别或应用程序级别添加触发器。这是四种可用的触发器。这些是:
Hockeyapp提供针对iOS,Android和Windows Phone的测试服务。
苹果是TestFlight的所有者。这是Xamarin.iOS应用程序Beta测试的主要方式。
这里是在Xmarin中构建应用程序的三种方法。
Xamarin.Forms
Xamarin.Android
Xamarin.iOS.