android-studio - gradle.properties 中的条件代理设置

标签 android-studio gradle proxy

我在办公室使用经过身份验证的公司代理使用 Android Studio 和 gradle。不幸的是,这意味着我必须在 gradle.properties 中输入我的代理配置,包括 user/pass 明文(或者让它从 Android Studio 的首选项自动传播)。

但是,有时我在办公室外工作,然后每次都必须手动进入并注释掉我的代理设置,这很繁琐。

有没有办法让 gradle 文件中的属性有条件,以便通过检测我是否在公司网络上来自动激活代理配置?条件本身可以通过查询当前网络的网络适配器来检索,或者更好的方法是对我公司网络上的已知主机进行简单的 curl 。

我同时使用 Windows 和 Ubuntu 客户端,但这个问题主要适用于 Windows。

我想可能还有其他方法可以解决这个问题,也许是更改全局 gradle 设置而不是项目特定设置。老实说,我必须做一个类似的 git config --add http.proxy,同样适用于 npmbower 等等,每次我改变工作环境。欢迎提出其他建议,即使这个问题专门询问如何创建一个 gradle.properties 来尝试连接到已知的 Intranet 主机,并且取决于结果集或取消设置属性。

最佳答案

我有一段时间遇到同样的问题。我还有一个问题是 gradle.properties 使用代理设置 checkin 我们的 VCS;并且我必须在所有提交之前采取额外的步骤来忽略我在该文件中所做的更改。此外,我不得不在一天内多次注释/取消注释同一段代码。

我无法想出条件更新系统,但第二个问题已通过 Android Studio 中的内置搁置功能解决,并创建更改列表以保留具有不同设置的文件的 2 个副本。

我认为没有任何方法可以按照您要求的方式解决此问题。原因很简单:.properties 文件并不意味着具有逻辑。引用Java docs :

Properties are configuration values managed as key/value pairs.

动态设置可以通过 Android Studio 代理设置或编写在项目加载时运行、检查网络状况和设置系统属性的 Gradle 任务来实现。我没有测试过这种方法,但我认为这也会更新 gradle.properties 文件(您可能不想要的副作用)。但是 Gradle 正在做的事情也可以通过您需要在项目加载时执行的 shell 脚本来完成。

我目前处理代理更新的方式是在 Android Studio 本身中输入/保存代理设置,并在我在不同位置之间移动时进行切换。只需几个命令即可打开代理对话框并启用/禁用已保存的代理。

由于此代理文件保存在 idea.config.path/options/proxy.settings.xml 中,您还可以尝试编写一个可以根据网络可用性切换内容的 shell 脚本。

这可能不是您想要的,但我希望它能澄清为什么不能按照您要求的方式完成。

关于android-studio - gradle.properties 中的条件代理设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39362605/

相关文章:

c# - 正确修复第一次请求时 HttpWebRequest GetResponse 延迟

node.js - 如何在同一台服务器上运行多个实例?

c++ - 如何使用 Qt 获取系统代理?

android-studio - Intellij Idea 可以即时运行吗?

java - 在 Android 应用程序中添加 Java 部分的 Intent 时出错

android - 我无法在 Android Studio 中设置 JDK 1.8

android - Android Studio中的Gradle同步失败,没有构建Gradle

java - 运行 getDisplayMetrics() 方法时,使用 gradle 编译给出的值与使用 eclipse 编译的值不同

android - Gradle 构建在 Android Studio 中失败

java - gradle war 不想编译我的项目