笔记(24)安卓各版本特性简述

4.4 特性

  • 1.webview与js交换可以使用@JavascriptInterface注释接口方法,通过webveiw向js中注入对象调用该方法,修复4.4以下安全漏洞风险

5.0 新特性—2014年(Lollipop)

  • 1.全新的Material Design设计风格
  • 2.支持64位ART虚拟机。

1.放弃了之前一直使用的Dalvik虚拟机,改用了ART虚拟机,实现了真正的跨平台编译。
Android内存优化(一)Dalvik虚拟机和ART虚拟机对比

  1. 相较于普通式和折叠式Notification需要拉下通知中心才可以查看的交互,悬挂式直接显示在屏幕上方,并且焦点不变,仍然在用户操作的界面上,不会打断用户的操作,过几秒会消失。
  2. Android 5.0 支持对Notification设置显示等级的能力。* 引入更加灵活的Toolbar,取代ActionBar。
  • 5.支持多种设备(电视、平板、手表)

6.0 新特性—2015年(Marshmallow)

  • 1.【重点】新增运行时权限管理。(动态请求权限)

当targetSdkVersion >= 23时
分位Normal Permissions和Dangerous Permissions。
ActivityCompat.checkSelfPermissions()请求,低于6.0的版本,该方法默认返回值为PackManager.PERMISSION_GRANTED,已授权状态。
onRequestPermissionsResult()处理权限回调结果。
弹窗如果用户选择了『不在询问』,下次则不会再次弹框,而是直接处理拒绝后的逻辑。

  • 2.统一支付标准Android Pay。
  • 3.指纹支持。
    1. Doze电量管理。
      手机静止不动一段时间后,会进入Doze电量管理模式,提高续航时间。
  • 5.APP Links(比如说网盘)

加强了软件间的关联,支持点击链接跳转到对应的App(todo:scheme调起???)

  • 6.Now on Tap(超链接)
    长按Home键激活Now on Tap,他会识别当前屏幕上的内容并创建Now卡片。

7.0 新特性—2016年(Nougat)

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

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

(1)在AndroidManifest.xml清单文件中注册provider

<manifest>
  ...
  <application>
    ...
    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="${applicationId}.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/mypaths" />
    </provider>
    ...
  </application>
</manifest>
(2)res/xml中定义对外暴露的文件夹路径,新建mypaths文件:
<paths>
//私有目录
    <files-path name="files-path" path="." />
    <cache-path name="cache-path" path="." />
//外部存储
   <external-path  name="external_storage_root"  path="." />
//外部存储私有包名目录
    <external-files-path name="external_file_path" path="." />
    <external-cache-path name="external_cache_path" path="." />
    <root-path name="root-path" path="." />
</paths>
name:一个引用字符串。
path:文件夹“相对路径”,完整路径取决于当前的标签类型。
<files-path/> 代表内部私有存储context.getFilesDir()
<cache-path/> 代表内部私有缓存目录context.getCacheDir()
<external-path/> 代表外部存储目录Environment.getExternalStorageDirectory()---Android 10.0以后不准直接创建
<external-files-path>代表外部私有context.getExternalFilesDirs()---Android 10.0以后推荐
<external-cache-path>代表外部私有缓存目录getExternalCacheDirs()
<root-path/> 代表设备的根目录new File("/");
  • 2.多窗口模式(分屏或小窗)
  • 3.Data Saver(省流)
  • 4.改进的java8支持(支持lambda表达式)
  • 5.自定义壁纸
  • 6.快速回复(通知可以快速回复)
  • 7.DayDreamVR支持
  • 8.后台省电
  • 9.快速设置(下拉菜单可以自定义选项)
  • 10.Unicode9支持更多表情及符号
  • 11.Google Assistant

8.0 新特性—2017年(Oreo)

  • 1.【重点】通知中心

所有通知都必须分到一个渠道,即新增NotificationChannel。

  • 2.画中画(PIP)支持

一种特殊的多窗口模式,常用于视频播放。

  • 3.自适应启动器图标

桌面icon在不同的设备型号上显示为不同的形状。

Version API
Google 安全浏览服务
HTML5 Geolocation API
Renderer Importance API
Termination Handling
选择停用指标收集

  • 5.权限单个申请
    之前对于隐私权限只要申请一个就会将其在的权限组全部通过,android 8.0以后申请单个只给单个;
  • 6.后台执行限制

后台service限制。
广播限制:除了有限的例外情况,应用无法使用清单注册隐式广播。

  • 7.后台位置信息限制
    为降低耗电量,后台应用检索用户当前位置信息的频率会得到次数限制。
  • 8.其它:自动填充框架、自动调整TextView的大小、多显示器支持

9.0 新特性—2018年(Pie)

  • 1.网络安全校验,禁止明文传输。
