【问题标题】:How to set the build variant programmatically at runtime in Android Studio?如何在 Android Studio 运行时以编程方式设置构建变体?
【发布时间】:2019-10-17 10:17:28
【问题描述】:

是否可以在 Android Studio 中以编程方式更改构建变体的运行时间?

我有不同的服务器环境(Release、Debug、Production、Dev、Dev1、Dev2、QA 等)。代码本身依赖于我选择构建变体时设置的一些字符串、SDK 的初始化和服务器地址。因此,当我为实例选择调试时,字符串会使用调试服务器地址和 SDK。发布也是一样。但是如果我希望能够在运行时选择环境呢?

【问题讨论】:

  • 你试过在 gradle 文件中使用 productFlavors 吗?使用风味,您可以选择要在构建时运行的应用程序类型。除此之外,您还可以添加仅与该变量一起运行的特定字符串

标签: android android-studio kotlin build.gradle build-variant


【解决方案1】:

构建变体是一个构建时间过程,这意味着如果您想更改 apk 的构建变体,则必须重新构建您的项目。我看到您需要与 setting.bundles 等效的东西,这是 iOS 的概念。 Android 没有这样的概念,尽管我们可以通过使用Preference 或使用managed-configuration 在所有这些实现中实现它,但您必须清除应用程序缓存。我建议创建一个具有所有指定 URL 的通用构建变体并在运行时处理配置

【讨论】:

    【解决方案2】:

    正如您在“build 变体”的名称中所读到的,它在构建 时使用,而不是在运行 时使用。 您不能在运行时更改构建变体。 您必须想出另一种方法,例如隐藏调试视图来在运行时更改参数。

    【讨论】:

      【解决方案3】:

      不行,你只能改变它的运行时间。

      或者,您可以为变体类创建一个单例并创建变体列表。从视图中选择变体并将其存储在缓存中,当应用程序运行时,您可以获得该变体。重新启动您的应用

      【讨论】:

        【解决方案4】:

        为您的 Variants 创建一个自定义 POJO 类,并尝试将所需的 Variant 保存在共享首选项中,然后简单地重新启动您的 android 应用程序。从缓存中加载 Singelton Variant 对象中的值,然后对您的应用执行任何您想要执行的操作。

        【讨论】:

          猜你喜欢
          • 2014-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-15
          相关资源
          最近更新 更多