前言
Android体系的更新速度真的是“一路狂飙”,23年2月8日,Android 14 第一个预览版别发布。Android 14 将持续致力于进步开发人员的工作效率,一同增强功用、隐私、安全性和用户自定义。
预计将会在八月份发布终究的Release版别
获取Android 14
假如你想获取Android 14体系可以运用下列Pixel系列设备
-
Pixel 4a (5G)
-
Pixel 5 and 5a
-
Pixel 6 and 6 Pro
-
Pixel 6a
-
Pixel 7 and 7 Pro
或许运用虚拟机的方法,因为家庭困难,所以这里我运用的是虚拟机的方法。
设置SDK
首先咱们来装置Android 14 SDK,操作如下图所示。
装置好之后,设置编译版别和方针版别为Android 14 ,代码如下所示
android {
compileSdkPreview "UpsideDownCake"
defaultConfig {
targetSdkPreview "UpsideDownCake"
}
}
接着咱们重点来看,第一个预览版别首要更新了哪些内容,重要分为对一切App的影响和方针版别为14的影响。
更新内容
一切App
安全
- 从Android 14开始,targetSdkVersion低于23的运用无法装置。
也就是说一切App的targetSdkVersion至少等于23,也就是要适配Android 6.0,这是因为Google考虑到部分运用歹意运用低级别的方针版别来躲避隐私和安全权限。
辅佐功用
- 从 Android 14 开始,体系支撑高达 200% 的字体缩放。
这一目的是为弱视用户供给符合 Web 内容无障碍攻略 (WCAG) 的额定无障碍选项。假如开发者现已运用缩放像素 (sp) 单位来定义文本大小,那么此更改可能不会对您的运用产生重大影响。
中心功用
- 默许情况下回绝方案准确警报
准确警报用于用户有意的告诉,或用于需要在准确时间产生的操作。 从 Android 14 开始,SCHEDULE_EXACT_ALARM 权限不再预先颁发大多数新装置的针对 Android 13 及更高版别的运用程序——该权限默许情况下被回绝。
- 上下文注册的播送在缓存运用程序时排队
在 Android 14 上,当运用处于缓存状态时,体系可能会将上下文注册的播送放入队列中,也就说,并不是注册之后播送就会直接发动,将根据体系运用情况来等候分配。
方针版别为Android 14的App
中心功用
- 需要前台服务类型
假如运用以 Android 14 为方针平台,则它有必要为运用内的每个前台服务指定至少一种前台服务类型。
Android 14 还引入了用于健康和远程音讯传递用例的前台服务类型。 该体系还为短服务、特别用例和体系豁免保存新类型。
前台服务类型有很多,如下列所示:
-
connectedDevice
-
dataSync
-
health
-
location
-
mediaPlayback
-
mediaProjection
-
microphone
-
phoneCall
-
remoteMessaging
-
shortService
-
specialUse
-
systemExempted
其间health、remoteMessaging、shortService、specialUse 和 systemExempted 类型是 Android 14 中供给的新类型。
声明代码如下所示:
<manifest ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYPACK" />
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:permission="android.permission.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYPACK"
android:exported="false">
</service>
</application>
</manifest>
Service.startForeground(0, notification, FOREGROUND_SERVICE_TYPE_LOCATION)
安全
-
对隐式目的的限制
-
运用程序有必要运用清晰的目的来交付给未导出的组件,或许将组件标记为已导出。
-
假如运用程序创建一个可变的挂起目的,但目的未指定组件或包,体系现在会抛出反常。
-
比方咱们在配置文件中声明了一个exported为false的Activity,代码如下所示:
<activity
android:name=".AppActivity"
android:exported="false">
<intent-filter>
<action android:name="com.example.action.APP_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
然后咱们按照目的发动这个Activity,代码如下所示。
context.startActivity(Intent("com.example.action.APP_ACTION"))
那么很抱愧,这里将抛出一个反常。有必要改为显示的Intent,代码如下所示:
val explicitIntent =
Intent("com.example.action.APP_ACTION")
explicitIntent.apply {
package = context.packageName
}
context.startActivity(explicitIntent)
- 更安全的动态代码加载
新增功用
联络人
Android 14 增加了以下两个字段:
-
Contract.Contacts#ENTERPRISE_CONTENT_URI
-
ContactsContract.CommonDataKinds.Phone#ENTERPRISE_CONTENT_URI
这些字段一同答应具有 READ_CONTACTS 权限的个人运用程序列出一切工作配置文件联络人和电话号码,只要 DevicePolicyManager 中的跨配置文件联络人策略答应。
写在最后
由于,昨天刚刚发布了第一个预览版别,所以咱们能感觉到的改变不是太大,不过Android的方向一向都是在权限、隐私等方向。后续怎么适配,咱们只要等着官方稳定版别出来之后在讨论了~
Android体系更新如此敏捷,你觉得这算是狂飙吗?