Android targetSdkVersion28 适配

平时csdn看资料的时候,都是游客模式,前两天要看个评论,不得不登一下,发现之前写的一个心得,有好几个朋友评论了。虽然是很小的问题,但能帮到别人,心里就很满足2333

正好近期把targetSdkVersion 升到了28,适配过程中踩到了各种坑,趁此机会写一篇个人总结与诸位一起分享。

 


1. 腾讯云-语音识别 code=-301 & 7.0无法抓包 & MTA崩溃

这几个其实本质是一个问题。详情参考官方文档网络安全配置。可以看到关键的一点是“从 Android 9(API 级别 28)开始,系统默认情况下已停用明文支持。”,即 cleartextTrafficPermitted="false"。

由此而知,腾讯云语音识别一直报错code=-301, message=server connect failed,其实是因为加了这个设置ClientConfiguration.setServerProtocolHttps(false); 导致接口都是http,自然无法使用了,去掉该配置就可以了,因为默认是用的https。因为demo中是这么设置的,所以之前同事就copy过来了,我升级target sdk后发现不能用也没多想就给腾讯云提了工单,那边一开始也接锅表示会修复的,结果升新版后还是不行,一来一回花了不少时间,以后用sdk还是得多看文档,但这语音识别的文档也太简陋了,连版本日志都没...

MTA崩溃也是同样的问题,一上报就崩了,CLEARTEXT communication to xxx not permitted by network security policy,看了下MTA已经是新版本了,再加上其他sdk中可能还有http的,所以索性修改networkSecurityConfig,允许明文。

7.0以上不能抓包则同样需要在networkSecurityConfig中配置信任的证书,我选择了debug调试时信任所有证书。

networkSecurityConfig配置如下:

在res/xml中新建 network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

在AndroidManifest里的<application>标签中,添加代码:

 android:networkSecurityConfig="@xml/network_security_config"

以上问题就一并解决啦,各位可以根据自己的需求来进行配置。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值