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

标签 xamarin xamarin.android xamarin.ios

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

我现在必须为不同的客户发布相同的应用程序,只需稍作改动。

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

我之所以这么问是因为我看到 Web 应用程序通过包含另一个项目而不是覆盖不同的服务来满足这些问题。

最佳答案

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

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

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

  • 在您的核心项目设置中,转到配置并选择发布并单击复制,然后输入客户端名称。 VS screenshot of Core code configuration
  • 然后转到编译器,选择客户端配置,添加如图所示的定义符号,然后按 OK VS screenshot of Core code compiler settings
  • 然后在您的 ViewModel 中,使用您为客户端定义的符号添加您的公司特定代码。根据您的构建配置,Visual Studio 会告诉您将使用较深的颜色构建哪些代码 VS screenshot of ViewModel code with client specific code implementation
  • 然后转到解决方案属性-> 配置-> 常规-> 为每个客户/客户端添加三个(一次用于 Android(任何 CPU),一个用于 iPhone,一个用于 iPhone 模拟器)。 Visual Studio Screen Shot of Solution Properties
  • 所以它应该是这样的 - Client1, Client1|iPhone, Client1|iPhoneSimulator, Client2,
    Client2|iPhone,Client2|iPhone 模拟器。确保“创建
    未选中所有解决方案项的配置。
  • 然后,转到 Configuration Mappings 选项卡,选择 Client1 & Client2 并确保将根据所选平台构建正确的项目。并确保每个项目的正确配置是合适的(调试与发布)。在我们的例子中,只有 Viewmodels 需要客户端特定的代码,所以其余的项目都可以正确构建。 Visual Studio Screen Shot of Config mappings .按 OK 等,瞧!

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

    如果您想实现从提交到发布的整个过程的自动化,开发人员 Scott MacDougall,presented at a Toronto Xamarin Meetup shared究竟如何使用 Azure Devops 管理 10 多个将发布到不同 iOS 和 Android 帐户的应用程序来解决此问题。他只需进行一次更改,然后在 QA 批准工单/问题/项目/任务后,它就会直接进入每个商店。它要复杂得多,我必须更多地研究它才能向您解释。

    关于xamarin - 是否可以为不同的客户构建 Xamarin 多平台应用程序项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56656005/

    相关文章:

    Xamarin Android Binding ReferenceJar 相当于 aar 吗?

    c# - 如何在 MonoTouch 中使用 async/await 忽略未观察到的异常?

    visual-studio - 嵌入图像未在 Xamarin.Forms 中显示

    ios - native 链接失败,重复符号 : '_main' while adding native Binding Dll and Xamarin. Firebase.iOS.Database

    ios - 嵌入式单点调试

    c# - ViewModel 中的警报

    c# - 如何使用 Xamarin Forms Shell 在 iOS 中的 Tabbar 行和图标之间添加空格?

    c# - INotifyPropertyChanged 未触发 PropertyChanged

    xamarin - 更改 xamarin 表单 android 中 ListView 的上下文操作菜单背景的颜色

    c# - Toast 显示不止一次