首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Firebase版本升级

Android Firebase版本升级
EN

Stack Overflow用户
提问于 2020-03-12 05:20:28
回答 3查看 9.4K关注 0票数 5

我有一个应用程序使用Firebase和GMS服务的11.8.0版本两年,现在,我想升级到最新版本是17.0.0。下面在gradle中的依赖项:

升级前:

代码语言:javascript
复制
implementation 'com.google.firebase:firebase-core:11.8.0'
implementation 'com.google.android.gms:play-services-location:11.8.0'
implementation 'com.google.android.gms:play-services-base:11.8.0'
implementation 'com.google.firebase:firebase-invites:11.8.0'
implementation 'com.google.firebase:firebase-messaging:11.8.0'
implementation 'com.google.firebase:firebase-config:11.8.0'
implementation 'com.google.android.gms:play-services-maps:11.8.0'

升级后:

代码语言:javascript
复制
implementation 'com.google.firebase:firebase-analytics:17.2.3'
implementation 'com.google.android.gms:play-services-location:17.0.0'
implementation 'com.google.android.gms:play-services-base:17.1.0'
implementation 'com.google.firebase:firebase-invites:17.0.0'
implementation 'com.google.firebase:firebase-messaging:20.1.1'
implementation 'com.google.firebase:firebase-config:19.1.2'
implementation 'com.google.android.gms:play-services-maps:17.0.0'

并修改以下代码:

代码语言:javascript
复制
    public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

        @Override
        public void onTokenRefresh() {
            //Getting registration token
            String token = FirebaseInstanceId.getInstance().getToken();
            // Save token
        }
    }

代码语言:javascript
复制
public class MyFirebaseInstanceIDService extends FirebaseMessagingService {

    @Override
    public void onNewToken(@NonNull String s) {
        super.onNewToken(s);
        // Save token
    }
}

在“宣言”中,我保留以下登记服务:

代码语言:javascript
复制
<service android:name=".notification.MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

我以前设置的其他一切都是不变的。但是,当生成和运行时,下面的堆栈跟踪会出现一个错误:

代码语言:javascript
复制
2020-03-12 11:38:29.225 26475-26543/com.example E/FirebaseInstanceId: Topic sync or token retrieval failed on hard failure exceptions: FIS_AUTH_ERROR. Won't retry the operation.
2020-03-12 11:38:29.460 26475-26550/com.example E/FirebaseInstanceId: Failed to get FIS auth token
    java.util.concurrent.ExecutionException: com.google.firebase.installations.FirebaseInstallationsException
        at com.google.android.gms.tasks.Tasks.zzb(Unknown Source:61)
        at com.google.android.gms.tasks.Tasks.await(Unknown Source:23)
        at com.google.firebase.iid.zzs.zzb(com.google.firebase:firebase-iid@@20.1.0:54)
        at com.google.firebase.iid.zzs.zza(com.google.firebase:firebase-iid@@20.1.0:89)
        at com.google.firebase.iid.zzv.run(Unknown Source:12)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)
     Caused by: com.google.firebase.installations.FirebaseInstallationsException
        at com.google.firebase.installations.FirebaseInstallations.doRegistrationInternal(com.google.firebase:firebase-installations@@16.0.0:333)
        at com.google.firebase.installations.FirebaseInstallations.doGetId(com.google.firebase:firebase-installations@@16.0.0:280)
        at com.google.firebase.installations.FirebaseInstallations.access$lambda$0(Unknown Source:0)
        at com.google.firebase.installations.FirebaseInstallations$$Lambda$1.run(Unknown Source:2)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:919) 

在谷歌上寻找解决方案后,我发现了如下内容:https://firebase.google.com/support/release-notes/android#2020-03-03

然后我转到我的firebase控制台并启用Firebase安装,但是没有什么改变。有人能帮我找出解决这个问题的方法吗?感谢大家!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-03-12 06:32:51

firebase-messaging版本更改为20.1.0

代码语言:javascript
复制
implementation 'com.google.firebase:firebase-messaging:20.1.0'
票数 7
EN

Stack Overflow用户

发布于 2020-03-18 21:21:51

降级防火墙消息传递库不是推荐的解决方案。

作为Firebase云消息传递的v20.1.1和Firebase InstanceId的20.1.0,这些库依赖于Firebase。这使得事情和以前有点不同了。

例如,如果您使用FirebaseOptions而不是google-services.json文件来对这些库进行分类,则需要额外的信息才能传递给FirebaseOptions

根据释放说明

使用Firebase自动初始化过程和Gradle插件将google-services.json转换为资源的应用程序不受影响。但是,创建自己的FirebaseOptions实例的应用程序必须提供有效的API键、Firebase项目ID和应用程序ID。

参考资料:Firebase android发布说明

TL;博士

因此,总之,您应该寻找影响您的代码的中断更改,并按照最新版本支持的方式更新它们。

票数 3
EN

Stack Overflow用户

发布于 2020-04-19 22:28:50

Firebase 二月二十七日最新消息 (M65)随后引入了一个新的基础设施服务,,它附带了对消防基地安装API的依赖。

防火墙安装需要有效的Firebase选项API keyproject IDapplication ID (a.k.a )。( "appId"),以便成功地与Firebase服务器通信。

与Firebase Installations通信时出现的错误指示无效的Firebase选项或与API密钥有关的错误配置。

减轻这一问题

  • 确保应用程序使用来自Firebase控制台的最新google-services.json文件的有效Firebase选项:火力基础选项:说明和背景
  • 如果使用API限制,请确保应用程序使用的API键为Firebase安装API (以及应用程序):API限制:说明和背景
  • 关于Application restrictions:要么将单选按钮设置为None,要么确保应用程序为白色列表(带有正确的SHA-1 certificate)。

详情请浏览:

https://firebase.google.com/support/privacy/init-options

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60648040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档