You need to enable JavaScript to run this app. Android集成MSAL出现Username must not be null报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Android集成MSAL出现Username must not be null报错如何解决

问题原因

你引入MSAL依赖时同步添加了微软Azure DevOps的私有Maven仓库,且该仓库在你的仓库列表中优先级高于你拉取com.cerence系列依赖的私有仓库/公开仓库,Gradle会按顺序尝试从所有仓库拉取依赖,在访问这个需要身份验证的微软私有仓库时,你没有配置对应凭证,就触发了Username must not be null报错。
移除MSAL依赖时同步移除了对应的私有仓库配置,因此项目可以正常运行。

解决方法

按优先级从高到低选择以下方案即可:

  • 方案1:移除不需要的微软私有仓库配置
    2.0+正式版的MSAL已经全量发布到Maven Central,你不需要额外添加https://identitydivision.pkgs.visualstudio.com/_packaging/AndroidADAL/maven/v1这个私有仓库。直接在根目录build.gradle(或新版Android Studio的settings.gradle)的仓库配置中删除该条目,重新同步Gradle即可正常拉取所有依赖。
  • 方案2:调整仓库优先级
    如果你确实需要保留该私有仓库,将你存放com.cerence依赖的仓库、mavenCentral()、google()的顺序调整到微软私有仓库之前,这样Gradle会优先从前面的仓库拉取com.cerence依赖,不会触发微软私有仓库的验证逻辑。
    参考配置示例:
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            // 优先放你的cerence私有仓库
            maven { url "你的cerence私有仓库地址" }
            google()
            mavenCentral()
            // 微软私有仓库放在最后
            maven {
                url 'https://identitydivision.pkgs.visualstudio.com/_packaging/AndroidADAL/maven/v1'
            }
        }
    }
    
  • 方案3:配置私有仓库凭证
    如果你需要使用该微软私有仓库中的预发布/特殊版本MSAL,可以为仓库配置身份凭证:
    1. 访问Azure DevOps生成对应权限的个人访问令牌
    2. 修改仓库配置,添加凭证信息:
    maven {
        url 'https://identitydivision.pkgs.visualstudio.com/_packaging/AndroidADAL/maven/v1'
        credentials {
            username = "你的Azure DevOps账户名"
            password = "你生成的访问令牌"
        }
    }
    

内容的提问来源于stack exchange,提问作者Harsh Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:45:02