如何修复应用程序崩溃?当我将 targetSdkVersion 33 更改为 34 时

问题描述 投票:0回答:1

我使用的是 React Native 版本 0.71.6。当我将 targetSdkVersion 从 33 更改为 34 时,应用程序崩溃并且没有日志。仅适用于安卓

我也尝试更改 MainApplication.java 文件

    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.Build;
    import org.jetbrains.annotations.Nullable;
    @Override
    public Intent registerReceiver(@Nullable BroadcastReceiver receiver, IntentFilter filter) {
        if (Build.VERSION.SDK_INT >= 34 && getApplicationInfo().targetSdkVersion >= 34) {
            return super.registerReceiver(receiver, filter, Context.RECEIVER_EXPORTED);
        } else {
            return super.registerReceiver(receiver, filter);
        }
    }

还有

android/app/build.gradle

implementation 'org.jetbrains:annotations:16.0.2'

// add above the oncreate() 

我应用了这个,它在调试模式下运行良好,无论是在模拟器上还是在实际设备上。 但是,如果您将其上传到 Google Play 商店作为内部测试并运行,该应用程序会再次崩溃。

我该如何解决这个问题?以下是我的文件

android/build.gradle

buildscript {
    ext {
        buildToolsVersion = "33.0.0"
        minSdkVersion = 21
        compileSdkVersion = 33
        targetSdkVersion = 34

        // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
        ndkVersion = "23.1.7779620"
        // react-native-iap
        supportLibVersion = "28.0.0"
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        
        classpath("com.android.tools.build:gradle:7.3.1")
        classpath("com.facebook.react:react-native-gradle-plugin")
        classpath 'com.google.gms:google-services:4.3.3'
    }
}

package.json

  "dependencies": {
    "@invertase/react-native-apple-authentication": "^2.2.2",
    "@react-native-community/art": "^1.2.0",
    "@react-native-community/async-storage": "^1.12.1",
    "@react-native-community/clipboard": "^1.5.1",
    "@react-native-community/masked-view": "^0.1.10",
    "@react-native-community/netinfo": "9.3.7",
    "@react-native-firebase/analytics": "^17.5.0",
    "@react-native-firebase/app": "^17.5.0",
    "@react-native-firebase/messaging": "^17.5.0",
    "@react-navigation/material-top-tabs": "^6.3.0",
    "@react-navigation/native": "^6.1.6",
    "@react-navigation/native-stack": "^6.9.2",
    "@react-navigation/stack": "^6.3.5",
    "@reduxjs/toolkit": "^1.9.2",
    "@shopify/react-native-skia": "^0.1.183",
    "@tanstack/react-query": "^4.13.5",
    "aws-sdk": "^2.777.0",
    "axios": "^1.6.7",
    "crypto-js": "3.2.0",
    "dayjs": "^1.11.10",
    "eventemitter3": "^4.0.7",
    "expo": "^48.0.0",
    "expo-asset": "~8.9.1",
    "expo-av": "~13.2.1",
    "expo-constants": "~14.2.1",
    "expo-file-system": "~15.2.2",
    "expo-font": "~11.1.1",
    "expo-haptics": "~12.2.1",
    "expo-jwt": "^1.4.1",
    "expo-linear-gradient": "~12.1.2",
    "expo-web-browser": "~12.1.1",
    "install-expo-modules": "^0.3.6",
    "lodash": "^4.17.20",
    "lottie-ios": "3.4.1",
    "lottie-react-native": "5.1.4",
    "lzutf8": "0.6.2",
    "patch-package": "^6.4.7",
    "pod-install": "^0.1.16",
    "postinstall-postinstall": "^2.1.0",
    "qs": "^6.9.4",
    "react": "18.2.0",
    "react-native": "0.71.6",
    "react-native-animated-webp": "^0.0.8",
    "react-native-code-push": "^8.0.1",
    "react-native-drawer-layout": "^3.2.0",
    "react-native-easy-toast": "^1.2.0",
    "react-native-fast-image": "^8.6.3",
    "react-native-flipper": "^0.189.0",
    "react-native-gesture-handler": "~2.9.0",
    "react-native-google-mobile-ads": "^10.1.2",
    "react-native-hyperlink": "^0.0.19",
    "react-native-iap": "^12.12.2",
    "react-native-immersive-mode": "^2.0.0",
    "react-native-pager-view": "6.1.2",
    "react-native-pages": "^0.9.0",
    "react-native-progress": "^4.1.2",
    "react-native-rate": "^1.2.4",
    "react-native-reanimated": "~2.14.4",
    "react-native-safe-area-context": "4.5.0",
    "react-native-screens": "~3.20.0",
    "react-native-tab-view": "^3.3.0",
    "react-native-webview": "11.26.0",
    "react-navigation": "^4.4.4",
    "react-navigation-stack": "^2.10.4",
    "react-redux": "^8.0.5",
    "reanimated-bottom-sheet": "^1.0.0-alpha.22",
    "redux-flipper": "^2.0.2",
    "request": "^2.88.2",
    "request-promise": "^4.2.6"
  },
  "devDependencies": {
    "@babel/core": "^7.20.0",
    "@babel/eslint-parser": "^7.21.3",
    "@babel/plugin-proposal-class-properties": "^7.18.6",
    "@babel/preset-env": "^7.20.0",
    "@babel/runtime": "^7.20.0",
    "@react-native-community/eslint-config": "^3.2.0",
    "babel-jest": "^29.2.1",
    "babel-plugin-module-resolver": "^5.0.0",
    "babel-plugin-transform-remove-console": "^6.9.4",
    "eslint": "^8.19.0",
    "eslint-config-airbnb": "^19.0.4",
    "eslint-config-prettier": "^8.8.0",
    "eslint-import-resolver-babel-module": "^5.3.2",
    "eslint-plugin-import": "^2.27.5",
    "eslint-plugin-jsx-a11y": "^6.7.1",
    "eslint-plugin-prettier": "^4.2.1",
    "eslint-plugin-react": "^7.32.2",
    "eslint-plugin-react-hooks": "^4.3.0",
    "eslint-plugin-react-native": "^4.0.0",
    "jest": "^29.2.1",
    "metro-react-native-babel-preset": "0.73.9",
    "prettier": "^2.4.1",
    "react-query-native-devtools": "^4.0.0",
    "react-test-renderer": "18.2.0"
  },
  "jest": {
    "preset": "react-native"
  }
}

