Как настроить инструмент командной строки Android sdkmanager для использования собственного репозитория? - PullRequest
0 голосов
/ 04 декабря 2018

Можно ли настроить Android sdkmanager от Google для загрузки зависимостей через пользовательский репозиторий вместо dl.google.com/android/repository?

Фон:

Я настраиваюАгент сборки Android за корпоративным брандмауэром без прямого доступа в Интернет.Я могу получить доступ к серверу репозитория в локальной сети, который служит зеркалом для предварительно настроенных удаленных репозиториев.

Я скачал инструменты SDK отсюда https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

На машине с доступом в Интернет яЯ пытался настроить ~/.android/repositories.cfg следующим образом:

### User Sources for Android Repository
#Fri Nov 30 12:36:38 CET 2018
enabled00=true
count=1
disp00=DB Artifactory
src00=https://dl.google.com/android/repository/repository2-1.xml

Какую конфигурацию я получу, если настрою собственный сайт обновления SDK в Android Studio.

Файл xml, загруженный здесьэто точно так же, как настроено в Android Studio - и то же самое, что я наблюдаю с Charles Proxy при запуске инструмента командной строки sdkmanager.

Это прекрасно работает для конфигурации по умолчанию «Репозиторий Android» в Android Studio,но моя пользовательская конфигурация не работает как в Android Studio, так и из командной строки.

Я вижу эту ошибку:

Step 25/34 : RUN yes | sdkmanager --licenses --proxy=http -- 
proxy_host=host.docker.internal --proxy_port=3128
 ---> Running in 8d8923c76ba7
Picked up _JAVA_OPTIONS: -XX:+UnlockExperimentalVMOptions - 
XX:+UseCGroupMemoryLimitForHeap
Warning: Errors during XML parse:       ] 42% Downloading sys-img.xml... Parse X
Warning: cvc-elt.1: Cannot find the declaration of element 'sdk:sdk-repository'.
,,Warning: org.xml.sax.SAXParseException; lineNumber: 17; columnNumber: 139; cvc-elt.1: Cannot find the declaration of element 'sdk:sdk-repository'.
Warning: javax.xml.bind.UnmarshalException - with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 17; columnNumber: 139; cvc-elt.1: Cannot find the declaration of element 'sdk:sdk-repository'.]
Warning: Additionally, the fallback loader failed to parse the XML. 

Любая помощь будет высоко ценится ...

1 Ответ

0 голосов
/ 10 февраля 2019

Глядя на исходный код sdkmanager - кажется, существует альтернативный метод переопределения хранилища - через переменную окружения SDK_TEST_BASE_URL:

Для тестирования env varможно установить для замены корневого URL-адреса загрузки по умолчанию.

Он должен заканчиваться символом / и местом, где программа обновления будет искать repository.xml, addons_list.xml и такие файлы.

Таким образом, вы можете сделать что-то вродеthis:

SDK_TEST_BASE_URL=https://your.company/artifactory/android/ sdkmanager "platform-tools"

В приведенном выше примере будет предпринята попытка установить пакет platform-tools с использованием предоставленного URL-адреса хранилища.Просто убедитесь, что URL заканчивается /

...