是否可以将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.
任何帮助将不胜感激...
答案 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以/