将许可协议从我的工作站传输到 Azure Pipeline 代理

Transfer the license agreements from my workstation to Azure Pipeline agent

我正在使用 Azure Pipeline 以便在我的 Android 项目上执行 CI。从昨天开始,CI 无法构建应用程序并显示以下消息:

Failed to install the following Android SDK packages as some licences have not been accepted. build-tools;28.0.3 Android SDK Build-Tools 28.0.3 To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager. Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html

因为代理由 Microsoft 直接管理(托管 VS2017 代理),我无法运行 手动输入命令行来接受丢失的许可证。

根据 gradle 的建议,我尝试创建一个任务,以便将许可证从我的工作站复制到 Azure Pipeline。

步骤如下:

这是 azure 管道中任务的屏幕截图:

根据日志,此文件的副本似乎已正确完成:

[section]Starting: Copy Files to: C:\Program Files (x86)\Android\android-sdk\licenses\ ============================================================================== Task : Copy Files Description : Copy files from source folder to target folder using match patterns (The match patterns will only match file paths, not folder paths) Version : 2.117.2 Author
: Microsoft Corporation Help : More Information ============================================================================== found 6 files Cleaning target folder: C:\Program Files (x86)\Android\android-sdk\licenses\ Copying D:\a\s\licenses\android-googletv-license to C:\Program Files (x86)\Android\android-sdk\licenses\android-googletv-license Copying D:\a\s\licenses\android-sdk-license to C:\Program Files (x86)\Android\android-sdk\licenses\android-sdk-license Copying D:\a\s\licenses\android-sdk-preview-license to C:\Program Files (x86)\Android\android-sdk\licenses\android-sdk-preview-license Copying D:\a\s\licenses\google-gdk-license to C:\Program Files (x86)\Android\android-sdk\licenses\google-gdk-license Copying D:\a\s\licenses\intel-android-extra-license to C:\Program Files (x86)\Android\android-sdk\licenses\intel-android-extra-license Copying D:\a\s\licenses\mips-android-sysimage-license to C:\Program Files (x86)\Android\android-sdk\licenses\mips-android-sysimage-license [section]Finishing: Copy Files to: C:\Program Files (x86)\Android\android-sdk\licenses\

但问题依然存在。请注意,此复制任务在 gradle 之前完成。

有解决问题的想法吗?

抱歉给您带来麻烦,@rolandl。 Android SDK 许可中的一些内容在 Windows 上发生了变化。我们有一个长期修复,但这里有一个解决方法,直到修复到达所有生产环境:

  1. PowerShell 步骤添加到管道的最开始。将内联 PowerShell 脚本设置为以下内容,它会更新 VS2017 虚拟机上的 Android 个许可证:

    获取 ChildItem -路径 'C:\Program Files (x86)\Android\android-sdk\licenses' | Remove-Item -Recurse -Confirm:$false -强制

    目录 'C:\Program Files (x86)\Android\android-sdk\licenses'

    $base64Content = "UEsDBBQAAAAAAKJeN06amkPzKgAAACoAAAAhAAAAbGljZW5zZXMvYW5kcm9pZC1nb29nbGV0di1saWNlbnNlDQpmYzk0NmU4ZjIzMWYzZTMxNTliZjBiN2M2NTVjOTI0Y2IyZTM4MzMwUEsDBBQAAAAIAKBrN05E+YSqQwAAAFQAAAAcAAAAbGljZW5zZXMvYW5kcm9pZC1zZGstbGljZW5zZQXByREAIQgEwP9WmYsjhxgOKJN/CNs9vmdOQ2zdRw2dxQnWjqQ/3oIgXQM9vqUiwkiX8ljWea4ZlCF3xTo1pz6w+wdQSwMEFAAAAAAAxV43TpECY7AqAAAAKgAAACQAAABsaWNlbnNlcy9hbmRyb2lkLXNkay1wcmV2aWV3LWxpY2Vuc2UNCjUwNDY2N2Y0YzBkZTdhZjFhMDZkZTlmNGIxNzI3Yjg0MzUxZjI5MTBQSwMEFAAAAAAAzF43TpOr0CgqAAAAKgAAABsAAABsaWNlbnNlcy9nb29nbGUtZ2RrLWxpY2Vuc2UNCjMzYjZhMmI2NDYwN2YxMWI3NTlmMzIwZWY5ZGZmNGFlNWM0N2Q5N2FQSwMEFAAAAAAAz143TqxN4xEqAAAAKgAAACQAAABsaWNlbnNlcy9pbnRlbC1hbmRyb2lkLWV4dHJhLWxpY2Vuc2UNCmQ5NzVmNzUxNjk4YTc3YjY2MmYxMjU0ZGRiZWVkMzkwMWU5NzZmNWFQSwMEFAAAAAAA0l43Tu2ee/8qAAAAKgAAACYAAABsaWNlbnNlcy9taXBzLWFuZHJvaWQtc3lzaW1hZ2UtbGljZW5zZQ0KNjNkNzAzZjU2OTJmZDg5MWQ1YWNhY2ZiZDhlMDlmNDBmYzk3NjEwNVBLAQIUABQAAAAAAKJeN06amkPzKgAAACoAAAAhAAAAAAAAAAEAIAAAAAAAAABsaWNlbnNlcy9hbmRyb2lkLWdvb2dsZXR2LWxpY2Vuc2VQSwECFAAUAAAACACgazdORPmEqkMAAABUAAAAHAAAAAAAAAABACAAAABpAAAAbGljZW5zZXMvYW5kcm9pZC1zZGstbGljZW5zZVBLAQIUABQAAAAAAMVeN06RAmOwKgAAACoAAAAkAAAAAAAAAAEAIAAAAOYAAABsaWNlbnNlcy9hbmRyb2lkLXNkay1wcmV2aWV3LWxpY2Vuc2VQSwECFAAUAAAAAADMXjdOk6vQKCoAAAAqAAAAGwAAAAAAAAABACAAAABSAQAAbGljZW5zZXMvZ29vZ2xlLWdkay1saWNlbnNlUEsBAhQAFAAAAAAAz143TqxN4xEqAAAAKgAAACQAAAAAAAAAAQAgAAAAtQEAAGxpY2Vuc2VzL2ludGVsLWFuZHJvaWQtZXh0cmEtbGljZW5zZVBLAQIUABQAAAAAANJeN07tnnv/KgAAACoAAAAmAAAAAAAAAAEAIAAAACECAABsaWNlbnNlcy9taXBzLWFuZHJvaWQtc3lzaW1hZ2UtbGljZW5zZVBLBQYAAAAABgAGANoBAACPAgAAAAA="

    $content = [System.Convert]::FromBase64String($base64Content)

    Set-Content -Path .\android-sdk-licenses.zip -Value $content -Encoding Byte

    Expand-Archive -Path .\android-sdk-licenses.zip -DestinationPath 'C:\Program Files (x86)\Android\android-sdk' -Force

    目录 'C:\Program Files (x86)\Android\android-sdk\licenses'

  2. 验证 PowerShell 步骤是否在构建开始时运行并且构建的其余部分再次成功。