Передача лицензионных соглашений с моей рабочей станции агенту Azure Pipeline - PullRequest
0 голосов
/ 23 января 2019

Я использую Azure Pipeline для выполнения CI в моих проектах Android. Со вчерашнего дня CI не удалось создать приложения со следующим сообщением:

Не удалось установить следующие пакеты Android SDK, поскольку некоторые лицензии не были приняты. Инструменты сборки; 28.0.3 Android SDK Инструменты сборки 28.0.3 Чтобы создать этот проект, примите лицензионные соглашения SDK и установите недостающие компоненты с помощью Android Studio SDK Manager. В качестве альтернативы для переноса лицензионных соглашений с одной рабочей станции на другую см. http://d.android.com/r/studio-ui/export-licenses.html

Поскольку агент напрямую управляется Microsoft (агент Hosted VS2017), я не могу запустить командную строку вручную, чтобы принять отсутствующие лицензии.

В соответствии с предложением gradle я попытался создать задачу для копирования лицензий со своей рабочей станции на конвейер Azure.

Вот шаги:

  • Я добавил лицензии из моего дома android-sdk в исходный код приложения для Android
  • Я добавил задачу в конвейер, чтобы скопировать эти файлы лицензий в каталог лицензий рабочей станции конвейера.

Вот скриншот задачи в лазурном конвейере:

enter image description here

Копия этого файла, кажется, сделана правильно в соответствии с журналами:

[раздел] Начиная: копировать файлы в: C: \ Program Files (x86) \ Android \ android-sdk \ licenses \ ================================================== ============================ Задача: Копировать файлы Описание: Копировать файлы из исходной папки в целевую папку с использованием шаблонов соответствия (только шаблоны соответствия сопоставлять пути к файлам, а не к папкам) Версия: 2.117.2 Автор
: Справка корпорации Microsoft: Подробнее Информация ================================================== ============================ найдено 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 \ лицензии \ MIPS-андроида-sysimage-лицензии [раздел] Окончание: Копирование файлов в: C: \ Program Files (x86) \ Android \ android-sdk \ licenses \

Но проблема все еще присутствует. Обратите внимание, что эта задача копирования выполняется до начальной.

Есть идеи, как решить проблему?

1 Ответ

0 голосов
/ 24 января 2019

Извините за беспокойство, @rolandl. Что-то в лицензировании Android SDK изменилось в Windows. У нас есть более долговременное исправление, но здесь есть обходной путь, пока исправление не достигнет всего производства:

  1. Добавьте шаг PowerShell в самое начало вашего конвейера. Установите следующий встроенный сценарий PowerShell, который обновляет лицензии Android на виртуальной машине VS2017:

    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 / 8qAAAAKgAAACYAAABsaWNlbnNlcy9taXBzLWFuZHJvaWQtc3lzaW1hZ2UtbGljZW5zZQ0KNjNkNzAzZjU2OTJmZDg5MWQ1YWNhY2ZiZDhlMDlmNDBmYzk3NjEwNVBLAQIUABQAAAAAAKJeN06amkPzKgAAACoAAAAhAAAAAAAAAAEAIAAAAAAAAABsaWNlbnNlcy9hbmRyb2lkLWdvb2dsZXR2LWxpY2Vu c2VQSwECFAAUAAAACACgazdORPmEqkMAAABUAAAAHAAAAAAAAAABACAAAABpAAAAbGljZW5zZXMvYW5kcm9pZC1zZGstbGljZW5zZVBLAQIUABQAAAAAAMVeN06RAmOwKgAAACoAAAAkAAAAAAAAAAEAIAAAAOYAAABsaWNlbnNlcy9hbmRyb2lkLXNkay1wcmV2aWV3LWxpY2Vuc2VQSwECFAAUAAAAAADMXjdOk6vQKCoAAAAqAAAAGwAAAAAAAAABACAAAABSAQAAbGljZW5zZXMvZ29vZ2xlLWdkay1saWNlbnNlUEsBAhQAFAAAAAAAz143TqxN4xEqAAAAKgAAACQAAAAAAAAAAQAgAAAAtQEAAGxpY2Vuc2VzL2ludGVsLWFuZHJvaWQtZXh0cmEtbGljZW5zZVBLAQIUABQAAAAAANJeN07tnnv / KgAAACoAAAAmAAAAAAAAAAEAIAAAACECAABsaWNlbnNlcy9taXBzLWFuZHJvaWQtc3lzaW1hZ2UtbGljZW5zZVBLBQYAAAAABgAGANoBAACPAgAAAAA = "

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

    Set-Content -Path. \ Android-sdk-licenses.zip -Value $ content -Байт кодирования

    Развернуть-Архив -Path. \ Android-sdk-licenses.zip -DestinationPath 'C: \ Program Files (x86) \ Android \ android-sdk' -Force

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

  2. Убедитесь, что шаг PowerShell выполняется в начале сборки, а остальная часть сборки выполняется снова.

...