是否可以为不同的客户构建Xamarin多平台应用项目?

时间:2019-06-18 19:41:55

标签: xamarin xamarin.android xamarin.ios

现在,我正在维护一个Xamarin Multiplatform应用程序,该应用程序只能满足一个客户的需求。 我的Visual Studio解决方案包括一个带有ViewModels和资源的Core项目,以及一个带有UI和平台特定代码的iOS和Android项目。

我现在只需要稍作更改即可为其他客户发布相同的应用程序。

所以我在想,是否有可能有另一个iOS和android应用程序“扩展”我的其他项目,以便我可以覆盖需要更改的部分?

我之所以问是因为,我看到仅通过包含另一个项目而不是覆盖不同的服务即可完全满足该问题的Web应用程序。

2 个答案:

答案 0 :(得分:1)

是的,有很多方法可以做到这一点。这只是我头上的两个。

方法1:多个构建配置(中级)

一种方法是创建多个构建配置,然后根据要运行的构建选择要运行的代码。 基本上是这样做,并假设您使用的是Mac,并且UI使用的所有数据都来自Core项目中的ViewModel。然后

  1. 在核心项目设置中,转到“配置”,选择“发行”,然后单击“复制”,然后键入客户端名称。VS screenshot of Core code configuration
  2. 然后转到编译器,选择客户端配置,添加定义的符号,如图所示,然后按OK VS screenshot of Core code compiler settings
  3. 然后在ViewModel中,使用为客户端定义的符号添加公司特定的代码。根据您的构建配置,Visual Studio会告诉您将使用较深的颜色VS screenshot of ViewModel code with client specific code implementation
  4. 来构建哪些代码。
  5. 然后转到解决方案属性->配置->常规->为每个客户/客户端添加三个(一次用于Android(任何CPU),一个针对iPhone,一个针对iPhone Simulator)。Visual Studio Screen Shot of Solution Properties
  6. 因此它应该看起来像这样-Client1,Client1 | iPhone,Client1 | iPhoneSimulator,Client2, Client2 | iPhone,Client2 | iPhoneSimulator。确保“创建 未选中所有解决方案项目的配置”。
  7. 然后,转到“配置映射”选项卡,选择Client1和Client2,并确保将根据所选平台构建正确的项目。并确保每个项目的正确配置都是正确的(调试与发布)。在我们的案例中,只有Viewmodels需要客户端特定的代码,因此其余项目都可以正确构建。 Visual Studio Screen Shot of Config mappings。按Ok et puis voila!

方法2:Azure Devops(专家级别)

如果您希望从提交到发布的整个过程自动化,开发人员Scott presented at a Toronto Xamarin Meetup shared准确地介绍了如何使用Azure Devops解决10个以上要发布到不同版本的应用程序的问题。 iOS和Android帐户。他只需要进行一次更改,然后一旦票证/问题/物品/任务被质量检查部门批准,它将直接进入每个商店。它要复杂得多,我将不得不对其进行更多的研究以向您解释。

答案 1 :(得分:1)

如果这些更改还包含一些逻辑,那么我还将继续创建多个Build配置并使用if指令。 然后,在您的代码中可以输入以下内容:

private void ExecuteApiCall()
{

#if COMPANY1
//do something
#elif COMPANY2
//do something else
#else
//do else

}

如果只需要对UI进行一些更改,您还可以考虑具有多个主题,然后仅将一个主题分配给特定客户: https://medium.com/@milan.gohil/adding-themes-to-your-xamarin-forms-app-3da3032cc3a1