【问题标题】:How do I configure Androids sdkmanager command line tool to use custom repository?如何配置 Androids sdkmanager 命令行工具以使用自定义存储库?
【发布时间】:2018-12-04 10:04:16
【问题描述】:

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

背景:

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

我已经从这里下载了 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

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

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

它适用于 Android Studio 中的默认“Android Repository”配置,但我的自定义配置在 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. 

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

【问题讨论】:

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


【解决方案1】:

查看sdkmanager's source code - 似乎有另一种覆盖存储库的方法 - 通过SDK_TEST_BASE_URL 环境变量:

为了测试,可以设置 env var 来替换默认的 root 下载网址。

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

因此,您可以这样做:

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

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

【讨论】:

  • 感谢您的回答 - 不幸的是,我们放弃了人工解决方案,因此无法验证:/
  • 我可以验证这行得通。然而,依赖它的可靠性尚不清楚,因为它是一个内部测试变量,可能会在未来的版本中更改或删除。
  • 我们如何将凭据传递给自定义工件?会不会是:SDK_TEST_BASE_URL=https://user:password@your.company/artifactory/android/ sdkmanager "platform-tools"
  • @SagarMody 是的,这应该可以工作,因为您的服务器支持基本身份验证。
猜你喜欢
  • 1970-01-01
  • 2018-02-27
  • 2018-02-06
  • 2012-10-26
  • 2020-07-15
  • 1970-01-01
  • 2013-11-04
  • 2013-09-08
  • 2018-08-15
相关资源
最近更新 更多