但同一项目的其他打包方式和对照项目表现如下:
- 自定义基座:正常
- 离线打包:正常
- 最小新项目(请求同一 API)云打包:正常
- 当前项目云打包正式包:异常
因此怀疑不是接口本身问题,也不是通用云打包问题,而是当前项目在云打包产物中触发了 DCloud Runtime 的某条特定原生 HTTPS 请求链路。
基础信息:
- 项目类型:uni-app + Vue3 + TS + Vite
- 打包方式:Android 云打包正式包
- AppID:UNIDBC4538
- Android 包名:uni.app.UNIDBC4538
- HBuilderX 版本:请填写
- 手机型号:请填写
- Android 版本:请填写
已做排查:
- 同一 API 放到最小新项目中做 Android 云打包测试,正常
- 当前项目自定义基座测试,正常
- 当前项目离线打包测试,正常
- 已临时禁用 sobot-chat-client 智齿插件后再次云打包,问题仍存在
- 当前 manifest 中没有复杂额外原生插件,主要为 Camera 和 oauth.google
- 已通过 adb logcat 抓到原生错误堆栈
adb logcat 关键日志:
07-30 11:25:17.948 22628 24507 W System.err: java.lang.IllegalArgumentException: protocol TLSv1 is not supported
07-30 11:25:17.948 22628 24507 W System.err: at com.android.org.conscrypt.NativeCrypto.checkEnabledProtocols(NativeCrypto.java:1499)
07-30 11:25:17.948 22628 24507 W System.err: at com.android.org.conscrypt.SSLParametersImpl.<init>(SSLParametersImpl.java:192)
07-30 11:25:17.948 22628 24507 W System.err: at com.android.org.conscrypt.OpenSSLContextImpl.engineInit(OpenSSLContextImpl.java:124)
07-30 11:25:17.948 22628 24507 W System.err: at javax.net.ssl.SSLContext.init(SSLContext.java:326)
另一次抓到的更完整堆栈还包含:
- io.dcloud.common.adapter.util.DCloudTrustManager.getSSLSocketFactory
- io.dcloud.feature.weex.adapter.DCWXHttpAdapter.getOKRequest
从日志看,异常发生在 DCloud Runtime 原生 HTTPS 初始化阶段,而不是业务 JS 层主动指定 TLSv1。
因为:
- 当前项目云包异常
- 最小云项目正常
- 自定义基座正常
- 离线打包正常
所以怀疑是“当前项目在云打包正式包中触发了某条 DCloud 原生请求兼容路径”,导致使用了 TLSv1 并被 Android 系统拒绝。
希望协助排查:
- 请帮忙查看该 AppID 对应云打包产物是否存在运行时差异
- 是否当前云打包 runtime 在该项目上触发了旧 TLS 协议初始化
- 是否有已知问题、修复版本或临时规避方案
如果需要,我可以继续补充:
- 更完整的 adb 日志
- manifest.json 配置
- 云打包与离线打包对照结果
- 可复现安装包
1 个回复
Ask小助手 - Ask社区AI助手
感谢您的反馈。这是一个非常高质量的 Bug 报告,排查思路清晰,对照实验详实,原生堆栈抓取准确,对定位问题非常有帮助。
以下是官方视角的评审与分析:
1. Bug 反馈内容完整性评审
adb logcat堆栈准确指向了DCloudTrustManager和DCWXHttpAdapter,为排查提供了明确方向。2. Bug 成立性分析
结合知识库与社区历史反馈,该 Bug 现象成立,且属于已知的 Android 高版本兼容性问题。
在 ask 社区中,有多位开发者反馈了相同报错:
protocol TLSv1 is not supported。官方在此前的 tlsv1 is not supported【报Bug】 回复中说明:
uni.request在 Android 平台基于 OkHttp 库实现,由于 TLSv1 存在已知安全漏洞,较高版本的 OkHttp 已不再支持。Android 15/16 等高版本系统对 TLS 协议的安全策略要求更为严格,当 Runtime 内部某些旧的请求链路(如您堆栈中提到的DCloudTrustManager.getSSLSocketFactory)尝试初始化包含 TLSv1 的协议时,会被 Android 系统直接拦截并抛出IllegalArgumentException。3. 临时规避方案
在官方 Runtime 彻底修复该底层链路之前,您可以尝试以下临时规避方案:
社区开发者在 红米K80 Android 16 必现问题 的回复中提到:在
uni.request中显式添加sslVerify: true参数后,请求可以恢复正常。4. 进一步处理建议
由于该问题仅在“当前项目云打包正式包”中出现,而最小新项目云打包正常,说明项目中的某些特定配置或插件组合触发了该兼容路径。为了协助官方更精准地定位云打包产物差异:
sslVerify: true的临时规避方案,确认是否能够恢复访问。要回复问题请先登录或注册
公告
更多>相关问题