Android 版本和API 对关系
| 版本号 | API级别 | Version_code |
|---|---|---|
| Android 4.4 | 19 | KITKAT |
| Android 5.0 | 21 | Lollipop |
| Android 6.0 | 23 | M |
| Android 7.0 | 24 | N |
| Android 8.0 | 26 | O |
| Android 9.0 | 28 | P |
| Android 10.0 | 29 | Q |
Android个版本App适配要点
Android 6.0
- 运行时权限
- 取消支持ApacheHTTP客户端,改用HttpURLConnection
- 低耗电模式
Android 7.0
- FileProvider 对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。
要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类 2. V2签名
Android 8.0
-
自适应启动器图标
-
后台执行限制
- 用进入已缓存状态时,如果没有活动的组件,系统将解除应用具有的所有唤醒锁。
- 应用无法使用清单注册隐式广播(一种不专门针对该应用的广播)然可以在运行时注册这些广播,并且可以使用清单注册专门针对它们的显式广播。
- 在后台不能startservice(),必须通过startForegroundService启前台服务
- startForegroundService方法调用后,记得5秒钟内调用startForeground方法(配置通知栏)否则系统将停止服务并声明此应用为ANR
-
这些处于后台的服务限制。什么情况下应用被视为处于前台?
- 可见Activity(不管该Activity已启动还是已暂停)
- 台服务
- 一个前台应用已关联到该应用(不管是通过绑定到其中一个服务,还是通过使用其中一个内容提供程序)
-
通知设置渠道组,也支持通知角标
-
悬浮窗限制
-
多窗口,画中画
-
快捷方式
-
最大屏幕纵横比
Android 9.0
- 对非SDK 接口的限制
- 使用前台服务,需在xml中声明FOREGROUND_SERVICE权限
- Build.serial 标识符的应用必须请求READ_PHONE_STATE权限,然后使用 Android 9 中新增的新 Build.getSerial() 函数。
- 应用在后台,不能访问麦克风、摄像头,限制访问传感器
- 默认情况下已停用明文支持,是不允许使用http请求,要求使用https.
Android 10.0
- 分区存储.应用在沙盒中,就是应用专属文件夹,并且访问这个文件夹无需权限
- 后台定位需申请ACCESS_BACKGROUND_LOCATION权限
- 设备唯一标识符。应用必须具有 READ_PRIVILEGED_PHONE_STATE 签名权限才能访问设备的不可重置标识符(包含 IMEI 和序列号)