使用Firebase实时数据库时Android 9上的WebSocketException

时间:2019-03-18 16:03:54

标签: android firebase ssl firebase-realtime-database android-9.0-pie

我正在使用标准方式,使用16.1.0版的SDK连接到Firebase实时数据库。

问题:

对于Android 9以下的设备,连接设置非常好,但对于在移动网络上运行android 9的设备,firebase连接失败。

在连接到Firebase后端时,它似乎是WebSocketException,随后是SSL握手异常,日志:

  

D / WebSocket:ws_16-WebSocket错误。       com.google.firebase.database.tubesock.WebSocketException:为...创建安全套接字时出错。

和:

  

原因:java.net.ConnectException:无法从/::(端口42580)连接到s-usc1c-nss-243.firebaseio.com/(端口443):连接失败:ETIMEDOUT(连接超时)

详细日志:

  

D / PersistentConnection:pc_0-尝试获取身份验证令牌       D / PersistentConnection:pc_0-成功获取令牌,打开连接       D /连接:conn_19-打开连接       D / WebSocket:ws_19-连接超时       D / WebSocket:ws_19-已关闭       D / WebSocket:ws_19-关闭自身       D /连接:conn_19-实时连接失败       D /连接:conn_19-关闭实时连接       D / PersistentConnection:pc_0-由于OTHER断开连接       D / PersistentConnection:pc_0-计划连接尝试       D / ConnectionRetryHelper:调度重试在2357ms       D / WebSocket:ws_19-WebSocket错误。

Android 9 link的SSL证书行为已更改,因此我认为这可能是可以从Firebase端解决Firebase的问题,但不确定。

GitHub问题,link

还有其他人面临这个问题吗?可能有这种方法吗?

PS:切换至WiFi时,此设备工作正常,只是在P的连接级别失败。

编辑1:

app build.gradle:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'

apply plugin: 'realm-android'
apply plugin: 'io.fabric'
apply plugin: 'com.google.android.gms.oss-licenses-plugin'

// other standard default config code
dependencies{
    implementation deps.firebase.core
    implementation deps.firebase.auth
    implementation deps.firebase.config
    implementation deps.firebase.firestore
    implementation deps.firebase.performance
    implementation deps.firebase.messaging
    implementation deps.firebase.database
}
apply plugin: 'com.google.gms.google-services'

root build.gradle:

buildscript {
    ext.kotlin_version = '1.3.21'
    ext.realm_version = '5.8.0'
    ext.versions = [
   'firebaseCore'           : '16.0.8',
            'firebaseAuth'           : '16.2.0',
            'firebaseConfig'         : '16.4.0',
            'firebasePerf'           : '16.2.4',
            'firestore'              : '18.1.0',
            'firebaseMessaging'      : '17.4.0',
            'firebaseDatabase'       : '16.1.0',
          ]

    ext.deps = [
    'firebase'               : [
                    'core'       : "com.google.firebase:firebase-core:${versions.firebaseCore}",
                    'auth'       : "com.google.firebase:firebase-auth:${versions.firebaseAuth}",
                    'config'     : "com.google.firebase:firebase-config:${versions.firebaseConfig}",
                    'firestore'  : "com.google.firebase:firebase-firestore:${versions.firestore}",
                    'performance': "com.google.firebase:firebase-perf:${versions.firebasePerf}",
                    'messaging'  : "com.google.firebase:firebase-messaging:${versions.firebaseMessaging}",
                    'database'   : "com.google.firebase:firebase-database:${versions.firebaseDatabase}",
            ]
        ]
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
        maven { url "http://storage.googleapis.com/r8-releases/raw" }
        maven { url "https://jitpack.io" }
        maven { url "https://kotlin.bintray.com/kotlinx/" }
    }
    dependencies {
        // r8 tools deps is for CT.
        classpath 'com.android.tools:r8:1.3.52'
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "io.realm:realm-gradle-plugin:$realm_version"
        classpath 'com.google.gms:google-services:4.2.0'
        classpath 'io.fabric.tools:gradle:1.27.1'
        classpath 'com.google.android.gms:oss-licenses-plugin:0.9.4'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.google.com/' }
        maven { url "https://jitpack.io" }
    }
}

0 个答案:

没有答案