Android Studio+KMM环境下NEGOTIATE认证错误求助
针对你遇到的NEGOTIATE authentication error: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)错误,以下是具体解决思路:
检查Kerberos TGT票据有效性
打开终端/命令提示符,执行kinit your-domain-username@YOUR-DOMAIN.COM(替换成你的域账号和域名),输入域密码后用klist命令查看是否生成有效票据。如果获取失败,需联系域管理员确认账号权限或域服务状态,同时确保当前登录系统的是域账号而非本地账号。配置Android Studio的Kerberos VM参数
找到Android Studio的VM配置文件:- Windows:安装目录下
bin/studio64.exe.vmoptions - Mac:右键点击Android Studio图标→显示包内容→
Contents/bin/studio.vmoptions
添加以下配置行:
-Djava.security.krb5.conf=C:\Windows\krb5.ini # Windows系统用此路径;Mac/Linux替换为/etc/krb5.conf -Djavax.security.auth.useSubjectCredsOnly=false保存后重启Android Studio。
- Windows:安装目录下
完善系统与IDE的代理配置
除了IDE内的Proxy设置,检查系统环境变量是否配置了HTTP_PROXY和HTTPS_PROXY,格式应为http://domain\username:password@proxy-server:port。若密码包含特殊字符(如@、#),需进行URL编码(例如@→%40,#→%23)。配置Gradle的代理参数
KMM依赖Gradle构建,需在全局或项目的gradle.properties中添加代理配置:systemProp.http.proxyHost=你的代理服务器地址 systemProp.http.proxyPort=代理端口 systemProp.http.proxyUser=domain\\你的域账号 # Windows下反斜杠需转义,Mac/Linux用单斜杠 systemProp.http.proxyPassword=你的域密码 systemProp.https.proxyHost=你的代理服务器地址 systemProp.https.proxyPort=代理端口 systemProp.https.proxyUser=domain\\你的域账号 systemProp.https.proxyPassword=你的域密码密码含特殊字符时同样要URL编码,配置后同步Gradle项目。
确认代理服务器的Kerberos支持
联系网络管理员,确认代理服务器是否启用了NEGOTIATE/Kerberos认证机制,且你的域账号被授权通过该代理访问外部资源(如Maven仓库、JetBrains插件仓库等)。
内容的提问来源于stack exchange,提问作者MisterAnt

