我正在Windows构建服务器上的Jenkins中准备Android构建管道。 Jenkins使用了许多工作区,并经常重复使用它们。我注意到当Jenkins重新使用工作区时,没有任何问题,并且构建完美无缺。但是当它首次检出新工作区时,gradle包装器会抱怨它无法安装Android构建工具。已安装构建工具(确切版本)。
我可以打开另一个较旧的工作区并在那里运行gradle构建并且它完美运行然后,使用相同的登录和完全相同的cmd
会话,转到新工作区并运行相同的命令和它抱怨它无法安装Android构建工具。
关于Android配置的说明:我将Android SDK存储在C:\android-sdk\
中,并让每个用户都可以访问该目录。 ANDROID_HOME和ANDROID_SDK设置为系统范围的变量。这是最方便的解决方案 - 这样,每个登录的用户,域帐户或其他方式(理论上)都能够立即构建解决方案,而无需设置自己的SDK,而且我们最终不会得到很多重复的SDK数据。
我可以通过在Android Studio中打开工作区文件夹来手动修复此问题。仅仅这样做似乎解决了这个问题。我的假设是项目元数据中的某个缓存值告诉gradle在哪里可以找到Android构建工具,当我打开Android Studio时它会更新这个值。
显然,解决方案并不充分,因为构建需要每次都能持续工作而无需人工干预。是否有一些命令我可以用来刷新这个缓存?或者也许一些配置文件被检入到git中不应该是?
答案 0 :(得分:0)
想出来。 Gradle按优先顺序在两个位置查找SDK:首先,它检查local.properties文件是否指定SDK。然后,它尝试ANDROID_HOME(不是ANDROID_SDK)系统变量。在Android Studio中打开文件夹会生成local.properties文件,这就是解决方法的原因。
我没有local.properties文件,但我的ANDROID_HOME设置为Android Studio安装文件夹而不是Android SDK。当我将它移动到SDK并重新启动Jenkins代理服务时,它可以工作。