一 简介
1.1 Android 目前最新版已更新到了Android14,google市场每次更新都要求必须同步更新项目API,否则会有下架风险。
1.2 Android 每一个版本更新都对电量优化,通知的使用,隐私权限方面做了修改,所以重点适配方面也是在这几个方面
二 各版本更新变化
2.1 Android 1.0 (API Level 1) - 2008年9月发布,首次发布的Android版本,提供了基本功能。
2.2 Android 1.1 (API Level 2) - 2009年2月发布,增加了一些功能改进,如支持地图和小部件。
2.3 Android 1.5 (Cupcake, API Level 3) - 2009年4月发布,首次引入了虚拟键盘和小部件。
2.4 Android 1.6 (Donut, API Level 4) - 2009年9月发布,增强了搜索功能,支持不同屏幕尺寸。
2.5 Android 2.0 (Eclair, API Level 5) - 2009年10月发布,引入了多帐户支持、图像和音频增强。
2.6 Android 2.2 (Froyo, API Level 8) - 2010年5月发布,增加了对Flash的支持,提升了性能和安全性。
2.7 Android 2.3 (Gingerbread, API Level 9) - 2010年12月发布,优化了用户界面和游戏性能,增加了对NFC的支持。
2.8 Android 3.0 (Honeycomb, API Level 11) - 2011年2月发布,专为平板电脑设计,改进了界面和多任务功能。
2.9 Android 4.0 (Ice Cream Sandwich, API Level 14) - 2011年10月发布,统一了智能手机和平板电脑的用户界面,增加了面部解锁。
2.10 Android 4.1 (Jelly Bean, API Level 16) - 2012年7月发布,增强了流畅度和通知功能。
2.11 Android 4.4 (KitKat, API Level 19) - 2013年10月发布,优化了性能,提高了在低内存设备上的运行效果。
2.12 Android 5.0 (Lollipop, API Level 21) - 2014年11月发布,彻底改进了用户界面,增加了Material Design。
2.13 Android 6.0 (Marshmallow, API Level 23) - 2015年10月发布,增强了权限管理和Doze模式以延长电池使用。
2.14 Android 7.0 (Nougat, API Level 24) - 2016年8月发布,支持分屏模式和增强的通知功能。
2.15 Android 8.0 (Oreo, API Level 26) - 2017年8月发布,引入了画中画、多窗口和通知渠道。
2.16 Android 9.0 (Pie, API Level 28) - 2018年8月发布,改进了用户界面,增加了手势导航和数字健康功能。
2.17 Android 10 (API Level 29) - 2019年9月发布,全面改进隐私权和位置控制,并引入黑暗模式。
2.18 Android 11 (API Level 30) - 2020年9月发布,增强了通讯管理和多媒体功能。
2.19 Android 12 (API Level 31) - 2021年10月发布,改进了隐私和新的用户自定义界面。
2.20 Android 13 (API Level 33) - 2022年8月发布,进行了小幅改进,包括新的个性化选项和隐私特性。
2.21 Android 14 (API Level 34) - 2023年预期发布,预计将继续增强隐私和用户体验。
三 版本,名字,和api对比表
Android Version | Name | API Level |
Android 15 | V | 35 |
Android 14 | U | 34 |
Android 13 | T | 33 |
Android 12L | S | 31 |
Android 12.0 | S | 30 |
Android 11.0 | R | 29 |
Android 10.0 | Q | 28 |
Android 9.0 | Pie | 27 |
Android 8.1 | Orea | 26 |
Android 8.0 | Orea | 25 |
Android 7.1.1 | Nougat | 24 |
Android 6.0 | MarshMallow | 23 |
Android 5.1 | Lollipop | 22 |
Android 5.0 | Lollipop | 21 |
Android 4.4W | KitKat Wera | 20 |
Android 4.4 | KitKat | 19 |
四 各版本适配
4.1 Android4.4到android5(API19-22)
权限比较低,不需要太多权限就能访问,不再多介绍,现在android5以下手机已经非常少了(开发板RK系列除外)
4.2 Android6(API23)
运行时权限
- android6.0 之前,我们把app需要用到的权限全部罗列在Manifest清单文件中。安装app时android系统会询问用户是否授予这些权限,拒绝后则无法安装app。如果授予,则安装app,之后无法修改授予状态。
- android6.0 将权限分为普通权限(不涉及用户隐私和安全)和危险权限(设计用户隐私和安全)。普通权限和andorid6.0之前一样,在Manifest清单文件中申请即可。危险权限需要在使用时动态申请,由用户决定是否授予
HttpClient的移除
自Android6.0起,HttpClient系列代码从SDK中剔除,推荐使用HttpURLConnection。
4.3 Android7(API24)
应用间共享文件
- 对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI 。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。
- 要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类。
- 在AndroidManifest.xml清单文件中注册provider
authorities 是标记我们这个ContentProvider的唯一标识,是一个用于认证的暗号,我们一般默认使用包名+fileprovider来定义。(能不能使用别的,可以,abcd都行,但是没必要) name 是具体的FileProvider类,如果是系统的,就用上面的这种,如果是自定义的,就写自定义FileProvider的全类名。 exported 是否限制其他应用获取此FileProvider。 grantUriPermissions 是否授权其他应用获取访问Uri权限,一般为true。 meta-data 和下面的 name 都是固定的写法,重点是 resource 需要自己实现规则,定义哪些私有文件会被提供访问。
<manifest> ... <application> ... <provider android:name="androidx.core.content.FileProvider" android:authorities="com.demo.fileprovider" <!--替换为自己的包名--> android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/paths" /> </provider> ... </application> </manifest>
- res/xml中定义对外暴露的文件夹路径:
root-path 从SD卡开始找 例如 storage/emulated/0/Android/data/com.guadou.kt_demo/cache/pos/naixiao-1122.jpg external-path 从外置SD卡开始 例如 Android/data/com.guadou.kt_demo/cache/pos/naixiao-1122.jpg external-files-path 外置沙盒file目录 例如 pos/naixiao-1122.jpg (真实目录在 Android/data/com.guadou.kt_demo/cache/pos/) external-cache-path 外置沙盒cache目录 例如 naixiao-1122.jpg (真实目录在 Android/data/com.guadou.kt_demo/cache/) files-path 和上面的同理,只是在内置的data/data目录下面 cache-path 和上面的同理,只是在内置的data/data目录下面
<?xml version