Gradle构建APK失败:java.io.File.path权限及编译任务异常
Android APK构建失败问题
构建错误日志
选项 'android.useDeprecatedNdk' 已废弃。 正在项目C:\santrope-core-client-master\apk中执行任务: [:app:assembleBarvikhaDebug, :app:assembleBarvikhaDebugUnitTest, :app:assembleBarvikhaDebugAndroidTest] 启动Gradle守护进程... Gradle守护进程已启动,耗时3秒656毫秒 > 配置项目 :app 警告: 选项 'android.useDeprecatedNdk' 已废弃。 当前默认值为'false'。 该选项已从当前版本的Android Gradle插件中移除。 不再支持NdkCompile Crashlytics无法找到依赖的NDK构建任务。您可能需要为generateCrashlyticsSymbolFileSantropeRelease手动强制设置任务依赖 Crashlytics无法找到依赖的NDK构建任务。您可能需要为generateCrashlyticsSymbolFileBarvikhaRelease手动强制设置任务依赖 > 任务 :app:compileLibs '编译库' > 任务 :app:copyLibBarvikha > 任务 :app:preBuild > 任务 :app:preBarvikhaDebugBuild > 任务 :app:compileBarvikhaDebugAidl 无源码 > 任务 :app:compileBarvikhaDebugRenderscript 无源码 > 任务 :app:generateBarvikhaDebugBuildConfig > 任务 :app:javaPreCompileBarvikhaDebug 已是最新 > 任务 :app:generateBarvikhaDebugResValues 已是最新 > 任务 :app:generateBarvikhaDebugResources 已是最新 > 任务 :app:injectCrashlyticsMappingFileIdBarvikhaDebug 已是最新 > 任务 :app:processBarvikhaDebugGoogleServices 已是最新 > 任务 :app:mergeBarvikhaDebugResources 已是最新 > 任务 :app:createBarvikhaDebugCompatibleScreenManifests > 任务 :app:extractDeepLinksBarvikhaDebug 已是最新 > 任务 :app:processBarvikhaDebugManifest 失败 构建失败: 共2个失败任务。 1: 任务执行抛出异常。 ----------- * 问题所在: 任务 ':app:processBarvikhaDebugManifest' 执行失败。 > 无法访问私有最终字段 java.lang.String java.io.File.path: 模块java.base未向未命名模块@195e49d6开放"java.io" * 建议: > 使用--stacktrace选项获取堆栈跟踪。 > 使用--info或--debug选项获取更多日志输出。 > 使用--scan选项获取完整分析信息。 ============================================================================== 2: 任务执行抛出异常。 ----------- * 问题所在: 任务 ':app:compileBarvikhaDebugJavaWithJavac' 执行失败。 > 无法计算任务 ':app:compileBarvikhaDebugJavaWithJavac' 的属性'options.generatedSourceOutputDirectory'的值。 > 在任务 ':app:compileBarvikhaDebugJavaWithJavac' 完成前查询指定映射值不被支持 * 建议: > 使用--stacktrace选项获取堆栈跟踪。 > 使用--info或--debug选项获取更多日志输出。 > 使用--scan选项获取完整分析信息。 ============================================================================== 本次构建使用了已废弃的Gradle特性,与Gradle 8.0不兼容。 您可以使用'--warning-mode all'显示单个废弃警告,确定其来源。 构建失败,耗时34秒 11个可执行任务: 5个已执行,6个已是最新 最终错误: 无法访问私有最终字段 java.lang.String java.io.File.path: 模块java.base未向未命名模块@195e49d开放"java.io"
解决方案
1. 修复Java模块访问权限限制
在项目根目录的gradle.properties文件中添加JVM参数,开放模块访问权限:
org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED
2. 移除废弃的NDK配置
删除gradle.properties中的android.useDeprecatedNdk配置项,在app/build.gradle中指定当前可用的NDK版本:
android { ndkVersion "25.2.9519653" // 根据项目需求选择兼容的NDK版本 }
3. 手动绑定Crashlytics与NDK构建任务
在app/build.gradle中添加任务依赖,确保Crashlytics能找到NDK构建任务:
tasks.whenTaskAdded { task -> if (task.name == 'generateCrashlyticsSymbolFileBarvikhaRelease') { task.dependsOn ':app:ndkBuild' // 替换为项目实际的NDK构建任务名称 } if (task.name == 'generateCrashlyticsSymbolFileSantropeRelease') { task.dependsOn ':app:ndkBuild' } }
4. 对齐Gradle与Android Gradle插件(AGP)版本
根据当前AGP版本匹配对应的Gradle版本,避免兼容性问题:
- 修改项目根目录
build.gradle中的AGP版本:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 与Gradle 7.5兼容 } }
- 修改
gradle/wrapper/gradle-wrapper.properties中的Gradle版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
内容的提问来源于stack exchange,提问作者Dima_Dima
相关产品推荐
相关产品推荐

