You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter项目运行时出现javax.net.ssl.SSLException: Tag mismatch错误求助

Flutter项目运行时SSL Tag mismatch错误排查与解决

错误日志

Exception in thread "main" javax.net.ssl.SSLException: Tag mismatch!
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:371)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:314)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:309)
    at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:123)
    at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1513)
    at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1484)
    at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1069)
    at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:282)
    at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:343)
    at java.base/sun.net.www.MeteredStream.read(MeteredStream.java:141)
    at java.base/java.io.FilterInputStream.read(FilterInputStream.java:132)
    at java.base/sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3678)
    at java.base/sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3671)
    at org.gradle.wrapper.Download.downloadInternal(Download.java:62)
    at org.gradle.wrapper.Download.download(Download.java:44)
    at org.gradle.wrapper.Install$1.call(Install.java:61)
    at org.gradle.wrapper.Install$1.call(Install.java:48)
    at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
    at org.gradle.wrapper.Install.createDist(Install.java:48)
    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Caused by: javax.crypto.AEADBadTagException: Tag mismatch!
    at java.base/com.sun.crypto.provider.GaloisCounterMode$GCMDecrypt.doFinal(GaloisCounterMode.java:1486)
    at java.base/com.sun.crypto.provider.GaloisCounterMode.engineDoFinal(GaloisCounterMode.java:447)
    at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2500)
    at java.base/sun.security.ssl.SSLCipher$T12GcmReadCipherGenerator$GcmReadCipher.decrypt(SSLCipher.java:1659)
    at java.base/sun.security.ssl.SSLSocketInputRecord.decodeInputRecord(SSLSocketInputRecord.java:264)
    at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:181)
    at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
    ... 17 more
Exception: Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

环境检测结果(flutter doctor -v)

[√] Flutter (Channel stable, 2.8.0, on Microsoft Windows [Version 10.0.19045.2846], locale
    es-419)
    • Flutter version 2.8.0 at C:\src\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision cf44000065 (1 year, 5 months ago), 2021-12-08 14:06:50 -0800     
    • Engine revision 40a99c5951
    • Dart version 2.15.0

[√] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at C:\Users\RUFDev\AppData\Local\Android\sdk
    • Platform android-33-ext5, build-tools 33.0.2
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java      
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 2022.2)
    • Android Studio at C:\Program Files\Android\Android Studio      
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694)

[√] VS Code (version 1.77.3)
    • VS Code at C:\Users\RUFDev\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.62.0

[√] Connected device (3 available)
    • sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64    • Android 12 (API 31)        
      (emulator)
    • Chrome (web)                 • chrome        • web-javascript • Google Chrome
      112.0.5615.138
    • Edge (web)                   • edge          • web-javascript • Microsoft Edge
      112.0.1722.58

• No issues found!

项目依赖配置(pubspec.yaml)

version: 1.0.0+1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  cloud_firestore: ^3.1.7
  flutter_localizations:
    sdk: flutter
  cupertino_icons: ^1.0.0
  enum_to_string: ^1.0.14
  firebase_auth: ^1.1.2
  firebase_core: ^1.1.0
  firebase_storage: ^8.0.2
  firebase_messaging: ^11.2.6
  firebase_crashlytics: ^2.5.1
  flutter_rating_bar: ^3.2.0+1
  flutter_svg: ^0.22.0
  flutter_image_compress: ^1.1.0
  flutter_camera_overlay: ^0.1.1
  flutter_local_notifications: ^9.4.0
  future_progress_dialog: ^0.1.1
  image_picker: ^0.7.4
  intl: ^0.17.0
  logger: ^1.1.0
  permission_handler: ^8.3.0
  provider: ^6.0.2
  string_validator: ^0.1.4
  uuid: ^3.0.5
  shared_preferences: ^2.0.13
  geolocator: ^8.1.1
  square_percent_indicater: ^0.1.0
  internet_connection_checker: ^0.0.1+3
  cached_network_image: ^3.2.0
  sn_progress_dialog: ^1.0.3
  lottie: ^1.2.2
  camera: ^0.9.4+16
  image_cropper: ^1.5.0
  shimmer: ^2.0.0
  google_sign_in: ^5.2.4
  badges: ^2.0.2
  flutter_sound: ^9.2.10
  path_provider: ^2.0.9
  url_launcher: ^6.1.0
  fancy_shimmer_image: ^2.0.2
  in_app_review: ^2.0.4
  twilio_flutter: ^0.0.9
  record_mp3: ^3.0.0
  
dev_dependencies:
  flutter_launcher_icons: ^0.9.2
  flutter_native_splash: ^1.1.8+4
  flutter_test:
    sdk: flutter

已尝试操作

  • 切换不同Flutter版本,因依赖变更需大量修改代码,退回Flutter 2.8.0
  • 安装Azul Java 8/11/15/17多个版本
  • 测试Android 11/12模拟器
  • 尝试依赖覆盖,但不清楚具体操作

解决建议

1. 清除Gradle缓存

  • 删除本地Gradle缓存目录:C:\Users\<你的用户名>\.gradle\caches
  • 执行命令:flutter clean → flutter pub get

2. 临时切换Gradle下载为HTTP

修改项目gradle/wrapper/gradle-wrapper.properties中的distributionUrl:

distributionUrl=http\://services.gradle.org/distributions/gradle-7.3.3-all.zip

注意:生产环境建议改回HTTPS

3. 指定Java版本适配

在项目android/build.gradle中添加如下配置,强制使用Java 8:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

同时在Android Studio的Project Structure中,将JDK路径设置为Java 8的安装目录。

4. 覆盖冲突依赖

先执行flutter pub deps查看依赖树,找出冲突的依赖版本,然后在android/build.gradle中添加强制覆盖:

configurations.all {
    resolutionStrategy {
        force 'com.google.firebase:firebase-auth:21.0.1'
        force 'com.google.firebase:firebase-firestore:24.0.1'
        // 根据实际冲突情况调整版本号
    }
}

5. 检查网络代理

若使用代理,可能导致SSL握手异常:

  • 关闭代理后重新构建
  • 如需保留代理,在gradle.properties中添加代理配置:
systemProp.http.proxyHost=你的代理地址
systemProp.http.proxyPort=你的代理端口
systemProp.https.proxyHost=你的代理地址
systemProp.https.proxyPort=你的代理端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:37:01