android - 为不同的环境构建不同的 APK (Xamarin.Android)

标签 android xamarin xamarin.android xamarin-studio

我们正在构建连接到云的 Xamarin.Android 应用程序。 对于不同的环境,即开发、登台和生产,我们有不同的云 URL。 每次为特定环境生成 APK 时,我都会手动更改 URL。 我遇到了改变“ flavor ”的 Gradle/ANT 方法,但由于它在 Xamarin 中不可用,我该怎么做?如何在 Xamarin 中管理不同的环境?是否使用 MSBuild 配置文件?任何帮助将不胜感激!

编辑: 我目前拥有的:

 /// <summary>
///     The application URL for PROD
/// </summary>
//private const string ApplicationUrl = "https://prod.azure-mobile.net/";

/// <summary>
///     The application URL for DEV
/// </summary>
private const string ApplicationUrl = "https://dev.azure-mobile.net/";

在这种情况下,我们手动注释/取消注释不同构建(Dev/Staging/Prod)的 URL 并生成 APK。我知道这不是最佳解决方案,而且容易出错。

最佳答案

我可能会为开发、暂存和生产定义不同的构建配置(在项目选项中)。然后您可以定义符号(在选项的编译器页面中)并使用预处理器指令更改代码中 ApplicationUrl 的定义。然后,构建每一个都只是在下拉列表中选择适当的配置的问题。

我还会更改每个配置的输出路径,以便将 APK 写入不同的文件夹,以减少对每个 APK 构建时使用的配置可能产生的混淆。

缺点是,如果您更改任何其他项目选项,您需要确保对每个配置进行更改,但由于这种情况并不经常进行,因此这可能是一个合理的妥协。

关于android - 为不同的环境构建不同的 APK (Xamarin.Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29484061/

相关文章:

java - 我应该使用 MapView 还是 Map Intent?

xamarin - PropertyChanged被触发,但 View 没有更新

c# - 如何在 Xamarin Forms 中将行为转换为泛型类型?

c# - 错误 CS0234 命名空间 'Xamarin.Forms.Platform 中不存在类型或命名空间名称 'Android'

c# - 隐藏主页上的导航栏 - Xamarin Forms

c# - 如何在 xamarin 的 ListView 中使用 OnItemLongClick

c# - 带有 TabbedView 的 Xamarin.Forms MasterDetailPage - 通过汉堡菜单导航时出现的选项卡标题

java - 无法从源代码编译未经修改的Android

java - sqlite 行 ID 与 ListView 不匹配 - ANDROID

android - 这是从 fragment 访问数组列表的正确方法吗?