问题描述:电脑端发布前 WWW 没有问题,有数组返回。发布安卓后www 不会返回byte 数据。且用手机直接访问 站点,可以访问下载。
1安卓端调试方法:
当我们在开发的时候,我们可以方便的用Debug来调试程序,可是,有些问题恰巧出现在真机测试的时候,网上已经有了很多教程,可总是不完整,故在此写一个完整版,供大家参考。
手机设置
使用USB连接电脑,打开开发者模式,打开USB调试,允许调试
电脑设置
找到安卓SDK所在目录,找到tools这个文件夹
打开monitor.bat(如果没有的话,参考https://blog.csdn.net/u014230923/article/details/51615746),然后会自动打开这个窗口箭头所指即为我们的手机,注意,如果未能正常显示手机型号 Online 系统版本者三要素,说明手机和电脑并没有建立连接,请自行解决。
然后我们发现输出信息太多,所以我们需要过滤器
之后,我们点击我们手机,然后点我们创建的过滤器,就能看到我们想要的Debug输出了(如果没有的话,重新连接手机即可)
2 调试后 报错如下
最新的Android P 即Android 10.0 ,API 29 。
错误 java.io.IOException: Cleartext HTTP traffic to 192.168.1.67 not permitted
为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android Nougat 和 Oreo 则不受影响。
因此在Android P 使用HttpUrlConnection进行http请求会出现以下异常
W/System.err: java.io.IOException: Cleartext HTTP traffic to **** not permitted
使用OKHttp请求则出现
java.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security policy
原来在Android P系统的设备上,如果应用使用的是非加密的明文流量的http网络请求,则会导致该应用无法进行网络请求,https则不会受影响,同样地,如果应用嵌套了webview,webview也只能使用https请求。
针对这个问题,有以下四种解决方法,直接看第四种,简单方便,我就是用第四种解决的:
(1)APP改用https请求 (修改后提示访问证书问题,www 类任然无法访问)
(2)targetSdkVersion 降到27以下
(3)更改网络安全配置
1.在res文件夹下创建一个xml文件夹,然后创建一个network_security_config.xml文件,文件内容如下: <?xml version="1.0" encoding="utf-8"?>
2.接着,在AndroidManifest.xml文件下的application标签增加以下属性: 完成,这个时候App就可以访问网络了。
(4)在AndroidManifest.xml配置文件的标签中直接插入 【推荐】
android:usesCleartextTraffic="true"
使用第四种方法发布后解决问题