可以通过清单文件配置network_security_config.xml文件,允许明文http请求
<application android:networkSecurityConfig="@xml/polyv_network_security_config">
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>
  • 2.全面支持全面屏

通过DisplayCutout类可以确定非功能区域的位置和形状,这些区域不应显示内容。

  • 3.动画
    引入AnimatedImageDrawable类,用于显示GIF和WebP动画图像。
  • 4.机器学习
  • 5.HDR VP9视频、HEIF图像压缩和Media API
  • 6.利用Wi-Fi RTT进行室内定位
  • 7.隐私权限变更(新增传感器、wifi等权限限制)
  • 8.对使用非SDK接口的限制

10.0 新特性—2019年(Q)

image.png
  • 5G网络支持。
  • 系统级的深色主题

用户转至“设置”进行相应设置或开启“省电模式”即可激活新的系统级深色主题。这会将系统界面更改为深色,并为支持深色主题的应用启用深色主题。您可以为应用构建自定义深色主题,也可以选择使用新的 Force Dark 功能,让系统根据现有主题动态创建深色版本。

  • 分区存储。分区存储将外部存储分成两部分。
    您的应用是否需要获得存储空间访问权限,取决于应用是仅访问自己的媒体文件还是会访问由其他应用创建的文件。访问自己的媒体文件不需要存储相关权限,包括 MediaStore.Downloads 集合中的文件,访问其他应用创建文件还是需要申请权限。
    私有.png

    外部.png

分区存储将外部存储分成两部分:
(1)App-specific directory (沙盒目录),私有存储
APP只能在Context.getExternalFilesDir()目录下通过File的方式创建文件,APP卸载的时候,这个目录下的文件会被删除;无法通过File的方式在其他路径创建文件。
(2)Public Directory 公共目录,外部存储
公共目录包括:多媒体公共目录(Photos, Images, Videos, Audio)和下载文件目录(Downloads)。
APP可以通过MediaStore多媒体或者SAF(System Access Framework)的方式访问其中的文件。APP卸载后,文件不会被删除。

  • android.preference 库已弃用,开发者应该改为使用 AndroidX preference 库
  • 支持可折叠设备。
  • 手势导航。全面屏手势操作。
  • 智能回复。通过机器学习预测你在回复消息时可能会说些什么。
  • 用户隐私。给用户更多应用程序控制权。提供仅这一次、应用使用时授权等选择。
  • ART优化。添加了一种垃圾回收机制,节省垃圾回收的时间,帮助在低版本设备上顺畅运行。
  • 机器学习更新。


    所有应用.png

    以10为目标平台的应用.png

相关:
https://developer.android.google.cn/about/versions/10/behavior-changes-all?hl=zh-cn


11.0 新特性—2020年(R)

  • 1.存储机制更新,强制分区存储。(应用只能访问系统应用和应用本身的文件,如要访问全部文件,则需要更多权限)
  • 2.权限变化

1.单次权限授权
从Android 11开始,每当应用请求与位置信息、麦克风或摄像头相关的权限时,面向用户的权限对话框会包含仅限这一次选项。如果用户在对话框中选择此选项,系统会向应用授予临时的单次授权。
2.请求位置权限(位置权限不能和别的权限同时请求,并且建议前台位置权限和后台位置权限分开请求)
3.软件包可见性(限制app不去访问别的应用的包名及内容,如果需要访问则可以在manifest文件中添加对应应用的query)
4.前台服务类型(在前台服务要使用摄像头和麦克风需要再service中添加对应的camera和microphone)
5.权限自动重置(长时间未使用,则重置权限)。
如果应用以Android 11或更高版本为目标平台并且数月未使用,系统会通过自动重置用户已授予应用的运行时敏感权限来保护用户数据

  • 3.读取手机号
    如果你是通过TelecomManager的getLine1Number方法,或TelephonyManager的getMsisdn方法获取电话号码。那么在Android 11中需要增加READ_PHONE_NUMBERS权限,使用其他方法不受限。
  • 4.自定义toast不能在应用处于后台的时候弹出
  • 5.APK签名变更(仅通过v1验证的应用无法在andoird11以上版本安装或更新)
  • 6.异步任务AsyncTask已不建议使用,建议使用kotlin协程
  • 7.状态栏高度(使用WindowMetrics来获取状态栏高度)


    所有应用.png

相关:
https://blog.csdn.net/ym4189/article/details/126466755?spm=1001.2014.3001.5506
https://developer.android.google.cn/about/versions/11/behavior-changes-11?hl=zh-cn


12.0 新特性—2021年(S)

影响所有App的行为变更

1.应用启动画面。

