Android api 22升级到api28 遇到的问题汇总

本文总结了从Android API 22升级到28过程中遇到的各种问题,包括权限控制、HTTP请求限制、全屏适配、第三方库冲突等,并提供了详细的解决办法。适配过程中需注意TargetSdkVersion提升、第三方依赖更新和权限管理,确保应用在不同Android版本上的兼容性。
摘要由CSDN通过智能技术生成

背景

         应国家电信终端产业协会要求,自2019年5月1日起,华为应用市场新上架应用应基于Android8.0(API Level 26)及以上版本开发。自2019年8月1日起,现有应用的更新应基于 Android8.0(API Level 26)及以上版本进行开发,安卓绿色联盟提醒广大应用开发者请提前做好准备,及时适配。
          这只是华为应用市场的一个提示,真实情况也是在今年5月份过后提交到各大应用市场发版的应用都会受到这样一份提醒,同时对于5月份之后的新APP上线发版都会被拒绝上线。

适配前的准备

           在计划适配到最高哪个版本之前需要确认和注意的有:

  1. 必须要将TargetSdkVersion提到26或以上版本
  2. 确认项目的影响范围(特别是古老的项目--别问我为啥要这么说)做好周期的评估
  3. 对于Android studio 开发工具来说升到最新版本有助于提升开发效率
  4. gradle 下载可以去官网(http://services.gradle.org/distributions/) 解压到本地  省时省力 方法很简单就不多言
  5. 第三方依赖需要提前做好调研,是否有最新的包同步更新,特别是一些小的三方功能组件,很可能作者已经
    停更了,这种情况就需要重写相应的功能,比较麻烦。因此在用三方小的组件库的时候一定要调研好。
  6. 更新一些大厂的基础库的时候,如推送、分享、地图、OCR、支付等等功能的时候要特别注意,非万不得已
    不要影响线上流程和功能。
  7. 如果是在api 22 基础上升到26或者更高版本,需要做好权限的控制,最直接的方式就是把清单文件中对应的危险权
    限梳理出来,根据功能进行权限申请(具体的权限工具类可以参考:https://github.com/pimian/androidPermission.git
  8. 对于api版本跨度较大的升级处理,最好是去官方网站上去看看每个api版本对应的升级特性都有哪些。

 开始适配

  1. 环境配置:

    SDK依赖直接升到28

    gradle 5.1.1

    build gradle 3.4.1

  2. 修改完之后直接编译查看编译器报错

    build.gradle  一般依赖报错解决方案如下

    testCompile ---》testImplementation

    compile ---》implementation

    androidTestCompile ---》androidTestImplementation
    如果有跨模块引用 compile ---》api

遇到报错问题:

  1. references to other resources are not supported by build-time PNG generation. 
     

    问题原因:

    添加多密度矢量图形的好处是使用矢量图代替位图可以减小 APK 的尺寸,因为可以针对不同屏幕密度调整同一文件的大小,而不会降低图像质量。对于不支持矢量图的较早版本 Android 系统,Vector Asset Studio 可在构建时针对每种屏幕密度将矢量图转换为不同大小的位图。

     

    解决方案:

    build.gradle 文件添加一条声明:

    android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
     

  2. java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted
     

    问题原因:

    Android 9.0是默认禁止所有http请求的,需要在代码中设置如以下代码才可以正常进行网络请求

     

    解决方案:

    方案 ①

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值