You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置sdkmanager使其适配企业代理的认证与证书设置?

解决sdkmanager代理不生效及repositories.cfg加载失败问题

嘿,我来帮你搞定这两个头疼的问题!咱们一步步来:

1. 消除repositories.cfg加载失败的警告

这个警告其实没啥实际影响,但看着闹心对吧?直接手动创建这个空文件就能解决:

touch /home/users/n.gendron/.android/repositories.cfg

运行完这条命令,下次再用sdkmanager就不会弹出这个烦人的警告了。

2. 让sdkmanager乖乖遵循企业代理配置

企业代理带认证和签名证书的场景下,sdkmanager经常不读全局配置,得针对性处理:

方法一:直接给sdkmanager命令加代理参数(临时生效)

每次运行sdkmanager时,把代理信息作为参数直接传入,最直接有效:

sdkmanager --proxy=http --proxy_host=你的代理IP或域名 --proxy_port=代理端口 --proxy_user=你的企业账号 --proxy_pass=你的密码 "你要安装的SDK包名"

如果你的代理是HTTPS协议,把--proxy=http改成--proxy=https就行。

方法二:配置全局Gradle代理(让sdkmanager继承配置)

如果你平时用Android Studio或Gradle,可以把代理信息写到~/.gradle/gradle.properties里,sdkmanager通常会读取这个全局配置:

# HTTP代理配置
systemProp.http.proxyHost=你的代理地址
systemProp.http.proxyPort=代理端口
systemProp.http.proxyUser=你的企业用户名
systemProp.http.proxyPassword=你的企业密码
systemProp.http.nonProxyHosts=localhost|127.0.0.1|*.yourcompany.com

# HTTPS代理配置
systemProp.https.proxyHost=你的代理地址
systemProp.https.proxyPort=代理端口
systemProp.https.proxyUser=你的企业用户名
systemProp.https.proxyPassword=你的企业密码
systemProp.https.nonProxyHosts=localhost|127.0.0.1|*.yourcompany.com

保存后重启终端再试sdkmanager,大概率能生效。

方法三:导入企业代理证书到Java信任存储

因为你的代理会给所有连接签名,sdkmanager(基于Java开发)可能不信任这个证书,所以得把企业根证书导入到SDK自带的Java信任库:

  1. 找到Android SDK里的cacerts路径,一般是:
    $ANDROID_SDK_ROOT/cmdline-tools/latest/lib/jre/lib/security/cacerts
    
    如果你不知道$ANDROID_SDK_ROOT,可以用echo $ANDROID_SDK_ROOT查看,或者手动定位到你的SDK安装目录。
  2. 运行导入命令(默认cacerts密码是changeit):
    keytool -importcert -file /path/to/你的企业根证书.crt -keystore /path/to/上面找到的cacerts文件 -alias "企业代理证书"
    
    输入密码后按提示确认导入即可。

方法四:用环境变量强制代理

运行sdkmanager前先导出代理环境变量,适合临时测试场景:

export HTTP_PROXY=http://你的用户名:你的密码@代理地址:端口
export HTTPS_PROXY=http://你的用户名:你的密码@代理地址:端口
export NO_PROXY=localhost,127.0.0.1,*.yourcompany.com

# 然后运行sdkmanager
sdkmanager "要安装的包名"

注意:如果用户名或密码里有特殊字符(比如@、:),需要URL编码,比如@换成%40,:换成%3A

内容的提问来源于stack exchange,提问作者Nato Boram

火山引擎 最新活动