Mac上Android Studio构建报错java.io.FileNotFoundException(Operation not permitted)
问题根因
这个报错是AGP(Android Gradle 插件)配套的Jacoco任务读取build目录下动态生成的类文件时,权限被macOS系统拦截导致的。你使用的Android Studio 4.2属于2021年的老旧版本,配套的AGP版本和macOS 10.16(即Big Sur / macOS 11)的文件访问机制存在已知兼容问题,Gradle守护进程的权限和Android Studio本身的权限并不完全打通,所以单独给AS授予全磁盘访问权限无法覆盖Gradle执行过程中的权限请求。
解决方案
1. 清理权限残留
- 先彻底停止所有运行中的Gradle守护进程,在项目根目录执行终端命令:
./gradlew --stop - 手动删除项目根目录下的
.gradle隐藏文件夹、app模块下的build文件夹,不要使用AS自带的clean功能,避免残留带权限限制的文件 - 给整个项目目录递归授予当前用户读写权限,终端进入项目根目录执行:
chmod -R u+rw ./,如果仍有问题可临时执行chmod -R 777 ./验证
注意:如果项目存放在iCloud同步目录、桌面、下载文件夹这类系统受保护路径,建议将项目迁移到用户主目录下的自定义文件夹,避开系统文件保护、云同步的锁文件拦截。
2. 修复增量构建兼容问题
如果执行完第一步后仍可复现问题,可先在项目根目录的gradle.properties文件中添加以下配置,关闭增量构建和构建缓存验证问题来源:
org.gradle.configureondemand=false org.gradle.caching=false android.enableBuildCache=false
如果添加配置后不再报错,说明你当前使用的AGP版本存在增量构建权限bug,将AGP升级到4.2.2或7.0.x稳定版即可解决,不需要长期关闭增量构建功能。
3. 修复Jacoco兼容问题
报错栈明确指向Jacoco覆盖率任务:
- 如果你当前不需要执行代码覆盖率测试,直接在app模块的
build.gradle中关闭debug构建的覆盖率采集即可:android { buildTypes { debug { testCoverageEnabled false } } } - 如果你需要使用Jacoco能力,将Jacoco插件版本升级到0.8.7及以上即可,老版本Jacoco和macOS Big Sur的文件访问接口存在兼容缺陷。
4. 终极解决方案
Android Studio 4.2对macOS 11及以上版本的兼容性存在大量已知问题,如果上述方案都无法彻底解决,直接升级Android Studio到Electric Eel(2022.1.1)及以上的稳定版,即可从根源解决版本兼容导致的各类权限异常。
内容的提问来源于stack exchange,提问作者Kes Walker
相关产品推荐
相关产品推荐

