Android 9.0 (Pie)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zsp_android_com/article/details/87710486

场景

应用htttp而非https系统禁应用进行该请求,WebView之url用http协议亦加载失败,https无影响。

分析

Android 9.0 (Pie)限明文流量网络请求,系统禁非加密流量请求。OkHttp3对明文流量场景默于Android 9.0 (Pie)抛异常CLEARTEXT communication to " + host + " not permitted by network security policy

if (!Platform.get().isCleartextTrafficPermitted(host)) {
    throw new RouteException(new UnknownServiceException("CLEARTEXT communication to " + host + " not permitted by network security policy"));
}

解决一

网络安全性配置

  • res新建xml目录并创一名为network_security_config.xml文件:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true" />
    </network-security-config>
    
  • 清单文件之application标签配:
    android:networkSecurityConfig="@xml/network_security_config"
    

解决二

服务器和本地应用都改用https(推荐)。

解决三

targetSdkVersion降级至27。

引错

场景

集成帆软android-async-http-1.4.6-fr.jar报错。

日志
Didn't find class "com.loopj.android.http.AsyncHttpResponseHandler" on path: DexPathList[[zip file "/data/app/com.self.zsp.dfs-8-
Vx5BPhY0KAxa3nrB_wQQ==/base.apk", zip file "/data/app/com.self.zsp.dfs-8-
Vx5BPhY0KAxa3nrB_wQQ==/split_lib_dependencies_apk.apk", zip file "/data/app/com.self.zsp.dfs-8-
Vx5BPhY0KAxa3nrB_wQQ==/split_lib_slice_0_apk.apk", zip file "/data/app/com.self.zsp.dfs-8-
Vx5BPhY0KAxa3nrB_wQQ==/split_lib_slice_1_apk.apk", zip file "/data/app/com.self.zsp.dfs-8-
Vx5BPhY0KAxa3nrB_wQQ==/split_lib_sl

com.fr.android.platform.utils.http.IFNetworkHelper.loadJSONDataAsyncWithWaitDialog(IFNetworkHelper.java:189)
分析

路径下找不到指定类,通因构建路径问题致。

解决

类名以字符串形式标识,可信度较低。调Class.forName("")、Class.findSystemClass("")、Class.loadClass("")等时找不到类名将报错。

  • 找不到的Class是系统Class时或为系统版本兼容、厂家Rom兼容问题。找对应设备尝试重现,更换API或自实现Class替代。
  • 找不到的Class是应用自由Class(含第三方SDK的Class)。反编译查对应apk真缺该Class否,再进行定位,这种往往发生在:
    • 所找Class被混淆,存但名变;
    • 所找Class未被打入Dex,确实不存在。或自己疏忽,或编译环境冲突;
    • 所找Class确实存在,但Classlorder找不到该Class。通因Classloder是自实现(插件化应用常见)。
建议

所找Class是系统Class时或为系统版本兼容、厂家Rom兼容问题且场景Android 9.0 (Pie)(限明文流量网络请求,系统禁非加密流量请求)时设compileSdkVersiontargetSdkVersion为27及以下即可。

猜你喜欢

转载自blog.csdn.net/zsp_android_com/article/details/87710486
pie