Windows下Cordova构建Android项目失败:临时目录不可写入
:app:transformClassesWithDesugarForDebug失败的问题 兄弟,我之前也碰到过类似Desugar临时目录相关的玄学坑,给你几个针对性的解决方案,你挨个试试:
手动指定Desugar的临时目录
Desugar工具默认用系统TEMP目录,但有时候会出现路径识别或权限的奇怪问题。你可以直接在项目的platforms/android/app/build.gradle里给它指定一个项目内的可控目录:
打开这个文件,找到android代码块,添加或修改compileOptions部分:android { // 保留原来的所有配置,只新增下面这段 compileOptions { coreLibraryDesugaringEnabled true coreLibraryDesugaringOptions { desugarOutputDirectory file("$projectDir/desugar_temp") } } }然后在
platforms/android/app目录下手动创建desugar_temp文件夹,确保你对这个目录有写入权限,之后再执行cordova build android试试。调整系统TEMP环境变量
虽然你说T:\Temp是可写的,但有时候系统TEMP路径过长、包含空格或特殊字符,会导致工具识别异常。你可以试试把TEMP和TMP环境变量改成更简洁的路径,比如C:\Temp:- 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量
- 在用户变量里找到TEMP和TMP,修改为C:\Temp(先手动创建这个目录)
- 重启所有打开的命令行/IDE,再重新构建项目
更新Cordova Android平台版本
旧版本的Cordova Android平台可能存在Desugar相关的bug,试试更新到最新稳定版:# 先移除旧的Android平台 cordova platform rm android # 添加最新版 cordova platform add android@latest如果最新版有兼容性问题,也可以试试指定一个经过验证的稳定版本,比如
android@12.0.0清理构建缓存
缓存损坏也可能导致这类奇怪报错,先清理Cordova和Gradle的缓存:# 清理Cordova的构建缓存 cordova clean android # 清理Gradle缓存(进入Android平台目录执行) cd platforms/android ./gradlew clean cd ../..清理完成后再重新执行构建命令。
排查插件冲突(针对测试项目)
虽然是「hello」测试应用,但默认插件也可能有异常。你可以创建一个全新的Cordova项目,不添加任何额外插件,直接构建:cordova create test_hello com.example.testhello TestHello cd test_hello cordova platform add android cordova build android如果新项目能正常构建,那说明原项目的某个插件有问题,你可以逐步排查添加的插件。
内容的提问来源于stack exchange,提问作者Peter T.

