美文网首页Android收藏集适配
android targetSDK 从8.0升级到9.0

android targetSDK 从8.0升级到9.0

作者: 紫阚 | 来源:发表于2019-05-18 14:52 被阅读73次

    build.gradle里的targetSdkVersion从 26增加到 28;下面是我们遇到一些兼容性问题

    1. http网络请求崩溃
      java.io.IOException: Cleartext HTTP traffic to 包名 not permitted
      原因分析:
      android 9.0默认使用https网络请求,http请求需要手动打开
      解决办法:
      AnroidManifest.xml中的application显示设置
      <application android:usesCleartextTraffic="true">

    2. android 8.0透明Activity设置方向崩溃
      Only fullscreen opaque activities can request orientation
      原因分析:
      我们项目大部分都是锁垂直方向。然而8.0的系统在透明主题时,如果请求方向,直接抛出崩溃
      解决办法:
      8.0透明activity不锁死方向,系统沿用上个页面的方向
      比较优雅的解决办法,不改业务代码https://blog.csdn.net/starry_eve/article/details/82777160

    这个要特别注意第三方,比如友盟分享的中转页,也是锁死方向导致崩溃的,要一一排查

    1. 前台线程权限崩溃
      9.0需要在manifest里声明前台线程权限,才能使用
      <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
      前台线程注意区分版本
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                context.startForegroundService(starter);
            } else {
                context.startService(starter);
            }
    

    以下是未遇到,但是会涉及到的问题,要排查

    1.黑名单api问题
    使用google工具veridex扫描,不要对黑名单里的属性进行反射调用。
    深灰名单里,发现国产第三方工具、极光、tinker都有用到,目前暂无影响
    项目里扫描后没有黑名单反射

    2.加密方式崩溃问题
    The Crypto provider has been deleted in Android P (and was deprecated in Android N), so the code will crash.
    项目里面的加密算法,如果第二个入参指定了crypto provider就要仔细筛查下https://www.jianshu.com/p/ca8c2f4b0ee6

    1. 友盟QQ分享失败的问题
      如果9.0的手机,在target api 28上面,分享qq会失败。
      主要是废弃的apache http库,在9.0里被去掉了,https://developer.umeng.com/docs/66632/detail/94386
      但是现在(2019.5.18)友盟分享qq,在几台9.0的手机上均测试通过。

    相关文章

      网友评论

        本文标题:android targetSDK 从8.0升级到9.0

        本文链接:https://www.haomeiwen.com/subject/hkozaqtx.html