项目地址:Github
当我在做 Android 版本适配工作的时候很痛苦,那个时候我在想有没有一个文档,将所有的关于 Android 版本适配资料全部收集起来,这样就不需要在网上东找西找了,这样就能把时间和精力投入适配工作中,每当一个新的 Android 版本发布的时候,这个想法越加强烈,终于在 Android 11 刚发布的时候筹划了这件事情,最终赶在 Android 12 刚发布的时候完成了,整个过程耗时非常漫长,因为我正在不断收集优质的资料,同时我也在不断思考,什么样的适配文档才是大家所需要的,我将适配文档简单划分成了以下几部分:
官方文档
新特性
行为变更
相关资源
适配文章链接
适配框架链接
为什么要把这个做成开源项目?因为我会不断更新,同时欢迎大家如果有好的文章也可以通过 issue 推荐给我,我审核通过之后会放上去,做好一个开源项目需要大家的添砖加瓦,开源是一个互帮互助的过程,没有大家的支持我很难做好它。
Android 14
为例子,第一步将主模块中的 build.gradle
文件中修改 targetSdkVersion
和 compileSdkVersion
这两个的值android {
compileSdkVersion 34
defaultConfig {
......
targetSdkVersion 34
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
......
} else {
......
}
if (context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
......
} else {
......
}
到这里,大家可能有一个疑问,targetSdkVersion 和 compileSdkVersion 有啥区别?
targetSdkVersion:目标适配版本,告知系统 App 适配的情况,如果应用的 targetSdkVersion 比系统版本要低,那么在一些新特性上新系统会做向下兼容性处理,如果我们想要适配某个 Android 版本,必须要将 targetSdkVersion 调整到这个版本等级之上,否则在某些机型上面可能会出现一些适配异常的情况。如果我们只是简单调高了 targetSdkVersion 等级而没有适配新版本的特性,那么应用在新系统上可能会出现功能异常的情况,一般情况表现为应用崩溃或者获取不到数据。
compileSdkVersion:编译源码版本,我们可以通过修改这个版本等级来改变我们在代码中所看到的 Android SDK 源码的版本,同时也决定了编译器在进行代码检查时所用的版本。
最后附上一张 Android 版本信息对应表
Android 版本 | API 等级 | 版本代号 | 市场占有率 | 发布时间 |
---|---|---|---|---|
Android 14 | 34 | UPSIDE_DOWN_CAKE |
暂无数据 | 2023 年 10 月 10 日 |
Android 13 | 33 | TIRAMISU |
30.33% | 2022 年 8 月 16 日 |
Android 12L | 32 | S_V2 |
暂无数据 | 2022 年 3 月 9 日 |
Android 12 | 31 | S |
20.58% | 2021 年 10 月 4 日 |
Android 11 | 30 | R |
19.98% | 2020 年 9 月 9 日 |
Android 10 | 29 | Q |
9.27% | 2019 年 9 月 3 日 |
Android 9.0 | 28 | P |
8.61% | 2018 年 8 月 7 日 |
Android 8.1 | 27 | O_MR1 |
2.78% | 2017 年 12 月 5 日 |
Android 8.0 | 26 | O |
3.21% | 2017 年 8 月 22 日 |
Android 7.1 | 25 | N_MR1 |
0.61% | 2016 年 12 月 5 日 |
Android 7.0 | 24 | N |
1.88% | 2016 年 8 月 22 日 |
Android 6.0 | 23 | M |
1.64% | 2015 年 9 月 29 日 |
Android 5.1 | 22 | LOLLIPOP_MR1 |
0.98% | 2015 年 3 月 10 日 |
Android 5.0 | 21 | LOLLIPOP |
0.53% | 2014 年 10 月 15 日 |
Android 4.4 | 19 | KITKAT |
0.3% | 2013 年 10 月 31 日 |
市场占用率数据更新至 2023 年 11 月 5 日,数据统计主要参考以下链接:
Android API Levels
分发信息中心(谷歌官方)
Top Android OS versions(需要)
Mobile & Tablet Android Version Market Share Worldwide
Mobile Android operating system market share by version worldwide from January 2018 to January 2022
Google Play 应用在目标 API 级别方面需满足的要求(需要)
每个新的 Android 版本都会引入一些变化,以便改进安全性和性能,并提升 Android 的整体用户体验。每款应用的清单文件中都有一个 targetSdkVersion
参数(也称为目标 API 级别),用以告知系统您的应用在不同的 Android 版本上分别该如何运行。
将应用的目标 API 级别配置为新近的 API 级别可确保用户享受到安全性、隐私保护和性能方面的改进,同时仍然允许应用在较低版本的 Android(低至 minSdkVersion
)上运行。
为了向 Android 和 Google Play 用户提供安全可靠的使用体验,Google Play 要求所有应用在目标 API 级别方面都必须符合下列要求。
新应用 | 尚未在 Play 商店中发布的应用(例如,全新的应用) |
---|---|
应用更新 | 已在 Play 商店中发布的应用的新版本 |
现有应用 | 没有获得更新的已发布应用 |
Android 操作系统版本 | 新应用 | 应用更新 | 现有应用 |
---|---|---|---|
Android 13(API 级别 33) | 2023 年 8 月 1 日 | 2023 年 11 月 1 日 | 2024 年 11 月 1 日 |
Android 12(API 级别 31) | 2022 年 8 月 1 日 | 2022 年 11 月 1 日 | 2023 年 11 月 1 日 |
Android 11(API 级别 30) | 2021 年 8 月 1 日 | 2021 年 11 月 1 日 | 2022 年 11 月 1 日 |
提示:如需获得技术指导来了解如何更改应用的目标 API 级别以满足上述要求,请参阅迁移指南。
Android 操作系统版本 | 新应用 | 应用更新 | 现有应用 |
---|---|---|---|
Android 11(API 级别 30) | 2022 年 8 月 1 日 | 2022 年 11 月 1 日 | 无要求 |
Android 10(API 级别 29) | 无要求 | 无要求 | 无要求 |
Android 9(API 级别 28) | 2019 年 8 月 1 日 | 2019 年 11 月 1 日 | 无要求 |
应用 | 影响 |
---|---|
新应用 | 您将无法在 Play 管理中心发布不符合目标 API 级别要求的 app bundle。 |
应用更新 | 您将无法在 Play 管理中心提交不符合目标 API 级别要求的 app bundle 或 APK。 |
现有应用 | 如果新用户的设备搭载的 Android 操作系统版本高于您的应用的目标 API 级别,那么这类用户将无法在 Google Play 上获取您的应用。也就是说,这类新用户将无法从 Google Play 中发现或安装您的应用。之前从 Google Play 中安装过这款应用的用户仍可以发现、重新安装和使用它。这类现有用户即使换用新的 Android 设备,也仍然可以使用您的应用。 |
Android 14.0
Android 13.0
Android 12.0 / 12L
Android 11.0
Android 10.0
Android 9.0
Android 8.0 / 8.1
Android 7.0 / 7.1.1
Android 6.0
Android 5.0 / 5.1
Android 4.4
国际化
各应用语言偏好设定
语法变化 API
地区偏好设置
无障碍
用户体验
Sharesheet 自定义操作和经过改进的排名系统
支持内置和自定义预测性返回动画
针对应用商店的改进
检测用户何时截取设备屏幕截图
图形
核心功能
针对所有应用的行为变更
核心功能
默认拒绝设定精确的闹钟
当应用进入缓存时,上下文注册的广播将加入队列
应用只能终止自己的后台进程
安全
最低可安装的目标 API 级别
媒体所有者软件包名称可能会隐去
用户体验
授予对照片和视频的部分访问权限
安全的全屏 intent 通知
关于不可关闭通知用户体验方式的变更
数据安全信息更显眼
无障碍
针对 targetSdkVersion 34+ 应用的行为变更
核心功能
前台服务类型是必填项
OpenJDK 17 更新
安全
对隐式 intent 和待处理 intent 的限制
在运行时注册的广播接收器必须指定导出行为
更安全的动态代码加载
压缩路径遍历
针对从后台启动 activity 的其他限制
更新后的非 SDK 限制
Android 14 首个开发者预览版到来
即刻体验 | Android 14 开发者预览版 2
Android 14 Beta 版发布,稳步提升与亮点并存
丰富多彩 | Android 14 Beta 2 发布
平台稳定性里程碑 | Android 14 Beta 3 发布
发布更新的好时机 | Android 14 Beta 4 发布
正式版即将到来 | Android 14 Beta 5 发布
最新版发布 | Android 14 现已正式发布至 AOSP!
适配简介
Android 14 快速适配要点
狂飙!Android 14 第一个预览版已发布~
Android 14 又来了?别扶!抬起我来吧!
深度解读 Android 14 重要的 8 个新特性~
Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?
Android 14 正式发布,已经在 AOSP 中上线,快来看看有什么吧
Android 14 的 8 个重要新特性深度解析
Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?
卷起来,开始适配 Android 14
Android 14(U) Gradle 8.x JDK 17 适配攻略
厂商适配指南
OPPO 开放平台 - Android 14 应用兼容性适配指导
VIVO 开放平台 - Android 14 开发者适配文档
小米开放平台 - Android 14 应用适配指南
其他适配
Android 14 权限适配方案
Android 14 新增权限
Android 14 新 API:直接监听截屏操作,不用再观察媒体文件了~
Android 14 新功能:区域偏好 Regional Preferences
Android 14 新特性:语法性别 Grammatical Gender
Android 14 之返回界面升级:预览目标界面 + 全新返回箭头
Android 14 新功能之 TextView 搜索结果高亮和焦点移动
Android 14 新功能之 HighLights:快速实现文本高亮~
劝学:Android 14 Framework 引入了哪些“新”技术栈
开发者工作效率和工具
带主题的应用图标
各应用语言偏好设定
改进了文本和语言支持
彩色矢量字体
Quick Settings Placement API
剪贴板预览
预测性返回手势
蓝牙 LE 音频
MIDI 2.0
提高了启动画面效率
隐私权和安全
更安全地导出上下文注册的接收器
照片选择器
针对附近 Wi-Fi 设备的新运行时权限
使用精确闹钟的新权限
开发者可降级权限
APK 签名方案 v3.1
改进了密钥库和 KeyMint 中的错误报告功能
平板电脑和大屏设备支持
图形
可编程的着色器
改进了 Choreographer
媒体
无障碍功能
核心功能
针对所有应用的行为变更
性能和电池
前台服务 (FGS) 任务管理器
使用 JobScheduler 改进预提取作业处理
电池资源利用率
高优先级 Firebase Cloud Message (FCM) 配额
隐私权
通知的运行时权限
从剪贴板中隐藏敏感内容
安全性
intent 过滤器会屏蔽不匹配的 intent
停止使用共享用户 ID
用户体验
核心功能
针对 targetSdkVersion 33+ 应用的行为变更
隐私权
通知权限会影响前台服务的显示
针对附近 Wi-Fi 设备的新运行时权限
细化的媒体权限
在后台使用身体传感器需要新的权限
性能和电池
用户体验
派生自 PlaybackState 的媒体控件
应用颜色主题会自动应用于 WebView 内容
Google Play 服务
更新后的非 SDK 限制
Android 13 首个开发者预览版到来
Android 13 Beta 版发布,诸多亮点不容错过
欢迎体验 | Android 13 开发者预览版 2
平台稳定性里程碑 | Android 13 Beta 3 发布
正式版即将到来 | Android 13 Beta 4 现已发布
最新版发布 | Android 13 现已正式发布至 AOSP!
适配简介
Android 12 还没用上,Android 13 已经来了!
Android 13 适配指南
安卓13来了,快!扶起我来!
Android 13 适配尝鲜
Android 13(T) 适配
Android 13 正式版发布
移动开发前沿 | Android13,看这篇就够了!
个推解读 Android13,发布《Android13适配指南》
厂商适配指南
OPPO 开放平台 - Android 13 应用兼容性适配指导
VIVO 开放平台 - Android 13 应用适配指南
小米开放平台 - Android 13 应用适配指南
其他适配
Android 13 权限适配方案
Android 13 针对 Intent filters 安全的再加强
Android 13 返回导航大变更:返回键彻底废弃 + 可预见型返回手势
Android 13 新的换行策略和针对日文的优化
前台服务管理器:如何手动在 Android 13 上「杀死」一个应用
Android 13 媒体权限适配指南
微信 SDK - Android 13-可能存在的问题适配
Android 12.0 新特性
用户体验
Material You
微件改进
富媒体内容插入
应用启动画面 API
圆角 API
富触感反馈体验
AppSearch
游戏模式
画中画 (PiP) 改进
允许按来电重要性排名的新通话通知
通知的丰富图片支持
沉浸模式下的手势导航改进
近期网址共享(仅限 Pixel)
安全和隐私设置
隐私信息中心
蓝牙权限
权限组查找
隐藏应用叠加窗口
已知签名者权限保护标志
设备属性认证
安全锁定屏幕通知操作
BiometricPrompt 的可本地化字符串
即时通讯应用中的钓鱼式攻击检测功能(仅限 Pixel)
媒体
兼容的媒体转码
性能等级
视频编码改进
音频焦点
MediaDrm 更新
相机
Camera2 供应商扩展
Quad Bayer 摄像头传感器支持
图形和图片
让应用能够直接访问 Tombstone 跟踪记录
AVIF 图片支持
更简单的模糊处理、颜色滤镜及其他效果
原生动画图片解码
连接性
使配套应用保持唤醒状态
配套设备管理器配置文件
带宽估测改进
Wi-Fi 感知 (NAN) 增强功能
并发点对点 + 互联网连接
为 NFC 付款启用屏幕关闭
存储
核心功能
自动更新应用
设备芯片组信息
核心 Java API 的更新
微件改进
企业版的新变化
Android 12L 功能和变更
针对大屏设备优化了操作系统
强大直观的多任务处理功能
改善了兼容性体验
针对大屏设备的更多更新和资源
大屏设备上 Google Play 的变化
使用 Jetpack WindowManager 嵌入 activity
设备屏幕方向请求
让您的应用做好准备
针对所有应用的行为变更
用户体验
滚动效果
前台服务通知用户体验延迟
沉浸模式下的手势导航改进
网络 intent 解析
限制性应用待机模式存储分区
Display#getRealSize 和 getRealMetrics:废弃和沙盒
图形和图片
安全和隐私设置
麦克风和摄像头切换开关
麦克风和摄像头指示标志
应用无法关闭系统对话框
不受信任的触摸事件被屏蔽
权限软件包可见性
移除了 Bouncy Castle 实现
剪贴板访问通知
连接性
更新后的非 SDK 接口限制
针对 targetSdkVersion 31+ 应用的行为变更
用户体验
画中画行为改进
自定义通知
Android App Links 验证的变更
隐私设置
大致位置
应用休眠
移动传感器有采样率限制
数据访问审核
WebView 中的现代 SameSite Cookie
ADB 备份限制
安全
更安全的组件导出
尽可能创建不可变的待处理 intent
不安全的 intent 启动
性能
前台服务启动限制
精确的闹钟权限
通知 trampoline 限制
备份和恢复
连接性
并发点对点 + 互联网连接
为 NFC 付款启用屏幕关闭
供应商库
更新后的非 SDK 限制
一起看 I/O | Android 12 Beta 版发布,诸多亮点不容错过
更进一步 | Android 12 Beta 2 发布
终版 API 正式到来 | Android 12 Beta 3 发布
平台稳定性里程碑 | Android 12 Beta 4 现已发布
正式版即将到来 | Android 12 Beta 5 现已发布
Android 12 正式发布 | 开发者们的全新舞台
新版本系统适配: Android 12 中的兼容性变更
适配简介
Android 12 适配简介
Android 12 快速适配要点
来了!Android 12 适配你准备好了吗?
还没适配 Android 12 的要抓紧了
TargetsdkVersion 升级 31(Android12)适配
Android 12 保姆级适配指南
Android Target 31 升级全攻略 —— 记阿里首个超级 App 的坎坷升级之路
Android 12 适配-行为变更:所有应用
Android 12 适配-行为变更:以 Android 12 为目标平台的应用
您有一份安卓 12 适配攻略,请注意查收!
厂商适配指南
OPPO 开放平台 - Android 12 应用兼容性适配指导
VIVO 开放平台 - Android 12 应用适配指南
小米开放平台 - Android 12 应用适配指南
SplashScreen 适配
从 Jetpack SplashScreen 深度探讨 App 启动画面的前世今生~
Jetpack 新成员 SplashScreen:打造全新的App启动画面
Android 12 SplashScreen API 快速入门
Jetpack SplashScreen API 在所有 Android 系统上使用总结,内含原理分析
Android 12 启动画面-SplashScreen
Android 12 上全新的应用启动画面,还不适配一下?
用 SplashScreen 做一个会动的开屏!
桌面小组件适配
更新您的 widget 以适配 Android 12
Android 12 上焕然一新的小组件:美观、便捷和实用
别羡慕苹果的小部件了,安卓也有!
exported 属性适配
Android 12 新特性 android:exported 属性
Android 12 自动适配 exported 深入解析避坑
写了一个适配 Android12-exported 的小插件
The application could not be installed: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
Android 12 L 适配
详解 Android 12L|更好地适配大屏幕设备
正式版 API 确定 | Android 12L Beta 1 发布
Android 与 Chrome OS 中针对大屏幕设备的更新
其他适配
Android 12 蓝牙适配攻略
Android 12 蓝牙权限适配方案
Android 12 实用更新:置灰的控件也可以点击啦
Android 12 TransactionTooLargeException 问题
高德地图 - Android 12 定位权限说明
百度地图 - Android 12.0 开发须知
支持Android 12,全版本保存图片到相册方案
隐私权变更 | 受影响的应用 | 缓解策略 |
---|---|---|
强制执行分区存储机制 以 Android 11 或更高版本为目标平台的应用始终会受分区存储行为的影响 | 以 Android 11 或更高版本为目标平台的应用,以及以 Android 10 为目标平台且未将 requestLegacyExternalStorage 设为 true 以停用分区存储的应用 |
更新您的应用以使用分区存储 详细了解分区存储变更 |
单次授权 使用单次授权功能,用户可以授予对位置信息、麦克风和摄像头的临时访问权限 | 在 Android 11 或更高版本上运行且请求位置信息、麦克风或摄像头权限的应用 | 在尝试访问受某项权限保护的数据之前,检查您的应用是否具有该权限 遵循请求权限方面的最佳做法 |
自动重置权限 如果用户在 Android 11 或更高版本上几个月未与应用互动,系统会自动重置应用的敏感权限 | 以 Android 11 或更高版本为目标平台且在后台执行大部分工作的应用 | 要求用户阻止系统重置应用的权限 详细了解自动重置权限 |
后台位置信息访问权限 Android 11 更改了用户向应用授予后台位置信息权限的方式 | 以 Android 11 或更高版本为目标平台且需要在后台访问位置信息的应用 | 通过对权限请求方法的多次单独调用,逐步请求在前台(粗略或精确)和后台访问位置信息的权限。必要时,说明用户授予该权限所能得到的益处 详细了解 Android 11 中的在后台访问位置信息的权限 |
软件包可见性 Android 11 更改了应用查询同一设备上的其他已安装应用及与之互动的方式 | 以 Android 11 或更高版本为目标平台且与设备上的其他已安装应用交互的应用 | 将 元素添加到应用的清单 详细了解软件包可见性 |
前台服务 Android 11 更改了前台服务访问位置信息、摄像头和麦克风相关数据的方式 | 在 Android 11 或更高版本上运行且在前台服务中访问位置信息、摄像头或麦克风的应用 | 分别针对需要访问摄像头和麦克风的前台服务,声明 camera 和 microphone 前台服务类型。但请注意,应用在后台运行时启动的前台服务通常无法访问位置信息、摄像头或麦克风。 详细了解前台服务的变更 |
向您的应用添加 5G 功能
强制门户 API 支持
安全共享大型数据集
联系人与对话
消息框
控制外部设备
将自动填充功能与键盘集成
针对所有应用的行为变更
隐私权
单次授权
权限对话框的可见性
数据访问审核
系统提醒窗口权限
永久 SIM 卡标识符
接触史通知
安全性
SSL 套接字默认情况下使用 Conscrypt SSL 引擎
Scudo Hardened Allocator
应用使用情况统计信息
针对 5G 的模拟器支持
性能和调试
JobScheduler API 调用限制调试
文件描述符排错程序 (fdsan)
非 SDK 接口限制
V1 版 Google 地图共享库已移除
与其他应用交互
针对 targetSdkVersion 30+ 应用的行为变更
隐私权
强制执行分区存储
自动重置权限
在后台访问位置信息的权限
软件包可见性
安全
堆指针标记
消息框的更新
网络连接
无障碍服务
在清单文件中声明与 TTS 引擎的交互
在元数据文件中声明“无障碍”按钮使用情况
相机
应用打包和安装
压缩的资源文件
现在需要 APK 签名方案 v2
Firebase
设备到设备文件传输
OnSharedPreferenceChangeListener 的回调变更
非 SDK 接口限制
适配简介
Android 11 开发者手册
拖不得了,Android11真的要来了,最全适配实践指南奉上
Android 11 变更及适配攻略
实战 Android 升级目标版本到 30 过程中遇到的问题及解决办法
厂商适配指南
OPPO 开放平台 - Android 11 应用兼容性适配指导
VIVO 开放平台 - Android 11 应用适配指南
小米开放平台 - Android 11上第三方App读写文件API标准建议
Android/data 目录适配
Android 11 无 Root 访问 data 目录实现、Android 11 访问 data 目录、Android 11 解除 data 目录限制、Android 11 data 空白解决
知乎回答:如何评价在 Android11 中,/Android/data 文件夹无法读写?
Android 11 适配- 实现清理其他应用缓存目录
其他适配
Android 11 外部存储权限适配指南及方案
Android 11 绕过反射限制
Android 11 软件包可见性适配
Android 11 特性调整:安装外部来源应用需要重启APP
Android 11 无法在后台显示自定义样式 Toast 的适配方案
微信开放平台 - Android 11 系统策略更新
文本转语音 TTS 开发 Android11 适配方案
隐私权变更 | 受影响的应用 | 缓解策略 |
---|---|---|
分区存储 针对外部存储的过滤视图,可提供对特定于应用的文件和媒体集合的访问权限 | 访问和共享外部存储中的文件的应用 | 使用特定于应用的目录和媒体集合目录 了解详情 |
增强了用户对位置权限的控制力 仅限前台权限,可让用户更好地控制应用对设备位置信息的访问权限 | 在后台时请求访问用户位置信息的应用 | 确保在没有后台位置信息更新的情况下优雅降级 使用 Android 10 中引入的权限在后台获取位置信息 了解详情 |
系统执行后台 Activity 针对从后台启动 Activity 实施了限制 | 不需要用户互动就启动 Activity 的应用 | 使用通知触发的 Activity 了解详情 |
不可重置的硬件标识符 针对访问设备序列号和 IMEI 实施了限制 | 访问设备序列号或 IMEI 的应用 | 使用用户可以重置的标识符 了解详情 |
无线扫描权限 访问某些 WLAN、WLAN 感知和蓝牙扫描方法需要获得精确位置权限 | 使用 WLAN API 和蓝牙 API 的应用 | 针对相关使用场景请求 ACCESS_FINE_LOCATION 权限 了解详情 |
折叠屏
5G 网络
通知栏消息回复
深色主题
手势导航
设置面板
共享快捷方式
针对所有应用的行为变更
限制非 SDK 接口
手势导航
NDK
Bionic 库和动态链接器路径变更
系统二进制文件/库会映射到只执行内存
安全
TLS 1.3 默认处于启用状态
TLS 不信任使用 SHA-1 签名的证书
KeyChain 行为变更和改进
其他 TLS 和加密更改
WLAN 直连广播
WLAN 感知功能
Go 设备上的 SYSTEM_ALERT_WINDOW
关于以旧版 Android 系统为目标平台的应用的警告
移除了 SHA-2 CBC 加密套件
应用使用情况
HTTPS 连接变更
ZIP 文件实用程序库变更
Inflater
ZipFile
ZipOutputStream
摄像头变更
电池用量跟踪
Android Beam 已弃用
针对 targetSdkVersion 29+ 应用的行为变更
有关限制非 SDK 接口的更新
共享内存
移除了应用主目录的执行权限
Android 运行时只接受系统生成的 OAT 文件
在 ART 中强制要求 AOT 正确性
针对全屏 Intent 的权限变更
支持可折叠设备
java.io.FileChannel.map() 更改
适配简介
厂商适配指南
OPPO 开放平台 - Android Q 版本应用兼容性适配指导
VIVO 开放平台 - Android Q 应用适配指南
分区存储适配
暂时停用分区存储
Android 存储用例和最佳做法
Android 10(Q)/11(R) 分区存储适配
Android 10 分区存储适配
Android 10 适配要点,作用域存储
Android MediaStore Api 使用
QQ SDK - 分区存储功能适配
微信 SDK - 分区存储功能适配
支持Android 12,全版本保存图片到相册方案
深色主题适配
Android 深色模式适配原理分析
Android 10 适配要点,深色主题
Android 深色模式的项目应用
Android 10 暗黑模式适配,你需要知道的一切
其他适配
Android 折叠屏适配攻略
Android 监听系统截屏操作,适配Android Q(29)
利用 Wi-Fi RTT 进行室内定位
显示屏缺口支持
通知
多摄像头支持和摄像头更新
适用于可绘制对象和位图的 ImageDecoder
动画
HDR VP9 视频、HEIF 图像压缩和 Media API
JobScheduler 中的流量费用敏感度
Neural Networks API 1.1
自动填充框架
安全增强功能
Android 备份
无障碍功能
旋转
文本
设备端系统跟踪
针对所有应用的行为变更
电源管理
隐私权变更
对使用非 SDK 接口的限制
安全行为变更
ICU 库更新
Android Test 变更
Java UTF 解码器
使用证书的主机名验证
网络地址查询可能会导致网络违规
套接字标记
报告的套接字中可用字节数
应用不再能访问 xt_qtaguid 文件夹中的文件
现在强制执行 FLAG_ACTIVITY_NEW_TASK 要求
屏幕旋转变更
Apache HTTP 客户端弃用影响采用非标准 ClassLoader 的应用
枚举相机
针对 targetSdkVersion 28+ 应用的行为变更
前台服务
隐私权变更
框架安全性变更
默认启用网络传输层安全协议 (TLS)
按进程分设基于网络的数据目录
网络连接变更
网络连接数据计数和多路径
Apache HTTP 客户端弃用
界面变更
视图焦点
CSS RGBA 十六进制值处理
文件的 MIME 类型嗅探:URI
文档滚动元素
来自已暂停应用的通知
适配简介
Android 9.0 适配指南
Android 9.0适配及部分新特性介绍
厂商适配指南
VIVO 开放平台 - Android P 应用适配指南
小米开放平台 - MIUI Android P 适配指南
刘海屏适配
Android 刘海屏适配全攻略
Android 9.0 系统新特性,对刘海屏设备进行适配
反射 API 适配
区分 SDK 接口和非 SDK 接口
一种绕过 Android P 对非 SDK 接口限制的简单方法
另一种绕过 Android P 以上非公开 API 限制的办法
隐藏 API 反射框架 FreeReflection
WebView 多进程适配
Android 9.0/P WebView 多进程使用的问题
有效解决 WebView 多进程崩溃
Android 8.0 新特性
用户体验
通知
自动填充框架
画中画模式
可下载字体
XML 中的字体
自动调整 TextView 的大小
自适应图标
颜色管理
WebView API
固定快捷方式和小部件
最大屏幕纵横比
多显示器支持
统一的布局外边距和内边距
指针捕获
应用类别
Android TV 启动器
AnimatorSet
输入和导航
系统
视图默认焦点
新的 StrictMode 检测程序
缓存数据
内容提供程序分页
内容刷新请求
JobScheduler 改进
自定义数据存储
findViewById 签名变更
媒体增强功能
VolumeShaper
音频焦点增强功能
媒体指标
MediaPlayer
音频录制器
音频播放控制
增强的媒体文件访问功能
连接
WLAN 感知
蓝牙
配套设备配对
共享
智能共享
智能文本选择
无障碍功能
无障碍功能按钮
独立的音量调整
指纹手势
字词级突出显示
标准化单端范围值
提示文本
连续的手势分派
安全性与隐私
权限
新的帐号访问和 Discovery API
Google Safe Browsing API
测试
仪器测试
用于测试的模拟 Intent
运行时和工具
平台优化
更新的 Java 支持
更新的 ICU4J Android Framework API
Android 企业版
Android 8.1 新特性
Android Oreo(Go 版本)
Neural Networks API
自动填充框架更新
通知
EditText 更新
程序化安全浏览操作
视频缩略图提取器
Shared memory API
WallpaperColors API
指纹更新
加密更新
针对所有应用的行为变更
后台执行限制
Android 后台位置限制
应用快捷键
语言区域和国际化
提醒窗口
输入和导航
网页表单自动填充
无障碍功能
网络连接和 HTTP(S) 连接
蓝牙
无缝连接
安全性
隐私性
记录未捕获的异常
联系人提供程序使用情况统计方法的变更
集合的处理
Android 企业版
针对 targetSdkVersion 26+ 应用的行为变更
提醒窗口
内容变更通知
视图焦点
安全性
帐号访问和可检测性
隐私性
权限
媒体
原生库
集合的处理
类加载行为
适配简介
厂商适配指南
通知渠道适配
Android 通知栏微技巧,8.0 系统中通知栏的适配
创建和管理通知渠道
Android 应用图标微技巧,8.0 系统中应用图标的适配
透明 Activity 方向适配
Android 8.0 踩坑记录 - Only fullscreen opaque activities can request orientation
Only fullscreen opaque activities can request orientation 问题及解决方案
Only fullscreen activities can request orientation 终极解决方法
"Only fullscreen opaque activities can request orientation "问题再分析
启动后台 Service 适配
Android 8.0 启动后台service 出错 IllegalStateException: Not allowed to start service Intent
Android 8.0 + Service开启方式兼容处理
Context.startForegroundService() did not then call Service.startForeground?
Android 8.0: java.lang.IllegalStateException: Not allowed to start service Intent
其他适配
Android 7.0 新特性
多窗口支持
通知增强功能
配置文件指导的 JIT/AOT 编译
快速的应用安装路径
随时随地低电耗模式
后台优化
SurfaceView
流量节省程序
Vulkan API
Quick Settings Tile API
号码屏蔽
来电过滤
多语言区域支持,更多语言
新增的表情符号
Android 中的 ICU4J API
WebView
Chrome 和 WebView 配合使用
多进程
Javascript 在页面加载之前运行
不安全起点上的地理定位
测试 WebView 测试版
OpenGL™ ES 3.2 API
Android TV 录制
Android for Work
工作资料安全性挑战
关闭工作
Always on VPN
自定义配置
无障碍增强功能
直接启动
密钥认证
网络安全性配置
默认受信任的证书颁发机构
APK signature scheme v2
作用域目录访问
键盘快捷键辅助工具
Custom Pointer API
Sustained Performance API
VR 支持
打印服务增强
FrameMetricsListener API
虚拟文件
Android 7.1 新特性
应用快捷方式
键盘支持图像
新的专业表情符号
增强的动态壁纸元数据
圆形图标资源
存储管理器意图
改进的 VR 线程调度
演示用户提示
运营商和呼叫应用程序的 API
可穿戴设备的新屏幕密度
电池和内存
低电耗模式
后台优化
系统权限更改
在应用间共享文件
无障碍改进
屏幕缩放
设置向导中的视觉设置
NDK 应用链接至平台库
检查您的应用是否使用私有库
更新您的应用
Android for Work
注解保留
其他重要说明
适配简介
Android 7.0 脱坑指南
Android 7.0 适配教程,心得
FileProvider适配
Android 一起来看看 7.0 的新特性 FileProvider
官方文档 - FileProvider 类
其他适配
Toast 在 Android 7.1 崩溃排查及修复
PopupWindow 在 Android N(7.0) 的兼容性问题
Android 7.0 WebView 部分机型打不开
指纹身份验证
确认凭据
应用链接
自动备份应用
直接共享
语音交互
Assist API
可采用的存储设备
通知
蓝牙触控笔支持
改进的蓝牙低功耗扫描
Hotspot 2.0 第 1 版支持
4K 显示模式
主题化 ColorStateList
音频功能
视频功能
相机功能
Flashlight API
Reprocessing API
Android for Work 功能
运行时权限
低电耗模式和应用待机模式
取消支持 Apache HTTP 客户端
BoringSSL
硬件标识符访问权
通知
音频管理器变更
文本选择
浏览器书签变更
Android 密钥库变更
WLAN 和网络连接变更
相机服务变更
运行时
APK 验证
USB 连接
Android for Work 变更
Android 6.0 运行权限解析
官方文档 - 请求应用权限
所有的 Android 权限清单
Android 5.0 新特性
用户界面
Material Design 支持
最近使用的应用屏幕中的并发文档和 Activity
WebView 更新
屏幕采集和共享
通知
锁定屏幕通知
通知元数据
图形
对 OpenGL ES 3.1 的支持
Android 扩展包
媒体
用于高级相机功能的 Camera API
音频回放
媒体回放控制
媒体浏览
存储
无线和连接
多个网络连接
蓝牙低功耗
NFC 增强功能
Volta 项目
计划排定作业
电池使用开发者工具
工作场所和教育领域中的 Android
托管配置
设备所有者
固定屏幕
打印框架
系统
测试与辅助工具
测试与辅助工具改进
IME
清单声明
可声明的必备功能
用户权限
Android 5.1 新特性
多 SIM 卡支持
已弃用的 HTTP 类
运营商服务
Android Runtime (ART)
通知
Material Design 样式
声音和振动
锁定屏幕可见性
媒体播放
浮动通知
媒体控件和 RemoteControlClient
getRecentTasks()
Android NDK 中的 64 位支持
绑定到服务
WebView
自定义权限唯一性要求
使用重复的自定义权限的应用
您的应用需要注意的事项
新安装和更新
使用 Android 5.0 系统更新的现有安装
建议
TLS/SSL 默认配置变更
服务器不支持任何已启用的加密套件
应用对用于连接服务器的加密套件做出错误的假设
服务器不支持 TLSv1.1、TLSv1.2 或新的 TLS 扩展
支持托管配置文件
处理 Intent
在各个配置文件中共享文件
已移除锁定屏幕小部件支持
打印框架
打印通用内容
打印图像
构建打印服务
短信提供程序
无线和连接
主机卡模拟
NFC 读取器模式
红外线发射器
多媒体
自适应播放
音频点播时间戳
Surface 图像读取器
峰值和有效值 (RMS) 测量
音量增强器
遥控器
从遥控器进行评分
隐藏式字幕
动画和图形
场景和转场
动画暂停
可重复使用的位图
用户内容
存储访问框架
外部存储空间访问
同步适配器
用户输入
新传感器类型
批处理传感器事件
控制器身份
用户界面
沉浸式全屏模式
透明系统状态栏
增强的通知侦听器
可绘制的 RTL 布局镜像
无障碍功能
应用权限
设备功能
外部存储
WebView
AlarmManager
ContentResolver
Android通知还能这么玩?
Android NotificationListenerService 的使用
Android 通知使用权(NotificationListenerService)的使用
安卓技术中台:AndroidProject
安卓技术中台 Kt 版:AndroidProjet-Kotlin
权限框架:XXPermissions
吐司框架:Toaster
网络框架:EasyHttp
标题栏框架:TitleBar
悬浮窗框架:EasyWindow
ShapeView 框架:ShapeView
ShapeDrawable 框架:ShapeDrawable
语种切换框架:MultiLanguages
Gson 解析容错:GsonFactory
日志查看框架:Logcat
嵌套滚动布局框架:NestedScrollLayout
Android 代码规范:AndroidCodeStandard
Android 资源大汇总:AndroidIndex
Android 开源排行榜:AndroidGithubBoss
Studio 精品插件:StudioPlugins
表情包大集合:EmojiPackage
AI 资源大汇总:AiIndex
省市区 Json 数据:ProvinceJson
Markdown 语法文档:MarkdownDoc