集成Fastlane部署Beta版本时遇KaptContext访问Context错误求助
android beta时的Kapt IllegalAccessError问题 我之前也踩过一模一样的坑!明明Android Studio 3.1编译一切正常,一用Fastlane跑beta部署就报java.lang.IllegalAccessError,核心问题出在Fastlane运行环境的JDK版本和Android Studio默认使用的JDK不匹配,导致Kapt3无法访问JDK编译器模块的内部类。
具体解决方案步骤:
先确认Android Studio用的JDK版本
打开Android Studio,依次点击File → Project Structure → SDK Location,找到JDK Location对应的路径。Android Studio 3.1默认自带的是JDK 8(这是关键,因为JDK 9及以上的模块系统会限制Kapt的访问权限)。让Fastlane使用和Android Studio相同的JDK
有两种实用方式:- 临时在终端设置环境变量后执行命令(Mac示例):
Windows用户可以找到对应JDK路径,用export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home" fastlane android betaset JAVA_HOME=你的JDK路径来临时配置。 - 永久在Fastfile里配置:
在你的beta lane开头添加环境变量设置,确保后续步骤都用指定JDK:lane :beta do # 指定和Android Studio一致的JDK路径 ENV['JAVA_HOME'] = "/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home" # 你的其他部署步骤... gradle(task: "clean assembleRelease") # ... end
- 临时在终端设置环境变量后执行命令(Mac示例):
检查AGP和Kotlin版本的兼容性
Android Studio 3.1对应的Android Gradle Plugin(AGP)版本应该是3.1.x,Kotlin版本建议用1.2.x系列,确保项目根目录的build.gradle配置一致:buildscript { ext.kotlin_version = '1.2.71' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.4' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }清理缓存后重试
先执行Gradle清理命令清除旧缓存:./gradlew clean然后再重新运行
fastlane android beta。
为什么Android Studio编译正常?
因为Android Studio自带了一套适配好的JDK环境,默认用的是JDK 8,完全兼容Kapt3和AGP 3.1.x;而Fastlane默认会使用系统全局的JDK,如果你的系统JDK是9及以上,就会触发模块访问权限的问题,导致报错。
内容的提问来源于stack exchange,提问作者filipp.kowalski

