模拟器上可以,但是真机不行 显然是安卓版本这一类的环境问题 原因是安卓9之后有安全限制
配置 ucloud 相关 AndroidManifest
<application
android:networkSecurityConfig="@xml/network_security_config">
</application>
创建 network_security_config.xml 文件
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">cn-bj.ufileos.com</domain>
</domain-config>
</network-security-config>
networkSecurityConfig是什么呢 从Nougat(Android 7)一个名为“Network Security Configuration”的新安全功能也随之而来。如果应用程序的SDK高于或等于24,则只有系统证书才会被信任。 网络安全性配置特性让应用可以在一个安全的声明性配置文件中自定义其网络安全设置,而无需修改应用代码。可以针对特定域和特定应用配置这些设置。此特性的主要功能如下所示:
- 自定义信任锚:针对应用的安全连接自定义哪些证书颁发机构 (CA) 值得信任。例如,信任特定的自签署证书或限制应用信任的公共 CA 集。
- 仅调试重写:在应用中以安全方式调试安全连接,而不会增加已安装用户的风险。 明文通信选择退出:防止应用意外使用明文通信。
- 证书固定:将应用的安全连接限制为特定的证书。
下面分别来看看具体的用法
-
自定义可信 CA 应用可能需要信任自定义的 CA 集,而不是平台默认值。出现此情况的最常见原因包括: -
连接到具有自定义证书颁发机构的主机,如自签署或在公司内部签发的 CA。 -
将 CA 集仅限于您信任的 CA,而不是每个预装 CA。 信任系统中未包含的附加 CA。 -
默认情况下,来自所有应用的安全连接(使用 TLS 和 HTTPS 之类的协议)均信任预装的系统 CA,而面向 Android 6.0(API 级别 23)及更低版本的应用默认情况下还会信任用户添加的 CA 存储。应用可以使用 base-config(应用范围的自定义)或 domain-config(按域自定义)自定义自己的连接。
|