Android 12 预览版带给我们的1234

image

对于每个版本,我们都致力于使操作系统更智能,更易于使用和更好地执行,并以隐私和安全为核心。在Android 12中,我们还致力于为您提供新工具,以为用户打造出色的体验。首先从兼容的媒体转码之类的东西开始,这可以帮助您的应用使用最新的视频格式(如果您尚不支持它们),以及轻松地将丰富的内容(例如图像和视频)复制/粘贴到您的应用中。我们还将添加隐私保护并优化性能,以保持应用程序的响应速度。除了我们在Android 12中所做的工作外,本月晚些时候,我们还将在另一个重要工具上分享更多信息,该工具可帮助您更轻松地创建出色的用户体验:Jetpack Compose,这是我们用于构建本机UI的现代工具包。

开始

对的,上面是由Android开发者:工程副总裁Dave Burke发布的博客部分内容,从上得知几个关键因素:

  • 隐私
  • 安全
  • 新工具,新体验
    对于用户来讲会有新体验,更隐私更安全,对于我们开发工作者来讲,有新工具。那么这些新的东西都具体体现在哪些方面呢?下面由我带着大家学习一番。

WebView 加入SameSite Cookie

Android的WebView组件基于Chromium,Chromium是支持Google Chrome浏览器的开源项目。而在Chrome浏览器加入SameSite之后,现在又加入到了Android 12 的WebView中, SameSite Cookie可以提供更高的安全性和隐私性,并为用户提供更高的透明度和控制力,具体什么意思呢?请看大佬的文章,它解释的很清楚,Cookie 的 SameSite 属性

备份限制

为了保护个人应用程序的数据,Android 12更改了该adb backup命令的默认行为,于是我在Android 12上试了一下下,如图

image

第一步
获取已安装的应用程序列表

第二步
备份我的应用com.zzy.flutter_to_find_out

第三步
备份数据

请看细节
WARNING: adb backup is deprecated and may be removed in a future release
意思是该功能会被删除弃用,只是现在还没有。但官方描述又这么讲:如果您的测试或开发工作流程依赖于应用程序数据adb backup,您现在可以通过在应用程序的清单文件中将设置android:debuggable 为true,来选择导出应用程序的数据,且要注意上线后要改为false来保证应用数据的安全。

android:exported 必须显式声明

android:exported 是Android中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的一个属性,作用:是否支持其它应用调用当前组件,默认值:如果包含有intent-filter时为true; 没有intent-filter时为false,具体就不说明了,都是重复的知识。如果应用没有为android:exported需要的时间声明值,Logcat将提供以下错误消息:

Targeting S+ (version 10000 and above) requires that an explicit value for \
android:exported be defined when intent filters are present

更安全地处理Intent

为了更加安全地处理PendingIntent,Android 12要求应用为每个PendingIntent显式声明一个可变性标志,即FLAG_MUTABLE或FLAG_IMMUTABLE,解释下:

  • PendingIntent.FLAG_MUTABLE 可变、Android 12中新增的标志,作用是让Intent 在 send 的时候可更改
  • PendingIntent.FLAG_IMMUTABLE 不可变、Android 6.0 中添加的标志,作用是让Intent 在 send 的时候不可更改
    如果应用创建一个PendingIntent对象时未设置任何可变性标志,则系统将抛出 IllegalArgumentException,并且Logcat中将显示以下消息:
PACKAGE_NAME: Targeting S+ (version 10000 and above) requires that one of \
FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if \
some functionality depends on the PendingIntent being mutable, e.g. if \
it needs to be used with inline replies or bubbles.

尽可能创建不可变PendingIntent

val pendingIntent = PendingIntent.getActivity(applicationContext,
        REQUEST_CODE, intent,
        /* flags */ PendingIntent.FLAG_IMMUTABLE)

那说明时候用可变呢?

  • 通知中有直接回复的动作时需要使用
  • 使用气泡中的PendingIntent时 ,气泡是什么?请看链接:https://developer.android.com/guide/topics/ui/bubbles
    如果应用创建了可变PendingIntent对象,则强烈建议使用明确的意图并填写 ComponentName。这样,每当另一个应用程序调用PendingIntent并将控制权传递回你的应用程序时,你的应用程序中的同一组件终将会启动。

