第一步
获取已安装的应用程序列表
第二步
备份我的应用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_IMMUTAB
LE)
那说明时候用可变呢?
-
通知中有直接回复的动作时需要使用
-
使用气泡中的PendingIntent时 ,气泡是什么?请看链接:https://developer.android.com/guide/topics/ui/bubbles
如果应用创建了可变PendingIntent对象,则强烈建议使用明确的意图并填写 ComponentName。这样,每当另一个应用程序调用PendingIntent并将控制权传递回你的应用程序时,你的应用程序中的同一组件终将会启动。
前台服务启动限制
前台服务是应用程序管理某些用户任务的重要方式,但是如果过度使用,它们可能会影响性能甚至导致应用程序终止,除少数特殊情况外,Android 12的应用程序将无法在后台运行时启动前台服务。如果应用程序在后台运行时尝试启动前台服务,则会发生异常(少数特殊情况除外)。那么少数例外是什么呢?答: JobScheduler加入新的api,setExpedited(true)即可,但这并不是前台服务,而是可以在不考虑节电或节电等功耗限制的情况下立即运行。
无法从服务或广播接收者创建通知蹦床
当用户点击通知时,最终会启动与用户交互的应用组件(Activity、Service、Broadcast等)。这个应用程序组件被称为通知蹦床。但Android 12 以后将无法从服务或广播中启动Activity,看似是个坏消息,其实是为了提高用户体验,牺牲开发的行为。以后就只能直接绑定Activity,无法通过服务或广播启动,如果你想启动Activity,那就直接绑定Activity得了。
用于接收内容的统一API
开发者的福音:Android 12引入了新的统一API,可让您从任何可用来源(剪贴板,键盘或拖放)接收丰富的内容。
可以拖动图片到聊天中,有点像罗老师掌舵的锤子,当年炙手可热的一步app,锤子一步app将最近添加/使用的图片、文件和剪切板内的文字集合在屏幕顶部,锤子一步app将常用应用和联系人集中于屏幕侧边,通过拖拽即可将信息发送至应用或联系人。就是这样的一个功能,Android 12来了,准备好了吗?希望下次Android 13可以上大爆炸(偷笑) 具体如何使用Api呢?请看链接 developer.android.com/about/versi…
兼容的媒体转码
Android 12可以自动将设备上记录的HEVC(H.265)和 HDR(HDR10和HDR10 +)视频转码为AVC(H.264),该格式与标准播放器广泛兼容。当现代编解码器可用时,这可以利用它们,而不会牺牲与旧应用程序的兼容性。 有关更多详细信息
请参见 兼容的媒体转码
AVIF图像支持
Android 12引入了对使用AV1图像文件格式(AVIF)的图像的支持。AVIF是用于使用AV1编码的图像和图像序列的容器格式。它利用了来自视频压缩的帧内编码内容。与JPEG等较旧的图像格式相比,这可以显着提高相同文件大小的图像质量。要深入了解这种格式的优势
从音频产生触觉效果
Android 12应用程序可以使用手机的振动器从音频会话中生成触觉反馈。这为更身临其境的游戏和音频体验提供了机会。例如,触觉增强的铃声可以帮助识别呼叫者,或者驾驶游戏可以模拟崎terrain地形的感觉。 有关 更多信息
对动画GIF和WebP的本机ImageDecoder支持
在Android 12中,NDK ImageDecoderAPI已扩展为可以解码来自动画GIF和动画WebP文件格式的图像中的所有帧和定时数据。在Android 11中引入该API时,该API仅从这些格式的动画中解码出第一张图像。
使用ImageDecoder而不是第三方库来进一步减小APK的大小, 并从与安全性和性能有关的将来更新中受益。 有关API的更多详细信息,
总结
–
不负众望,Android 12终将听取用户的改进建议,不断做出改进及优化,对开发或用户来说都是一次不错的升级体验,上面内容是本人对Android 12比较突出的知识的汇聚,内容主要来自官方文档,如果错误的描述,欢迎提出指教,小的肯定会悉心接受。感谢🙏。
参考
–
developer.android.com/about/versi…
android-developers.googleblog.com/2021/02/and…
最后
======
为了让大家更好的去学习和提升自己,我和几位大佬一起收录整理的 Flutter进阶资料以及Android学习PDF+架构视频+面试文档+源码笔记 ,并且还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料……
这些都是我闲暇时还会反复翻阅的精品资料。可以有效的帮助大家掌握知识、理解原理。当然你也可以拿去查漏补缺,提升自身的竞争力。
如果你有需要的话,可以前往 GitHub 自行查阅。
最后
小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果你需要这些资料, ⬅ 专栏获取
162299735)]
[外链图片转存中…(img-RMWSTcIa-1719162299735)]
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果你需要这些资料, ⬅ 专栏获取