为什么Jenkins在不同的文件夹中搜索Android SDK工具?

为什么Jenkins在不同的文件夹中搜索Android SDK工具?,android,jenkins,android-sdk-tools,Android,Jenkins,Android Sdk Tools,我正试图在Jenkins上构建一个简单的android项目,关于SDK的所有内容都已安装,如下图所示 但是Jenkins用这个日志失败了 Observed package id 'tools' in inconsistent location 'C:\Users\Administrator\AppData\Local\Android\sdk\tools' (Expected 'C:\Users\Administrator\AppData\Local\Android\sdk\tools\tool

我正试图在Jenkins上构建一个简单的android项目,关于SDK的所有内容都已安装,如下图所示

但是Jenkins用这个日志失败了

Observed package id 'tools' in inconsistent location 'C:\Users\Administrator\AppData\Local\Android\sdk\tools' (Expected 'C:\Users\Administrator\AppData\Local\Android\sdk\tools\tools')
Checking the license for package Android SDK Build-Tools 29.0.1 in C:\Users\Administrator\AppData\Local\Android\sdk\tools\licenses
Warning: License for package Android SDK Build-Tools 29.0.1 not accepted.
Checking the license for package Android SDK Platform 29 in C:\Users\Administrator\AppData\Local\Android\sdk\tools\licenses
Warning: License for package Android SDK Platform 29 not accepted.

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> Failed to install the following Android SDK packages as some licences have not been accepted.
     build-tools;29.0.1 Android SDK Build-Tools 29.0.1
     platforms;android-29 Android SDK Platform 29
我还指定了Jenkins配置上的SDK路径


为什么Jenkins在sdk/tools/tools下搜索

这只是一个警告;导致构建失败的是许可证未被接受


我怀疑
settings.gradle
中的值是导致这种行为的原因。

但这个问题导致Jenkins搜索
sdk\tools\licenses
,而不是
sdk\licenses
@blackkara刚才看到的;似乎是Visual Studio SDK安装,基于位置。将Jenkins作为管理员运行通常不是一个好主意,因为脚本可以做他们想做的任何事情。尝试使用
gradlew.bat-d assembleDebug
手动构建。环境变量也会影响这一点,但我没有发现詹金斯错误的搜索路径和答案/评论之间有任何关系。为什么我需要手动运行
gradlew.bat-d assembleDebug
,而Jenkins的Build/Tasks部分已经设置了
assembleDebug
?我已经在build server上正确安装了SDK和Jenkins配置。@blackkara,因为您不会得到任何类似的调试输出,并且可能会一直猜测这里出了什么问题。甚至在另一个位置安装新的SDK也值得一试。这个问题缺少太多的信息来提供一个直接的答案-没有
设置。提供了gradle
,而且环境变量未知。这甚至似乎不是默认的Gradle输出,而是它上面的一些混合框架。@blackkara嗯,SDK/NDK位置确实是在
local.properties
中定义的。当右键单击“我的电脑”
属性”
高级系统设置”
环境变量…
时,可以在Windows上设置这些环境变量(其中可以为每个用户以及整个系统定义它们)。例如,当以用户Jenkins的身份运行Jenkins时(通常是这样),可以为该用户设置所有其他变量(除了可以在GUI中设置的变量)。只知道它会抓到他们,所以他们可能会干涉。