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

Flutter引入ssh2 2.2.3包出现compileDebugJavaWithJavac构建错误如何解决?

Flutter ssh2包Android端构建失败解决方案

错误根因

ssh2 1.6以上版本依赖的org.bouncycastle:bcprov-jdk15on:1.69组件使用Java 15编译(类文件主版本59对应Java 15),当前项目Android构建环境的Jetifier工具不支持转换该版本的字节码,导致构建任务失败。

可落地解决方案

  • 方案1:锁定ssh2包版本为1.6.0
    直接在pubspec.yaml中指定兼容的版本号即可,无需修改其他配置:
    dependencies:
      flutter:
        sdk: flutter
      # 固定使用无兼容性问题的1.6.0版本
      ssh2: ^1.6.0
    
    修改完成后执行flutter pub get,重新运行项目即可正常构建。
  • 方案2:升级Android构建环境适配高版本ssh2
    若必须使用ssh2 1.6以上的新特性,可按如下步骤升级构建配置:
    1. 打开android/gradle/wrapper/gradle-wrapper.properties,将Gradle版本升级到7.0及以上,示例配置:
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
    
    1. 打开android/build.gradle,将Android Gradle插件版本升级到对应匹配的7.0及以上:
    buildscript {
      dependencies {
        classpath 'com.android.tools.build:gradle:7.0.4'
      }
    }
    
    1. 打开android/app/build.gradle,指定编译使用的Java版本为11及以上:
    android {
      compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
      }
      kotlinOptions {
        jvmTarget = '11'
      }
    }
    
    1. 执行flutter clean清理旧构建缓存后,重新运行项目即可。
  • 方案3:强制降级bouncycastle依赖版本
    无需修改ssh2版本和Gradle配置,直接在Android构建时强制使用低版本的bouncycastle组件即可:
    打开android/app/build.gradle,在文件末尾添加如下配置:
    configurations.all {
      resolutionStrategy.force 'org.bouncycastle:bcprov-jdk15on:1.68'
    }
    
    同步Gradle配置后重新构建即可解决兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:15:03