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

更新后Flutter的Android许可证验证失败,求解决方案

解决Android许可证验证失败与javax/xml/bind/annotation/XmlSchema缺失问题

嘿,我立刻就发现你问题的核心了——你当前用的是OpenJDK 11,而Android SDK的sdkmanager以及flutter doctor --android-licenses命令依赖的javax.xml.bind模块在Java 9及以上版本里被移除了!这就是为什么你之前尝试的重装SDK、替换工具文件夹这些操作都没起效,根本问题出在Java版本的兼容性上。

下面给你几个可行的解决方案,按推荐程度排序:

方案一:切换到Java 8(最稳定靠谱的选择)

Android SDK工具对Java 8的兼容性是最完善的,步骤很简单:

  • 下载并安装AdoptOpenJDK 8(或者Oracle JDK 8,选你顺手的就行)
  • 配置系统环境变量:
    • 把Java 8安装目录下的bin路径放到系统PATH的最顶端,确保系统优先调用Java 8
    • 设置JAVA_HOME环境变量指向Java 8的安装根目录
  • 验证:新开一个终端窗口,执行java --version,确认输出的是Java 8的版本信息
  • 最后重新执行flutter doctor --android-licenses,跟着提示输入y接受所有许可证就行

方案二:给命令添加Java模块参数(不用切换Java版本)

如果你不想换掉当前的Java 11,可以在执行命令时手动补上缺失的模块:

  • 直接在终端执行sdkmanager命令时加上参数:
    sdkmanager --licenses --add-modules java.xml.bind
    
  • 或者针对flutter命令,给它加上JVM参数:
    flutter doctor --android-licenses -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/ext
    
    (Windows系统把$JAVA_HOME换成你的Java 11实际安装路径,比如C:\Program Files\AdoptOpenJDK\jdk-11.0.7.10-hotspot

方案三:通过Android Studio配置Java版本

如果你平时用Android Studio开发,可以直接在IDE里配置:

  • 打开Android Studio,依次点File > Project Structure > SDK Location
  • JDK location那里选择Java 8的安装目录
  • 重启Android Studio,然后用IDE内置的终端执行flutter doctor --android-licenses

完成以上任意一种方案后,再跑一遍flutter doctor,就能看到Android license status unknown的错误消失啦!

内容的提问来源于stack exchange,提问作者Anne Almeida

火山引擎 最新活动