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

GluonFX Android端应用关闭后推送通知崩溃问题求助

问题描述

已基于Gluon Attach集成推送通知服务,由Firebase和Spring Boot负责推送。应用在前台/后台运行时推送正常,但应用被关闭(杀死)后,Android系统弹出"[appName]已停止"提示,日志抛出异常:

[SUB] [91mE/AndroidRuntime(13611): FATAL EXCEPTION: Firebase-Messaging-Intent-Handle[0m
[SUB] [91mE/AndroidRuntime(13611): Process: XXX.XXXX.XXXXXXX, PID: 13611[0m
[SUB] [91mE/AndroidRuntime(13611): java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process XXX.XXXX.XXXXXXX. Make sure to call FirebaseApp.initializeApp(Context) first.[0m
[SUB] [91mE/AndroidRuntime(13611):  at com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@19.3.0:184)[0m
[SUB] [91mE/AndroidRuntime(13611):  at com.google.firebase.messaging.MessagingAnalytics.logToScion(com.google.firebase:firebase-messaging@@20.3.0:99)[0m
[SUB] [91mE/AndroidRuntime(13611):  at com.google.firebase.messaging.MessagingAnalytics.logNotificationReceived(com.google.firebase:firebase-messaging@@20.3.0:2)[0m
[SUB] [91mE/AndroidRuntime(13611):  at com.google.firebase.messaging.FirebaseMessagingService.passMessageIntentToSdk(com.google.firebase:firebase-messaging@@20.3.0:34)[0m
[SUB] [91mE/AndroidRuntime(13611):  at com.google.firebase.messaging.FirebaseMessagingService.handleMessageIntent(com.google.firebase:firebase-messaging@@20.3.0:27)[0m
[SUB] [91mE/AndroidRuntime(13611):  at com.google.firebase.messaging.FirebaseMessagingService.handleIntent(com.google.firebase:firebase-messaging@@20.3.0:17)[0m
[SUB] [91mE/AndroidRuntime(13611):  at com.google.firebase.messaging.EnhancedIntentService.lambda$processIntent$0$EnhancedIntentService(com.google.firebase:firebase-messaging@@20.3.0:43)[0m
[SUB] [91mE/AndroidRuntime(13611):  at com.google.firebase.messaging.EnhancedIntentService$$Lambda$0.run(Unknown Source:6)[0m
[SUB] [91mE/AndroidRuntime(13611):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)[0m
[SUB] [91mE/AndroidRuntime(13611):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)[0m
[SUB] [91mE/AndroidRuntime(13611):  at com.google.android.gms.common.util.concurrent.zza.run(Unknown Source:6)[0m
[SUB] [91mE/AndroidRuntime(13611):  at java.lang.Thread.run(Thread.java:764)

已按文档配置AndroidManifest.xml:

<manifest
    xmlns:android='http://schemas.android.com/apk/res/android'
    package='XXX.XXX.XXXXXX' android:versionCode='X'
    android:versionName='X.X'>
    <supports-screens android:xlargeScreens="true" />
    <uses-permission
        android:name="android.permission.INTERNET" />
    <uses-permission
        android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission
        android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission
        android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application android:label='XXXXXX'
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name='com.gluonhq.helloandroid.MainActivity'
            android:launchMode="singleTop"
            android:configChanges="orientation|keyboardHidden">
            <intent-filter>
                <category android:name='android.intent.category.LAUNCHER' />
                <action android:name='android.intent.action.MAIN' />
            </intent-filter>
        </activity>
        <service
            android:name="com.gluonhq.helloandroid.PushFcmMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
        <service
            android:name="com.gluonhq.helloandroid.PushNotificationJobService"
            android:permission="android.permission.BIND_JOB_SERVICE"
            android:exported="true" />
        <activity
            android:name="com.gluonhq.helloandroid.PushNotificationActivity"
            android:parentActivityName="com.gluonhq.helloandroid.MainActivity">
            <meta-data android:name="android.support.PARENT_ACTIVITY"
                android:value="com.gluonhq.helloandroid.MainActivity" />
        </activity>
    </application>
</manifest>

已查阅Gluon官方文档、示例及Attach/Charm库文档,未找到遗漏配置,仅在应用关闭场景下触发异常。


解决方案

问题核心是:应用被杀死后,Firebase消息服务启动时,FirebaseApp未完成自动初始化,导致抛出未初始化异常。可通过以下步骤修复:

  1. 手动初始化FirebaseApp到自定义消息服务
    在你的PushFcmMessagingService类中,重写onCreate()方法,手动检查并初始化FirebaseApp:
@Override
public void onCreate() {
    super.onCreate();
    // 检查是否已初始化,未初始化则手动初始化
    if (FirebaseApp.getApps(this).isEmpty()) {
        FirebaseApp.initializeApp(this);
    }
}

当应用被杀后,消息服务被系统唤醒时,这个初始化操作会优先完成,避免后续调用Firebase API时抛出异常。

  1. 确认Firebase初始化Provider配置
    在AndroidManifest.xml的<application>标签内,添加Firebase初始化Provider(若GluonFX未自动生成):
<provider
    android:name="com.google.firebase.provider.FirebaseInitProvider"
    android:authorities="${applicationId}.firebaseinitprovider"
    android:exported="false"
    android:initOrder="100" />

这个Provider负责Firebase的自动初始化,确保它存在于Manifest中。

  1. 验证google-services.json文件
    确保google-services.json已正确放置在Android项目的src/main/目录下,且文件中的包名、API密钥等信息与应用配置完全匹配。GluonFX构建时需要读取该文件完成Firebase配置注入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:15:00