You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Android启动崩溃:java.lang.NoSuchMethodError问题求助

React Native Android应用启动崩溃问题

问题描述

基于React Native开发的Android应用,此前数月多次更新均正常运行,近期突然出现启动崩溃,完全无法启动。应用预期流程为启动至主界面,自动登录后跳转首页,但目前直接崩溃,仅抛出以下错误。

错误日志

FATAL EXCEPTION: main
                                                                                                   
Process: com.appname.appname, PID: 30423
                                                                                                    
java.lang.NoSuchMethodError: No interface method removeLast()Ljava/lang/Object; in class Ljava/util/List; or its super classes (declaration of 'java.util.List' appears in /apex/com.android.art/javalib/core-oj.jar)
                                                                                                        
at com.swmansion.rnscreens.ScreenStack.obtainDrawingOp(ScreenStack.kt:319)
                                                                                                        
at com.swmansion.rnscreens.ScreenStack.drawChild(ScreenStack.kt:303)
                                                                                                        
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4317)
                                                                                                        
at com.swmansion.rnscreens.ScreenStack.dispatchDraw(ScreenStack.kt:288)
                                                                                                        
at android.view.View.updateDisplayListIfDirty(View.java:22747)
                                                                                                        
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
                                                                                                        
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
                                                                                                        
at android.view.View.updateDisplayListIfDirty(View.java:22712)
                                                                                                        
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
                                                                                                        
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
                                                                                                        
at android.view.View.updateDisplayListIfDirty(View.java:22712)
                                                                                                        
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
                                                                                                        
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
                                                                                                        
at android.view.View.updateDisplayListIfDirty(View.java:22712)
                                                                                                        
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)

                                                                                                   at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
                                                                                                        
at android.view.View.updateDisplayListIfDirty(View.java:22712)
                                                                                                        
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
                                                                                                        
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
                                                                                                        
at android.view.View.updateDisplayListIfDirty(View.java:22712)
                                                                                                        
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
                                                                                                        
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
                                                                                                        
at android.view.View.updateDisplayListIfDirty(View.java:22712)
                                                                                                        
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
                                                                                                        
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
                                                                                                        
at android.view.View.updateDisplayListIfDirty(View.java:22712)
                                                                                                        
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
                                                                                                        
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
                                                                                                        
at android.view.View.updateDisplayListIfDirty(View.java:22712)
                                                                                                        
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:694)
                                                                                                        
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:700)
                                                                                                        
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:798)
                                                                                                        
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4939)
                                                                                                        
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4643)
                                                                                                        
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3822)
                                                                                                        
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2465)
                                                                                                        
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9305)
                                                                                                        
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1339)
                                                                                                        
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1348)
                                                                                                        
at android.view.Choreographer.doCallbacks(Choreographer.java:952)
                                                                                                        
at android.view.Choreographer.doFrame(Choreographer.java:882)
                                                                                                        
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1322)
                                                                                                        
at android.os.Handler.handleCallback(Handler.java:958)
                                                                                                        
at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                        
at android.os.Looper.loopOnce(Looper.java:205)
                                                                                                        
at android.os.Looper.loop(Looper.java:294)
                                                                                                        
at android.app.ActivityThread.main(ActivityThread.java:8177)
                                                                                                        
at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
                                                                                                        
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

build.gradle配置

buildToolsVersion = "34.0.0"
minSdkVersion = 24
compileSdkVersion = 35
targetSdkVersion = 35
ndkVersion = "26.1.10909125"
kotlinVersion = "1.8.0"
supportLibVersion = "28.0.0"
androidXAnnotation = "1.1.0"
androidXBrowser = "1.0.0"

package.json依赖

"dependencies": {
    "@miblanchard/react-native-slider": "^2.6.0",
    "@pusher/pusher-websocket-react-native": "^1.3.0",
    "@react-native-async-storage/async-storage": "^1.23.1",
    "@react-native-community/netinfo": "^9.5.0",
    "@react-native-cookies/cookies": "^6.2.1",
    "@react-native-firebase/app": "^19.2.2",
    "@react-native-firebase/auth": "^19.2.2",
    "@react-native-firebase/messaging": "^19.3.0",
    "@react-native/metro-config": "^0.74.84",
    "@react-navigation/bottom-tabs": "^6.5.20",
    "@react-navigation/native": "^6.1.17",
    "@react-navigation/native-stack": "^6.9.26",
    "@reduxjs/toolkit": "^2.2.3",
    "@rneui/themed": "^4.0.0-rc.8",
    "@sharpsports/sharpsports-mobile": "2.5.0",
    "@types/react-router": "^5.1.20",
    "axios": "^1.6.8",
    "core-js": "^3.36.1",
    "firebase": "^10.11.0",
    "lodash": "^4.17.21",
    "react": "18.2.0",
    "react-native": "0.74.2",
    "react-native-chart-kit": "^6.12.0",
    "react-native-collapsible": "^1.6.1",
    "react-native-config": "^1.5.2",
    "react-native-device-info": "^10.13.2",
    "react-native-gesture-handler": "^2.17.1",
    "react-native-gifted-charts": "^1.4.10",
    "react-native-iap": "^12.15.0",
    "react-native-linear-gradient": "^2.8.3",
    "react-native-reanimated": "^3.13.0",
    "react-native-safe-area-context": "4.10.1",
    "react-native-screens": "3.31.1",
    "react-native-svg": "^15.3.0",
    "react-native-typescript-transformer": "^1.2.13",
    "react-native-webview": "^13.10.3",
    "react-redux": "^9.1.0",
    "redux-persist": "^6.0.0",
    "tailwind-rn": "^4.2.0",
    "zod": "^3.22.4"
  },

解决方案

错误核心是java.util.List.removeLast()方法不存在,该方法是Java 9新增的API,但你的minSdkVersion=24(对应Android 7.0,仅支持Java 8)。问题出在react-native-screens@3.31.1版本中使用了这个不兼容的API。

解决步骤:

  1. 降级react-native-screens版本:将react-native-screens降级到3.29.0或更早版本(该版本未使用removeLast()方法)。修改package.json中的依赖:
"react-native-screens": "3.29.0"
  1. 清理缓存并重新安装依赖:
rm -rf node_modules
rm package-lock.json
npm install
cd android && ./gradlew clean
cd ..
npx react-native run-android
  1. 验证修复:重新编译运行应用,确认启动崩溃问题是否解决。

内容的提问来源于stack exchange,提问作者Andrew Colin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 17:57:01