React Native生成签名APK时JDK编译react-native-firebase_messaging报错
错误原因
该错误由JDK版本不兼容导致:当前构建使用的JDK 8无法识别JDK 9及以上版本编译的类文件中携带的MODULE属性,项目引入的新版本react-native-firebase_messaging依赖的部分组件为高版本JDK编译,因此触发编译断言错误。
解决方案
- 方案一(推荐):升级JDK版本
更换项目使用的JDK为11或17版本,这也是当前React Native官方推荐的JDK版本:- 本地下载安装JDK 11/17后,配置
JAVA_HOME环境变量指向对应版本的安装路径 - 若使用Android Studio构建,可直接在「Settings > Build, Execution, Deployment > Build Tools > Gradle」中,将Gradle JDK选择为11或17版本
- 修改项目
android/build.gradle配置,统一编译版本:
android { // ...其他配置 compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" } } - 本地下载安装JDK 11/17后,配置
- 方案二:降级依赖版本
若暂时无法升级JDK,可将react-native-firebase_messaging降级到兼容JDK 8的18.x及更早版本,修改依赖版本后重新安装依赖即可。 - 清理缓存重新构建
执行以下命令清理历史构建缓存,避免旧缓存影响:cd android ./gradlew clean cd .. rm -rf node_modules && npm install
原始构建报错信息
> Task :react-native-firebase_messaging:compileReleaseJavaWithJavac FAILED An exception has occurred in the compiler (1.8.0_291). Please file a bug against the Java compiler via the Java bug reporting page after checking the Bug Database for duplicates. Include your program and the following diagnostic in your report. Thank you. java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.UnsharedNameTable$NameImpl)
依赖包版本截图

内容的提问来源于stack exchange,提问作者Amir Doreh
相关产品推荐
相关产品推荐

