itgoyo / AndroidSummary

12 stars 4 forks source link

Android9.0的兼容问题 #102

Open itgoyo opened 5 years ago

itgoyo commented 5 years ago

主要解决 9.0 的网络问题

客观来看,9.0 兼容好像问题不是很大吧,有些新 APP 一点问题都没有,但是有些比较旧的 APP 就问题比较多了,下面简单写一下解决方法,本文纯属笔记,方便以后查看:

问题一

应对 9.0 版本的网络明暗流量问题

设置一下 application (清单文件里面)

         <application
              android:usesCleartextTraffic="true" 
                    >

问题二

还有 类似这两个报错的时候

            java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/logging/LogFactory;

            Caused by: java.lang.ClassNotFoundException: Didn't find class                
            "org.apache.commons.logging.LogFactory" on path: DexPathList[[zip file 
              "/data/app/com.inno.nestlesuper-
             oPFXtK6GZQsOCWb8lvmj2g==/base.apk"],nativeLibraryDirectories=
               [/data/app/com.inno.nestlesuper-oPFXtK6GZQsOCWb8lvmj2g==/lib/arm, 
             /data/app/com.inno.nestlesuper-oPFXtK6GZQsOCWb8lvmj2g==/base.apk!/lib/armeabi, 
              /system/lib, /vendor/lib]]

这两句

主要问题是 9.0 版本 谷歌大佬不支持这两个网络包了 要自己导进去支持来规避兼容问题,当然你没用到这两个网络包可以直接无视这里了。

我这里用的是 这两个 // 9.0 版本好像不能再使用这两个了

           compile files('libs/httpclient-4.2.5.jar')
           compile files('libs/httpclient-cache-4.2.5.jar')

然后 解决方法如下: 导入一个 commons-logging-api-1.0.4.jar

               compile files('libs/commons-logging-api-1.0.4.jar')

// 还有这个配置

                 android{
                   useLibrary 'org.apache.http.legacy'
                  }

还有一些第三方接入的问题,个人建议都用网络包吧,用实体 jar 久了会出现各种奇奇怪怪的问题,一般官方会给你更新的,记得用最新的就可以了

并不是所有 APP 都会出现这些问题的,就看 APP 是否用到这个网络包吧