从Android 12 系统开始,所有应用的冷启动和温启动期间,系统会使用新的 SplashScreen API 来启动应用启动动画。SplashScreen相关API的引入影响在Andorid 12设备上运行的所有应用。对于应用开发者来说,无论你的应用targetSdkVersion 版本是多少,均需要进行SplashScreen的适配工作。
》若你的应用原本使用 android:windowBackground 实现了启动页,会被默认的启动页样式替换。
》若你的应用使用了一个额外的 Activity 作为启动页,则会先弹出系统默认启动页,再弹出你实现的启动页 (用户可能会感受到两次闪屏效果)。

2.麦克风和摄像头权限开关(下拉菜单新增麦克风和摄像头权限开关)
3.activity生命周期优化

影响目标API级别为Android12的App的行为变更

1.更安全的组件导出
2.PendingIntent可变性(需要指定FLAG)
3.前台服务启动限制
4.精确的闹钟权限
5.通知trampoline限制
6.大致位置(区分精确位置和大致位置)

粗略位置: 精确到2平方公里的位置值,请求 ACCESS_COARSE_LOCATION 权限可以获得。
精确位置: 精确到50米以内的位置值,请求 ACCESS_FINE_LOCATION 权限可以获得。

7.应用休眠

Android 11引入了应用休眠机智,如果用户有几个月没有与应用交互,那么系统会将应用置于休眠状态,Android 12扩展了应用休眠机智:
》Android 11:重置已授予的运行时敏感权限;
》Android 12:重置已授予的运行时敏感权限;无法从后台运行任务;无法接受推送通知;应用缓存文件会被删除。

8.自定义通知。系统规范了自定义通知的外观和行为


所有应用.png

以12为目标平台的应用.png

相关:
https://xiaxl.blog.csdn.net/article/details/123604094?spm=1001.2014.3001.5502
https://blog.csdn.net/ym4189/article/details/126489566?spm=1001.2014.3001.5506
https://developer.android.google.cn/about/versions/12/behavior-changes-12?hl=zh-cn


13.0 新特性—2022年(Tiramisu)

  • 1.细分媒体权限(图片、视频、音频)

将 READ_EXTERNAL_STORAGE 细分为IAMGES、VIDEO、AUDIO权限(若设置 targetSdk>=33 则此项必需适配!)

  • 2.WebView部分方法废弃

废弃setAppCacheEnabled与setForceDark方法;(若设置 targetSdk>=33 则此项必需适配!)

  • 3.注册静态广播时,需设置对其他应用的可见性
    若对其他应用可见,广播注册时设置:Context.RECEIVER_EXPORTED
    若仅应用内使用,广播注册时设置:Context.RECEIVER_NOT_EXPORTED


    image.png
  • 4.新增运行时通知权限:POST_NOTIFICATIONS

  • 5.针对附近 Wi-Fi 设备的新运行时权限。
    从Android 13开始,Android系统新增了NEARBY_WIFI_DEVICES权限,将原有的ACCESS_FINE_LOCATION权限 与wi-fi能力使用进行了区分(避免早先开发者使用Wi-Fi能力时,需要请求用户位置权限,从而引起用户的歧义)。

  • 6.剪切板内容隐藏
    (可以使用PersistableBundle.putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true)来隐藏剪切板中的隐私信息)


    image.png
  • 7.身体传感器后台权限(后台访问身体传感器时,除了请求现有的BODY_SENSORS还需要BODY_SENSORS_BACKGROUND)

  • 8.非SDK接口限制

官方从 Android 9(API 级别 28)开始,逐步开始对应用使用的非 SDK 接口实施了限制。
如果你的APP通过引用非 SDK 接口或尝试使用反射或 JNI 来获取句柄,这些限制就会起作用。官方给出的解释是为了提升用户体验、降低应用崩溃风险。

  • 9.前台服务管理器(通知栏新增前台服务管理器)


    image.png
所有应用.png

以 Android 13 或更高版本为目标平台的应用.png

相关:
https://blog.csdn.net/xiaxl/article/details/127493917?spm=1001.2014.3001.5506
https://developer.android.google.cn/about/versions/13/behavior-changes-13?hl=zh-cn


14.0 新特性—2023年(Beta 版)

  • 默认拒绝设定精确的闹钟
  • 最低可安装的目标 API 级别23,targetSdkVersion lower than 23
  • 动态注册广播registerReceiver 需要指定导出行为

谷歌官方提供了一个 registerReceiver(BroadcastReceiver receiver, IntentFilter filter, int flags) API,flags 参数传入 Context.RECEIVER_EXPORTED(支持导出) 或 Context.RECEIVER_NOT_EXPORTED(不支持导出)

  • 无障碍非线性字体放大至 200%
  • 前台服务类型是必填项
  • OpenJDK 17 更新,Java 17 语言支持
所有应用.png

以14为目标的平台的应用.png

相关:
https://juejin.cn/post/7308434314777772042
https://developer.android.google.cn/about/versions/14/behavior-changes-all?hl=zh-cn#media-owner-package-names
安卓14.0Beta 版

安卓各个版本特性-官网

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容