如何配置 Androids sdkmanager 命令行工具以使用自定义存储库?

Jak*_*sen 5 android android-sdk-tools android-studio

是否可以将 Google 的 Android sdkmanager 配置为通过自定义存储库而不是 下载依赖项dl.google.com/android/repository

背景:

我正在公司防火墙后面设置一个 Android 构建代理,无法直接访问 Internet。我可以访问 LAN 上的存储库服务器,该服务器充当预配置远程存储库的镜像。

我已经从这里下载了 SDK 工具 https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

在可以访问 Internet 的机器上,我尝试这样配置~/.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
Run Code Online (Sandbox Code Playgroud)

如果我在 Android Studio 中设置自定义 SDK 更新站点,我会得到哪种配置。

此处下载的 xml 文件与 Android Studio 配置的完全相同 - 我在运行 sdkmanager 命令行工具时使用 Charles Proxy 观察到的文件也是如此。

它适用于 Android Studio 中的默认“Android 存储库”配置,但我的自定义配置在 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. 
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激...

Jon*_*kis 5

查看sdkmanager 的源代码- 似乎有另一种覆盖存储库的方法 - 通过SDK_TEST_BASE_URL环境变量:

为了进行测试,可以设置环境变量来替换默认的根下载 URL。

它必须以 / 结尾,并且是更新程序查找repository.xml、addons_list.xml 和此类文件的位置。

因此,你可以这样做:

SDK_TEST_BASE_URL=https://your.company/artifactory/android/ sdkmanager "platform-tools"
Run Code Online (Sandbox Code Playgroud)

上面的示例将尝试platform-tools使用提供的存储库 URL 安装包。只需确保 URL 以/