Android适配

228 阅读2分钟

Android 版本和API 对关系

版本号API级别Version_code
Android 4.419KITKAT
Android 5.021Lollipop
Android 6.023M
Android 7.024N
Android 8.026O
Android 9.028P
Android 10.029Q

Android个版本App适配要点

参考连接

Android 6.0

  1. 运行时权限
  2. 取消支持ApacheHTTP客户端,改用HttpURLConnection
  3. 低耗电模式

Android 7.0

  1. FileProvider 对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。

要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类 2. V2签名

Android 8.0

  1. 自适应启动器图标

  2. 后台执行限制

    • 用进入已缓存状态时,如果没有活动的组件,系统将解除应用具有的所有唤醒锁。
    • 应用无法使用清单注册隐式广播(一种不专门针对该应用的广播)然可以在运行时注册这些广播,并且可以使用清单注册专门针对它们的显式广播。
    • 在后台不能startservice(),必须通过startForegroundService启前台服务
    • startForegroundService方法调用后,记得5秒钟内调用startForeground方法(配置通知栏)否则系统将停止服务并声明此应用为ANR
  3. 这些处于后台的服务限制。什么情况下应用被视为处于前台?

    • 可见Activity(不管该Activity已启动还是已暂停)
    • 台服务
    • 一个前台应用已关联到该应用(不管是通过绑定到其中一个服务,还是通过使用其中一个内容提供程序)
  4. 通知设置渠道组,也支持通知角标

  5. 悬浮窗限制

  6. 多窗口,画中画

  7. 快捷方式

  8. 最大屏幕纵横比

Android 9.0

  1. 对非SDK 接口的限制
  2. 使用前台服务,需在xml中声明FOREGROUND_SERVICE权限
  3. Build.serial 标识符的应用必须请求READ_PHONE_STATE权限,然后使用 Android 9 中新增的新 Build.getSerial() 函数。
  4. 应用在后台,不能访问麦克风、摄像头,限制访问传感器
  5. 默认情况下已停用明文支持,是不允许使用http请求,要求使用https.

Android 10.0

  1. 分区存储.应用在沙盒中,就是应用专属文件夹,并且访问这个文件夹无需权限
  2. 后台定位需申请ACCESS_BACKGROUND_LOCATION权限
  3. 设备唯一标识符。应用必须具有 READ_PRIVILEGED_PHONE_STATE 签名权限才能访问设备的不可重置标识符(包含 IMEI 和序列号)