前台服务启动限制

前台服务是应用程序管理某些用户任务的重要方式,但是如果过度使用,它们可能会影响性能甚至导致应用程序终止,除少数特殊情况外,Android 12的应用程序将无法在后台运行时启动前台服务。如果应用程序在后台运行时尝试启动前台服务,则会发生异常(少数特殊情况除外)。那么少数例外是什么呢?答:
JobScheduler加入新的api,setExpedited(true)即可,但这并不是前台服务,而是可以在不考虑节电或节电等功耗限制的情况下立即运行。


image

无法从服务或广播接收者创建通知蹦床

当用户点击通知时,最终会启动与用户交互的应用组件(Activity、Service、Broadcast等)。这个应用程序组件被称为通知蹦床。但Android 12 以后将无法从服务或广播中启动Activity,看似是个坏消息,其实是为了提高用户体验,牺牲开发的行为。以后就只能直接绑定Activity,无法通过服务或广播启动,如果你想启动Activity,那就直接绑定Activity得了。

用于接收内容的统一API

开发者的福音:Android 12引入了新的统一API,可让您从任何可用来源(剪贴板,键盘或拖放)接收丰富的内容。具体效果看下该图:
[图片上传失败...(image-f959fe-1614908653264)]
可以拖动图片到聊天中,有点像罗老师掌舵的锤子,当年炙手可热的一步app,锤子一步app将最近添加/使用的图片、文件和剪切板内的文字集合在屏幕顶部,锤子一步app将常用应用和联系人集中于屏幕侧边,通过拖拽即可将信息发送至应用或联系人。就是这样的一个功能,Android 12来了,准备好了吗?希望下次Android 13可以上大爆炸(偷笑)
具体如何使用Api呢?请看链接 https://developer.android.com/about/versions/12/features/unified-content-api

兼容的媒体转码

Android 12可以自动将设备上记录的HEVC(H.265)和 HDR(HDR10和HDR10 +)视频转码为AVC(H.264),该格式与标准播放器广泛兼容。当现代编解码器可用时,这可以利用它们,而不会牺牲与旧应用程序的兼容性。
有关更多详细信息
请参见 兼容的媒体转码

AVIF图像支持

Android 12引入了对使用AV1图像文件格式(AVIF)的图像的支持。AVIF是用于使用AV1编码的图像和图像序列的容器格式。它利用了来自视频压缩的帧内编码内容。与JPEG等较旧的图像格式相比,这可以显着提高相同文件大小的图像质量。要深入了解这种格式的优势

请参阅Jake Archibald的博客文章

从音频产生触觉效果

Android 12应用程序可以使用手机的振动器从音频会话中生成触觉反馈。这为更身临其境的游戏和音频体验提供了机会。例如,触觉增强的铃声可以帮助识别呼叫者,或者驾驶游戏可以模拟崎terrain地形的感觉。
有关 更多信息
请参见HapticGenerator参考文档

对动画GIF和WebP的本机ImageDecoder支持

在Android 12中,NDK ImageDecoderAPI已扩展为可以解码来自动画GIF和动画WebP文件格式的图像中的所有帧和定时数据。在Android 11中引入该API时,该API仅从这些格式的动画中解码出第一张图像。

使用ImageDecoder而不是第三方库来进一步减小APK的大小, 并从与安全性和性能有关的将来更新中受益。
有关API的更多详细信息,
请参阅API参考GitHub上的示例

总结

不负众望,Android 12终将听取用户的改进建议,不断做出改进及优化,对开发或用户来说都是一次不错的升级体验,上面内容是本人对Android 12比较突出的知识的汇聚,内容主要来自官方文档,如果错误的描述,欢迎提出指教,小的肯定会悉心接受。感谢🙏。

参考

https://developer.android.com/about/versions/12

https://android-developers.googleblog.com/2021/02/android-12-dp1.html

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

推荐阅读更多精彩内容