feat: 引入 Conscrypt 解决 Android 8.1 TLS 握手失败
设备系统 conscrypt 版本过旧,连阿里云 OSS 的 HTTPS 握手被 reset。 引入 org.conscrypt:conscrypt-android:2.5.2 作为首选安全提供者, 在 Application.onCreate 中注册,所有网络请求自动使用现代 TLS。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -85,6 +85,9 @@ dependencies {
|
|||||||
implementation(libs.androidx.room.ktx)
|
implementation(libs.androidx.room.ktx)
|
||||||
ksp(libs.androidx.room.compiler)
|
ksp(libs.androidx.room.compiler)
|
||||||
|
|
||||||
|
// TLS (解决 Android 8.1 连阿里云 OSS HTTPS 握手失败)
|
||||||
|
implementation(libs.conscrypt)
|
||||||
|
|
||||||
// Network
|
// Network
|
||||||
implementation(libs.retrofit)
|
implementation(libs.retrofit)
|
||||||
implementation(libs.retrofit.converter.gson)
|
implementation(libs.retrofit.converter.gson)
|
||||||
|
|||||||
@@ -2,14 +2,17 @@ package com.xiaoqu.watch.app
|
|||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import dagger.hilt.android.HiltAndroidApp
|
import dagger.hilt.android.HiltAndroidApp
|
||||||
|
import org.conscrypt.Conscrypt
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
import java.security.Security
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 应用入口(@HiltAndroidApp 触发 Hilt 代码生成)
|
* 应用入口(@HiltAndroidApp 触发 Hilt 代码生成)
|
||||||
*
|
*
|
||||||
* 初始化序列(必须保持 < 500ms):
|
* 初始化序列(必须保持 < 500ms):
|
||||||
* 1. Timber 日志
|
* 1. Conscrypt TLS 提供者(解决 Android 8.1 HTTPS 握手兼容)
|
||||||
* 2. CrashHandler 崩溃恢复
|
* 2. Timber 日志
|
||||||
|
* 3. CrashHandler 崩溃恢复
|
||||||
* 其他初始化延迟到 MainActivity/HomeFragment
|
* 其他初始化延迟到 MainActivity/HomeFragment
|
||||||
*/
|
*/
|
||||||
@HiltAndroidApp
|
@HiltAndroidApp
|
||||||
@@ -18,12 +21,16 @@ class WatchApplication : Application() {
|
|||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
|
|
||||||
// 1. Timber 日志初始化
|
// 1. 注册 Conscrypt 为首选 TLS 提供者(必须在任何网络请求之前)
|
||||||
|
// 解决 Android 8.1 设备连阿里云 OSS 等服务器 TLS 握手失败的问题
|
||||||
|
Security.insertProviderAt(Conscrypt.newProvider(), 1)
|
||||||
|
|
||||||
|
// 2. Timber 日志初始化
|
||||||
Timber.plant(Timber.DebugTree())
|
Timber.plant(Timber.DebugTree())
|
||||||
|
|
||||||
// 2. 崩溃处理器(记录日志 + 杀进程,系统自动重启 Launcher)
|
// 3. 崩溃处理器(记录日志 + 杀进程,系统自动重启 Launcher)
|
||||||
CrashHandler(this).init()
|
CrashHandler(this).init()
|
||||||
|
|
||||||
Timber.d("WatchApplication initialized")
|
Timber.d("WatchApplication initialized (Conscrypt TLS enabled)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ gson = "2.10.1"
|
|||||||
paho = "1.2.5"
|
paho = "1.2.5"
|
||||||
timber = "5.0.1"
|
timber = "5.0.1"
|
||||||
zxing = "3.5.3"
|
zxing = "3.5.3"
|
||||||
|
conscrypt = "2.5.2"
|
||||||
swiperefresh = "1.1.0"
|
swiperefresh = "1.1.0"
|
||||||
viewpager2 = "1.0.0"
|
viewpager2 = "1.0.0"
|
||||||
coreKtx = "1.12.0"
|
coreKtx = "1.12.0"
|
||||||
@@ -73,6 +74,9 @@ paho-mqtt = { group = "org.eclipse.paho", name = "org.eclipse.paho.client.mqttv3
|
|||||||
# Logging
|
# Logging
|
||||||
timber = { group = "com.jakewharton.timber", name = "timber", version.ref = "timber" }
|
timber = { group = "com.jakewharton.timber", name = "timber", version.ref = "timber" }
|
||||||
|
|
||||||
|
# TLS (解决 Android 8.1 设备 HTTPS 握手兼容问题)
|
||||||
|
conscrypt = { group = "org.conscrypt", name = "conscrypt-android", version.ref = "conscrypt" }
|
||||||
|
|
||||||
# QR Code
|
# QR Code
|
||||||
zxing-core = { group = "com.google.zxing", name = "core", version.ref = "zxing" }
|
zxing-core = { group = "com.google.zxing", name = "core", version.ref = "zxing" }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user