我正在使用标准方式,使用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的连接级别失败。
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" }
}
}