Android 5.0-10.0 版本更新笔记

2017-11-09  本文已影响0人  silencefun

update time :2020年3月6日 12:41:23

一、5.0 新特性

Android 5.0 Lollipop开发代号:Android L
2014年6月25日于Google I/O 2014大会上发布Developer版(Android L),
2014年10月15日正式发布且名称定为Lollipop“棒棒糖”。

Material Design組件

二、6.0新特性

2015年5月28日举行。在发布会上代号为“Marshmallow(棉花糖)”的安卓6.0系统正式推出
6.0 API
● 应用权限管理
6.0 应用权限管理成为系统级的功能,
● SD卡可能和内置存储“合并”
● Android Pay
● 原生指纹识别认证Fingerprint Support(指纹支持)。

三、7.0新特性

Android7.0系统的初次公开亮相于2016年5月18日的Google I/O大会。 7.0 主要新特性概述7.0 API
● 多窗口模式(分屏模式)
● Data Saver(流量保护)
●通知消息快捷回复
● 通知消息归拢
● 后台省电

● 兼容问题
Android 7.0 禁止在应用外部公开 file:// URI,所以我们必须使用 content:// 替代。那我们就需要应用到FileProvider。应用场景就是:拍照图片的保存路径、升级时apk的下载路径。

Android N 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护.

四、8.0新特性

2017年8月22日,谷歌正式发布了Android 8.0的正式版,其正式名称为:Android Oreo(奥利奥)。
2017年12月5日谷歌正式发布了Android 8.1的正式版。

适配
0.通知渠道
在Android 8.0中所有的通知都需要提供通知渠道,否则,所有通知在8.0系统上都不能正常显示。
1.透明窗口不允许锁定屏幕旋转
窗口透明 + 固定屏幕方向 会抛出下面的异常:

   Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

2.8.0中新增了一种悬浮窗的窗口类型,TYPE_APPLICATION_OVERLAY,如果应用使用SYSTEM_ALERT_WINDOW权限并且尝试使用在其它应用和系统窗口上方显示提醒窗口,都会显示在TYPE_APPLICATION_OVERLAY窗口类型的下方。

 TYPE_PHONE
 TYPE_PRIORITY_PHONE
 TYPE_SYSTEM_ALERT
 TYPE_SYSTEM_OVERLAY
 TYPE_SYSTEM_ERROR
 TYPE_TOAST

如果该应用的targetSdkVersion >= 26,则应用只能使用TYPE_APPLICATION_OVERLAY窗口类型来创建悬浮窗。

五、9.0新特性

● 适配异形全面屏
● 黑暗模式
● 非 SDK 接口访问限制
● GPS定位之外的WiFi定位
●Material Design迎来2.0时代
●仪表板 Android的仪表板显示显示你花了多少时间使用手机
适配
1.限制非Activity场景启动Activity
从Android P开始,只有当Intent flag中指定了FLAG_ACTIVITY_NEW_TASK,才允许在非Activity场景启动Activity。如果不在Intent添加FLAG_ACTIVITY_NEW_TA

2.弃用 Apache HTTP Client
在 Android 9.0 中移除了所有 Apache HTTP Client 相关的类,因此我们的应用或是一些第三方库如果使用了这些类,就会抛出找不到类的异常
需要继续使用 Apache HTTP Client ,可通过以下方法进行适配:

在 AndroidManifest.xml 中添加以下内容:

<uses-library android:name ="org.apache.http.legacy"android:required="false"/>

或者在应用中直接将 Apache HTTP Client 相关的类打包并进行引用
3.设备识别码
通过Build.SERIAL不再能够获取到真实数据,Build.serial:unknown,需要通过Build.getSerial()获取。同时需要用户授权READ_PHONE_STATE权限。

  1. 强制执行 FLAG_ACTIVITY_NEW_TASK 要求

在 Android 7.0(API 级别 24)之前,若开发者需要通过非 Activity context 启动 Activity,就必须设置 Intent 标志 FLAG_ACTIVITY_NEW_TASK,否则会启动失败并抛出以下异常

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

但这个要求在更新 Android 7.0 以后由于系统问题被临时取消了,开发者即使不设置标志也可以正常启动 Activity。而在 Android 9.0 中官方修复了这个问题,这个要求重新开始强制执行,因此开发者在适配 Android 9.0 时需要注意这个问题。
5.限制 HTTP 网络请求

Android 9.0 中限制了 HTTP(明文传输)网络请求
Android 6.0 中引入了是否允许网络使用明文传输的配置:

    <application android:usesCleartextTraffic=["true" | "false"]>

原来默认为 true,但在 Android 9.0 中默认值改为了 false,因此将配置手动设为 true 即可解决明文传输被限制的问题

六、10.0新特性

2019.09 Android Q
●.可折叠设备(更改了resizeableActivity) 清单属性的工作方式);
●.5G网络,提速降延迟;
●.系统级深色主题;
●.新的设备面板;
●.共享快捷方式;
●剪切板隐私限制

适配
1.用户存储权限的变更
Android Q 在外部存储设备中为每个应用提供了一个“隔离存储沙盒”(例如 /sdcard)。任何其他应用都无法直接访问您应用的沙盒文件。由于文件是您应用的私有文件,因此您不再需要任何权限即可在外部存储设备中访问和保存自己的文件。此变更可让您更轻松地保证用户文件的隐私性,并有助于减少应用所需的权限数量。
2.手机共享路径

读取其他APP创建的共享文件,例:相册、屏幕快照 等,则需要申请READ_EXTERNAL_STORAGE权限:
照片:存储在 MediaStore.Images 中。
视频:存储在 MediaStore.Video 中。
音乐:存储在 MediaStore.Audio 中。

上一篇下一篇

猜你喜欢

热点阅读