堆栈跟踪或日志


java.lang.RuntimeException

Exception java.lang.RuntimeException: Attempting to call runOnJS with an object that is not a host function. Using runOnJS is only possible with methods that are defined on the main React-Native Javascript thread and that aren't marked as worklets

Error: Attempting to call runOnJS with an object that is not a host function. Using runOnJS is only possible with methods that are defined on the main React-Native Javascript thread and that aren't marked as worklets
    at runOnJS (/Users/kimgunhee/Desktop/myproject/node_modules/react-native-reanimated/src/reanimated2/core.ts (302:7):1:86)
    at runOnJS (native)
    at _f (/Users/kimgunhee/Desktop/myproject/node_modules/react-native-drawer-layout/src/views/modern/Drawer.tsx (233:14):1:71)
    at _f (native)
    at _f (/Users/kimgunhee/Desktop/myproject/node_modules/react-native-reanimated/src/reanimated2/hook/useAnimatedGestureHandler.ts (54:18):1:624)
    at _f (native)
  at com.swmansion.reanimated.Scheduler.triggerUI (Scheduler.java)
  at com.swmansion.reanimated.Scheduler$1.run (Scheduler.java)
  at com.swmansion.reanimated.Scheduler$2.runGuarded (Scheduler.java)
  at com.facebook.react.bridge.GuardedRunnable.run
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:226)
  at android.os.Looper.loop (Looper.java:313)
  at android.app.ActivityThread.main (ActivityThread.java:8762)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:604)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1067)


l6.c

Exception l6.c:
  at com.facebook.react.modules.core.ExceptionsManagerModule.reportException
  at java.lang.reflect.Method.invoke
  at com.facebook.react.bridge.JavaMethodWrapper.invoke
  at com.facebook.react.bridge.JavaModuleWrapper.invoke
  at com.facebook.jni.NativeRunnable.run
  at android.os.Handler.handleCallback (Handler.java:958)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage
  at android.os.Looper.loopOnce (Looper.java:230)
  at android.os.Looper.loop (Looper.java:319)
  at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run
  at java.lang.Thread.run (Thread.java:1012)
android flutter react-native
1个回答
0
投票

最近关注我的build.Gradle,我也遇到了一个困难。经过几个小时的搜索,我建立了正确的设置,这将解决您的疑问。

import org.apache.tools.ant.taskdefs.condition.Os

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext {
        buildToolsVersion = "34.0.0"
        minSdkVersion = 21
        compileSdkVersion = 33
        targetSdkVersion = 34

        if (System.properties['os.arch'] == "aarch64") {
            // For M1 Users we need to use the NDK 24 which added support for aarch64
            ndkVersion = "24.0.8215888"
        } else {
            // Otherwise we default to the side-by-side NDK version from AGP.
            ndkVersion = "21.4.7075529"
        }
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath("com.android.tools.build:gradle:7.4.2")
        classpath("com.facebook.react:react-native-gradle-plugin")
        classpath("de.undercouch:gradle-download-task:4.1.2")
        classpath 'com.google.gms:google-services:4.3.15'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url("$rootDir/../node_modules/react-native/android")
        }
        maven {
            // Android JSC is installed from npm
            url("$rootDir/../node_modules/jsc-android/dist")
        }
        mavenCentral {
            // We don't want to fetch react-native from Maven Central as there are
            // older versions over there.
            content {
                excludeGroup "com.facebook.react"
            }
        }
        google()
        maven { url 'https://www.jitpack.io' }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.