react-native-firebase 通知崩溃
react-native-firebase notification crash
在使用 Android OS 8.1.0 的 Android 设备上,在模拟器中收到通知时,应用程序崩溃。这发生在应用程序中。当我在应用程序之外并且通知在通知托盘中正常到达时,它不会发生。
但是在真实设备上,它在内部和外部都会发生(?)。
Android 5.0.0.
不会发生崩溃
Crashlytics 中的错误是:
Caused by java.lang.NoSuchMethodError: No direct method <init>(Landroid/content/Context;Ljava/lang/String;)V in class Landroid/support/v4/app/NotificationCompat$Builder; or its super classes (declaration of 'android.support.v4.app.NotificationCompat$Builder' appears in /data/app/com.parkour2342345-zqe_7U0B_6slVtK2mLk6RA==/base.apk!classes2.dex)
at io.invertase.firebase.notifications.DisplayNotificationTask.doInBackground(DisplayNotificationTask.java:68)
at io.invertase.firebase.notifications.DisplayNotificationTask.doInBackground(DisplayNotificationTask.java:31)
at android.os.AsyncTask.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
以及:
Fatal Exception: java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask.done(AsyncTask.java:353)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
我的 build.gradle for react-native-firebase 包含:
def DEFAULT_COMPILE_SDK_VERSION = 27
def DEFAULT_BUILD_TOOLS_VERSION = "27.0.3"
def DEFAULT_TARGET_SDK_VERSION = 26
def DEFAULT_FIREBASE_VERSION = "12.0.0"
def DEFAULT_SUPPORT_LIB_VERSION = "27.0.2"
android {
compileSdkVersion rootProject.hasProperty('compileSdkVersion') ? rootProject.compileSdkVersion : DEFAULT_COMPILE_SDK_VERSION
buildToolsVersion rootProject.hasProperty('buildToolsVersion') ? rootProject.buildToolsVersion : DEFAULT_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion 16
targetSdkVersion rootProject.hasProperty('targetSdkVersion') ? rootProject.targetSdkVersion : DEFAULT_TARGET_SDK_VERSION
versionCode 1
versionName "1.0"
multiDexEnabled true
}
我已将问题发布在这里:
https://github.com/invertase/react-native-firebase/issues/1553
环境
应用程序目标平台:
Android
开发操作系统:
macOS High Sierra 10.13.6
构建工具:
Android工作室:3.1 AI-173.4670197
React Native 版本:
0.54.4 => 0.54.4
React Native Firebase 版本:
4.3.8
Firebase 模块:
短信
你在使用打字稿吗?
没有
更新#1:
在 react-native-navigation 的 build.gradle 中:
def DEFAULT_SUPPORT_LIB_VERSION = "27.0.2"
...
def supportVersion = rootProject.hasProperty('supportLibVersion') ? rootProject.supportLibVersion : DEFAULT_SUPPORT_LIB_VERSION
dependencies {
// compile fileTree(include: ['*.jar'], dir: 'libs')
api "com.facebook.react:react-native:+" // From node_modules
api "com.android.support:support-v4:$supportVersion"
项目中似乎没有定义 supportLibVersion,因此我假设它将继承文件中的值。此外,尽管重建项目有效,但它确实将该行突出显示为红色。
解决方案,经过数小时的挫折:
1)淘汰线:
api"com.android.support:support-v4:$supportVersion"
2) 将 sdk 更改为 27。
def DEFAULT_TARGET_SDK_VERSION = 27
从表面上看,none 应该可以解决这个问题,但他们确实...
在使用 Android OS 8.1.0 的 Android 设备上,在模拟器中收到通知时,应用程序崩溃。这发生在应用程序中。当我在应用程序之外并且通知在通知托盘中正常到达时,它不会发生。 但是在真实设备上,它在内部和外部都会发生(?)。 Android 5.0.0.
不会发生崩溃Crashlytics 中的错误是:
Caused by java.lang.NoSuchMethodError: No direct method <init>(Landroid/content/Context;Ljava/lang/String;)V in class Landroid/support/v4/app/NotificationCompat$Builder; or its super classes (declaration of 'android.support.v4.app.NotificationCompat$Builder' appears in /data/app/com.parkour2342345-zqe_7U0B_6slVtK2mLk6RA==/base.apk!classes2.dex)
at io.invertase.firebase.notifications.DisplayNotificationTask.doInBackground(DisplayNotificationTask.java:68)
at io.invertase.firebase.notifications.DisplayNotificationTask.doInBackground(DisplayNotificationTask.java:31)
at android.os.AsyncTask.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
以及:
Fatal Exception: java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask.done(AsyncTask.java:353)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
我的 build.gradle for react-native-firebase 包含:
def DEFAULT_COMPILE_SDK_VERSION = 27
def DEFAULT_BUILD_TOOLS_VERSION = "27.0.3"
def DEFAULT_TARGET_SDK_VERSION = 26
def DEFAULT_FIREBASE_VERSION = "12.0.0"
def DEFAULT_SUPPORT_LIB_VERSION = "27.0.2"
android {
compileSdkVersion rootProject.hasProperty('compileSdkVersion') ? rootProject.compileSdkVersion : DEFAULT_COMPILE_SDK_VERSION
buildToolsVersion rootProject.hasProperty('buildToolsVersion') ? rootProject.buildToolsVersion : DEFAULT_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion 16
targetSdkVersion rootProject.hasProperty('targetSdkVersion') ? rootProject.targetSdkVersion : DEFAULT_TARGET_SDK_VERSION
versionCode 1
versionName "1.0"
multiDexEnabled true
}
我已将问题发布在这里: https://github.com/invertase/react-native-firebase/issues/1553
环境
应用程序目标平台: Android
开发操作系统: macOS High Sierra 10.13.6
构建工具: Android工作室:3.1 AI-173.4670197
React Native 版本: 0.54.4 => 0.54.4
React Native Firebase 版本: 4.3.8
Firebase 模块: 短信
你在使用打字稿吗? 没有
更新#1:
在 react-native-navigation 的 build.gradle 中:
def DEFAULT_SUPPORT_LIB_VERSION = "27.0.2"
...
def supportVersion = rootProject.hasProperty('supportLibVersion') ? rootProject.supportLibVersion : DEFAULT_SUPPORT_LIB_VERSION
dependencies {
// compile fileTree(include: ['*.jar'], dir: 'libs')
api "com.facebook.react:react-native:+" // From node_modules
api "com.android.support:support-v4:$supportVersion"
项目中似乎没有定义 supportLibVersion,因此我假设它将继承文件中的值。此外,尽管重建项目有效,但它确实将该行突出显示为红色。
解决方案,经过数小时的挫折: 1)淘汰线: api"com.android.support:support-v4:$supportVersion"
2) 将 sdk 更改为 27。 def DEFAULT_TARGET_SDK_VERSION = 27
从表面上看,none 应该可以解决这个问题,但他们确实...