Android 在运行时更改生成变量

Android 在运行时更改生成变量,android,gradle,Android,Gradle,大家好。 在androidstudio中运行时是否可以更改构建变量 我有两个服务器环境。一个用于调试生成类型,另一个用于发布。 代码本身依赖于在选择构建变量时设置的一些字符串和服务器地址。因此,当我选择debug作为例子时,字符串使用了debug服务器地址。发布时也一样。 但是,如果我希望能够在运行时选择环境,该怎么办? 我不想将这两个服务器URL都添加到这两种构建类型中,以便能够选择不同的环境。我相信这违背了构建变体的目的 所以我想知道是否有一种方法可以在运行时更改构建变量,让gradle系统

大家好。 在androidstudio中运行时是否可以更改构建变量

我有两个服务器环境。一个用于调试生成类型,另一个用于发布。 代码本身依赖于在选择构建变量时设置的一些字符串和服务器地址。因此,当我选择debug作为例子时,字符串使用了debug服务器地址。发布时也一样。 但是,如果我希望能够在运行时选择环境,该怎么办? 我不想将这两个服务器URL都添加到这两种构建类型中,以便能够选择不同的环境。我相信这违背了构建变体的目的

所以我想知道是否有一种方法可以在运行时更改构建变量,让gradle系统来解决问题


谢谢大家!

Gradle是一个构建系统,因此如果不进行检查,我假设您将无法控制运行时更改。 但根据您的描述,我不认为需要通过gradle进行更改,允许在运行后通过常规代码更改服务器字符串

在我的项目中,我总是放置一个名为Endpoints的类,该类提供所有服务器URL。 它有一个server_基本字符串,它是我在应用程序中定制的每个url的基本url。 静态构造函数根据构建变量为服务器库分配一个密钥,如果我需要更改它,我通常只需在应用程序中添加一个秘密菜单,允许我更改它

对于您试图实现的目标,有很多方法,但我认为依靠构建系统在运行时更改服务器环境并不好


我知道这并不能直接回答你的问题。

嗨,谢了,谢谢你的回答。因此,本质上,所有服务器地址都驻留在应用程序中,并且有一个“隐藏”菜单可以访问这些信息。我想当我选择发布构建类型并在调试中取消隐藏它时,我可以隐藏菜单。谢谢我就这样试试。我只是想避免保留所有url选项,而不管构建类型如何。。。但我想这样做没有什么害处:)谢谢!你可以删除很多你想用proguardoh隐藏的东西,例如,当我编译发布时,proGuard会删除与这个特性相关的类吗?像Constants类(包含所有URL)和菜单本身?这种东西?是的。然后,如果有人仍然可以访问保密菜单,应用程序将崩溃。谢谢。这很有帮助。