我正在使用Azure Pipeline以便在我的Android项目上执行CI。从昨天开始,配置项未能通过以下消息构建应用程序:
由于某些许可证尚未接受,因此无法安装以下Android SDK软件包。 build-tools; 28.0.3 Android SDK Build-Tools 28.0.3 要构建此项目,请接受SDK许可协议并使用Android Studio SDK Manager安装缺少的组件。 或者,要将许可协议从一个工作站转移到另一个工作站,请参阅http://d.android.com/r/studio-ui/export-licenses.html
由于该代理由Microsoft(托管的VS2017代理)直接管理,因此我无法手动运行命令行以接受缺少的许可证。
按照gradle的建议,我试图创建一个任务,以便将许可证从我的工作站复制到Azure Pipeline。
这里是步骤:
以下是天蓝色管道中任务的屏幕截图:
根据日志,似乎已正确完成此文件的副本:
[节]开始:将文件复制到:C:\ Program Files(x86)\ Android \ android-sdk \ licenses \ ================================================== ===========================任务:复制文件说明:从源文件夹复制文件 使用匹配模式定位到目标文件夹(匹配模式只会 匹配文件路径,而不是文件夹路径)版本:2.117.2作者
:Microsoft Corporation帮助:More Information ================================================== ============================找到6个文件清理目标文件夹:C:\ Program Files (x86)\ Android \ android-sdk \ licenses \复制 D:\ a \ 1 \ s \ licenses \ android-googletv-license到C:\ Program Files (x86)\ Android \ android-sdk \ licenses \ android-googletv-license复制 D:\ a \ 1 \ s \ licenses \ android-sdk-license到C:\ Program Files (x86)\ Android \ android-sdk \ licenses \ android-sdk-license复制 D:\ a \ 1 \ s \ licenses \ android-sdk-preview-license到C:\ Program Files (x86)\ Android \ android-sdk \ licenses \ android-sdk-preview-license复制 D:\ a \ 1 \ s \ licenses \ google-gdk-license到C:\ Program Files (x86)\ Android \ android-sdk \ licenses \ google-gdk-license复制 D:\ a \ 1 \ s \ licenses \ intel-android-extra-license到C:\ Program Files (x86)\ Android \ android-sdk \ licenses \ intel-android-extra-license复制 D:\ a \ 1 \ s \ licenses \ mips-android-sysimage-license到C:\ Program Files (x86)\ Android \ android-sdk \ licenses \ mips-android-sysimage-license [部分]完成:将文件复制到:C:\ Program Files(x86)\ Android \ android-sdk \ licenses \
但是问题仍然存在。请注意,此复制任务在gradle之前完成。
您想解决此问题的任何想法吗?
答案 0 :(得分:2)
对不起,@ rolandl。 Windows上的Android SDK许可中的某些内容已更改。我们有一个较长期的修复程序,但是在解决方案投入生产之前,这里有一个解决方法:
在管道的开始处添加一个PowerShell步骤。将内联PowerShell脚本设置为以下脚本,以更新VS2017虚拟机上的Android许可证:
Get-ChildItem -path'C:\ Program Files(x86)\ Android \ android-sdk \ licenses'| Remove-Item -Recurse -Confirm:$ false -Force
dir'C:\ Program Files(x86)\ Android \ android-sdk \ licenses'
$ base64Content =“UEsDBBQAAAAAAKJeN06amkPzKgAAACoAAAAhAAAAbGljZW5zZXMvYW5kcm9pZC1nb29nbGV0di1saWNlbnNlDQpmYzk0NmU4ZjIzMWYzZTMxNTliZjBiN2M2NTVjOTI0Y2IyZTM4MzMwUEsDBBQAAAAIAKBrN05E + YSqQwAAAFQAAAAcAAAAbGljZW5zZXMvYW5kcm9pZC1zZGstbGljZW5zZQXByREAIQgEwP9WmYsjhxgOKJN / CNs9vmdOQ2zdRw2dxQnWjqQ / 3oIgXQM9vqUiwkiX8ljWea4ZlCF3xTo1pz6w + wdQSwMEFAAAAAAAxV43TpECY7AqAAAAKgAAACQAAABsaWNlbnNlcy9hbmRyb2lkLXNkay1wcmV2aWV3LWxpY2Vuc2UNCjUwNDY2N2Y0YzBkZTdhZjFhMDZkZTlmNGIxNzI3Yjg0MzUxZjI5MTBQSwMEFAAAAAAAzF43TpOr0CgqAAAAKgAAABsAAABsaWNlbnNlcy9nb29nbGUtZ2RrLWxpY2Vuc2UNCjMzYjZhMmI2NDYwN2YxMWI3NTlmMzIwZWY5ZGZmNGFlNWM0N2Q5N2FQSwMEFAAAAAAAz143TqxN4xEqAAAAKgAAACQAAABsaWNlbnNlcy9pbnRlbC1hbmRyb2lkLWV4dHJhLWxpY2Vuc2UNCmQ5NzVmNzUxNjk4YTc3YjY2MmYxMjU0ZGRiZWVkMzkwMWU5NzZmNWFQSwMEFAAAAAAA0l43Tu2ee / 8qAAAAKgAAACYAAABsaWNlbnNlcy9taXBzLWFuZHJvaWQtc3lzaW1hZ2UtbGljZW5zZQ0KNjNkNzAzZjU2OTJmZDg5MWQ1YWNhY2ZiZDhlMDlmNDBmYzk3NjEwNVBLAQIUABQAAAAAAKJeN06amkPzKgAAACoAAAAhAAAAAAAAAAEAIAAAAAAAAABsaWNlbnNlcy9hbmRyb2lkLWdvb2dsZXR2LWxpY2Vuc2V QSwECFAAUAAAACACgazdORPmEqkMAAABUAAAAHAAAAAAAAAABACAAAABpAAAAbGljZW5zZXMvYW5kcm9pZC1zZGstbGljZW5zZVBLAQIUABQAAAAAAMVeN06RAmOwKgAAACoAAAAkAAAAAAAAAAEAIAAAAOYAAABsaWNlbnNlcy9hbmRyb2lkLXNkay1wcmV2aWV3LWxpY2Vuc2VQSwECFAAUAAAAAADMXjdOk6vQKCoAAAAqAAAAGwAAAAAAAAABACAAAABSAQAAbGljZW5zZXMvZ29vZ2xlLWdkay1saWNlbnNlUEsBAhQAFAAAAAAAz143TqxN4xEqAAAAKgAAACQAAAAAAAAAAQAgAAAAtQEAAGxpY2Vuc2VzL2ludGVsLWFuZHJvaWQtZXh0cmEtbGljZW5zZVBLAQIUABQAAAAAANJeN07tnnv / 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
dir'C:\ Program Files(x86)\ Android \ android-sdk \ licenses'
验证PowerShell步骤在构建开始时运行,其余构建再次成功。