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

时间:2018-12-04 10:04:17

标签: android android-studio android-sdk-tools

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

背景

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

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

在具有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

如果我在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. 

任何帮助将不胜感激...

1 个答案:

答案 0 :(得分:0)

通过SDK_TEST_BASE_URL环境变量,来看sdkmanager's source code-似乎是替代存储库的另一种方法:

  

对于测试,可以将env var设置为替换默认根   下载网址。

     

它必须以/结尾,并且其位置   更新程序将查找repository.xml,addons_list.xml等   文件。

因此,您可以执行以下操作:

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

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

结尾