android studio 报错Error:Could not determine java version from '9.0.4'.等一系列疑难杂症

本文记录了解决因使用过高版本JDK(9.0.4)导致的Android应用打包失败的过程,最终通过更换为JDK 1.8.0并调整Gradle版本成功完成APK的签名打包。

    事情的开始是签名打包导出一个APK,报错Error:Execution failed for task ':app:compileReleaseJava'. > Cannot find Sys...(不记得是不是这个错误提示了,大意就是没有找到JDK,需要重设JDK路径)

    当时我的默认设置位置没有指向正确的JDK路径,所以报错了。由于我找了半天也没有找到我之前的JDK在哪里,所以我又去重新下了一个最新版本的JDK(9.0.4),请注意这个最新。

    然后我再次尝试导出,报错:Error:Could not determine java version from '9.0.4'.于是查了一下是因为JDK9.0.4的高版本需要4.3以后的Gradle版本,好吧,于是我又下了最新版本的Gradle4.6

      然后再次尝试,继续报错Error:Gradle version 2.2 is required. Current version is 4.6. If using the gradle wrapper, try editing the distributionUrl in /Users//Desktop/gradle/wrapper/gradle-wrapper.properties to gradle-2.2-all.zip...因为Gradle版本与AS的Gradle版本不一致造成的错误,修改Gradle的配置文件(这个网上有很多详细解决)然而对我都没有用...因为改了之后又报错:Could not initialize class com.android.repository.api.RepoManager...好吧,我放弃了。

    我开始思考当初为什么会遭遇这一系列的问题,对了!就是因为那个最新版本的JDK!于是,我去下载了一个1.8.0的JDK(下载地址),下载安装,更改android studio的JDK location(附图),然后Gradle也换回老版本,APK签名打包导出,成功!!

    所以,我为什么要下载最新的JDK?:)



<think>我们正在处理用户的问题:“Flutter doctor Error: Unable to determine engine version solution” 根据引用[1][2][3],用户之前遇到了“Unable to find git in your PATH”的错误,但当前问题变成了“Unable to determine engine version”。 然而,引用中并没有直接提到“Unable to determine engine version”的错误。因此,我们需要根据Flutter的常见问题来推测解决方案。 常见原因: 1. Flutter SDK损坏或不完整。 2. 网络问题导致无法下载引擎版本信息。 3. 环境变量配置问题(如git问题,但用户已经解决git问题)。 4. 缓存问题。 解决方案: 步骤1:检查网络连接,确保可以访问flutter服务器(如storage.googleapis.com)。 步骤2:运行`flutter doctor -v`获取详细日志。 步骤3:尝试清除或重置Flutter环境: - `flutter clean` - `flutter upgrade` (升级Flutter到最新版本) 步骤4:如果升级失败,可以尝试重新安装Flutter SDK。 但是,根据引用[3]中提到的git安全目录问题,我们注意到git对Flutter目录的访问权限也很重要。因此,我们也可以尝试将Flutter目录添加到git的安全目录中(尽管该问题原本是解决git不在PATH的问题,但可能权限问题也会影响引擎版本的获取)。 具体步骤: 1. 打开终端(或命令提示符)。 2. 运行以下命令,将Flutter SDK目录添加到git的安全目录(注意替换路径为你的Flutter SDK实际路径): ``` git config --global --add safe.directory <你的Flutter SDK路径> ``` 例如: ``` git config --global --add safe.directory C:/src/flutter ``` 3. 然后再次运行`flutter doctor`。 如果以上步骤不能解决,可以尝试以下步骤: 步骤5:检查Flutter SDK目录的权限,确保当前用户有读写权限。 步骤6:检查Flutter的缓存和临时文件,可以尝试删除`<Flutter SDK目录>/bin/cache`目录,然后运行`flutter doctor`重新生成缓存。 注意:删除缓存目录是安全的,因为`flutter`命令会自动重新下载必要的文件。 步骤7:如果问题仍然存在,考虑重新克隆Flutter仓库: ``` git clone https://github.com/flutter/flutter.git -b stable ``` 然后更新环境变量PATH指向新的Flutter SDK目录。 由于用户之前已经解决了git不在PATH的问题,所以现在的问题可能是由于Flutter缓存损坏或权限问题导致无法确定引擎版本。 我们按照上述步骤给出解决方案。 注意:由于用户的环境可能不同(Windows/Mac/Linux),需要适当调整路径格式。 如果用户是在Windows上,使用PowerShell,那么命令可能是: ``` git config --global --add safe.directory "C:\src\flutter" ``` 在Mac/Linux上: ``` git config --global --add safe.directory "/path/to/flutter" ``` 最后,如果用户遇到模拟器无法启动的问题(如引用[4]),但当前问题是关于引擎版本的,所以先解决引擎版本问题。 生成相关问题: 1. 如何检查Flutter SDK是否完整? 2. 如何清除Flutter的缓存? 3. 如何重新安装Flutter SDK4. 为什么需要将Flutter目录添加到git的安全目录? 5. 运行`flutter doctor -v`后如何分析日志?</think>### Flutter doctor 报错:Unable to determine engine version 解决方案 当执行 `flutter doctor` 出现 **"Unable to determine engine version"** 错误时,通常是由于 Flutter SDK 完整性受损或环境配置问题导致引擎版本检测失败。以下是逐步解决方案: --- ### **1. 验证 Flutter SDK 完整性** 首先检查 SDK 是否完整: ```bash flutter doctor -v ``` 观察输出中是否包含 `Bad state: Unable to find git in your PATH` 或文件缺失提示。若存在: - **重新克隆 Flutter SDK**(保留现有配置): ```bash cd <原Flutter目录> git clean -xfd git stash git pull flutter doctor ``` --- ### **2. 修复 Git 安全目录配置** Flutter 依赖 Git 获取引擎版本,需确保 SDK 目录被 Git 信任: ```bash git config --global --add safe.directory <你的Flutter SDK绝对路径> ``` 例如: ```bash git config --global --add safe.directory C:/src/flutter ``` --- ### **3. 清除缓存并强制刷新** 删除缓存文件强制重建: ```bash rm -rf <Flutter目录>/bin/cache flutter doctor -v ``` 此时 Flutter 会自动下载所需依赖。 --- ### **4. 检查网络和代理** 确保可访问 Google 服务(引擎信息从 `storage.googleapis.com` 获取): - 测试连接:`curl https://storage.googleapis.com` - 若有代理,配置环境变量: ```bash export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn ``` --- ### **5. 验证环境变量** 确保 `PATH` 包含: - Flutter 的 `bin` 目录(如 `C:\src\flutter\bin`) - Git 的 `bin` 目录(如 `C:\Program Files\Git\bin`) --- ### **6. 重装 Flutter(最后手段)** 若上述步骤无效: 1. 备份 `flutter/.pub-cache` 目录 2. 删除旧 SDK 并重新安装 3. 恢复备份到新 SDK 目录 --- ### **常见原因总结** | 原因 | 解决方案 | |---------------------|----------------------------------| | SDK 文件损坏 | 重新克隆或清除缓存 | | Git 安全目录未配置 | `git config --add safe.directory` | | 网络阻塞 | 检查代理/镜像配置 | | PATH 缺失关键路径 | 添加 Flutter/Git 到环境变量 | > 引用案例:用户通过添加 Git 安全目录解决类似问题[^3],网络问题也可能导致版本检测失败[^1][^2]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值