前言

Android Q致力于让用户控制、保护个人数据,确保透明度。

[外链图片转存失败(img-btiqSYXg-1568285151835)(https://fossbytes.com/wp-content/uploads/2019/01/Android-Q-What-To-Expect-Release-Rumors-Features-2-640x360.png)]

根据官方博文,谷歌已经公布了 Android Q 的名称,它并不像以前一样,以甜食命名,也不是以任何以字母 Q 开头来命名,而是简单称它为 Android 10。

资料参考

Android Q API 报告
https://developer.android.google.cn/sdk/api_diff/q-beta1/changes.htmlAndroid Q API 参考
https://developer.android.google.cn/reference/维基百科
https://en.wikipedia.org/wiki/Android_version_history#cite_note-introducingqbeta-242Android 10新的特性以及适配向导,请查阅谷歌官方页面:
https://developer.android.com/about/versions/10Android 10 release note:
https://source.android.com/setup/start/android-10-releaseAndroid 10谷歌开发者发布中文说明:
https://mlog.club/article/34749

新功能特性

Android Q版,最大的亮点集中在隐私安全和智能交互两方面,其中在隐私安全方面Android Q增加了外部存储策略变更、位置权限的后台访问限制、后台应用(不限于摄像头、麦克风等)的启动限制、设备识别码限制.

1 [安全]安全增强

1. 直接从 APK 运行嵌入式 DEX 代码

可以告知平台直接从应用的 APK 文件中运行嵌入式 DEX 代码。如果攻击者曾设法篡改了设备上本地编译的代码,则此选项有助于防止相应攻击。

注意:启用此功能可能会影响应用的性能,因为在应用启动时 ART 必须使用 JIT 编译器(而不是读取提前编译的原生代码)。我们建议您先测试应用性能,然后再决定是否在已发布的应用中启用此功能。

2. 新增生物识别身份验证-API

  • setRequireConfirmation()
    可以提供一个提示,以告知系统在用户使用隐式生物识别模式完成身份验证后无需要求用户进行确认
  • setAllowDeviceCredential()
    如果用户因某种原因而无法使用其生物识别输入设备,则可以使用设备 PIN 码、图案或密码来进行身份验证
  • canAuthenticate()
    检查设备是否支持生物识别身份验证

3. 限制程序访问剪贴板

安卓系统此前毫无限制的剪贴板功能在Android Q中将纳入监管,目前的代码暗示只有OEM厂商签名的程序才有访问权。

4. 公布了《唯一标识符最佳做法》

原则上建议避免识别更容易关联到特定个人的硬件标识符,而是使用实例 ID,也可以在安装时创建自己的 GUID,以变进一步降低隐私全风险。应用必须具有READ_PRIVILEGED_PHONE_STATE 签名权限才能访问设备的唯一标识符,并在具体场景中推荐了如下最佳做法:

  1. 避免使用硬件标识符。可以在大多数用例中避免使用 SSAID (Android ID) 和 IMEI 等硬件标识符,而必需功能也不会受到限制;
  2. 只为用户分析或广告用例使用广告 ID。使用广告 ID 时,务必遵守限制广告追踪标记,确保标识符无法与个人可识别信息 (PII) 建立关联,并避免桥接广告 ID 重置;
  3. 尽一切可能为防欺诈支付和电话以外的所有其他用例使用实例 ID 或私密存储的 GUID。对于绝大多数非广告用例,应使用实例 ID 或 GUID;
  4. 使用适合应用 API 以尽量降低隐私权风险。为高价值内容保护使用 DRM API,为滥用预防使用 Safety Net API。Safety net API 是能够确定设备真伪而又不会招致隐私权风险的最简单方法。

5. 默认启用 MAC 地址随机化

当设备连接到不同的 Wi-Fi 网络时,系统会随机生成不同的 MAC 地址

2 [安全]TLS 1.3 加密套件

平台的 TLS 实现支持 TLS 1.3。TLS 1.3 是 TLS 标准的主要修订版本,它提升了性能和安全性。我们的基准测试数据表明,与 TLS 1.2 相比,使用 TLS 1.3 可以将建立安全连接的速度提高 40%。

3.[WiFi]连接功能

1 WLAN 网络连接 API

Android Q 增加了对点对连接的支持。借助此功能,应用可以提示用户更改设备连接到的接入点。点对点连接用于“非网络提供”

2 WLAN 网络建议 API

Android Q 扩大了支持范围,现在允许应用提示用户连接到 WLAN 接入点。您可以提供关于要连接到哪个网络的建议。平台最终会根据来自您的应用和其他应用的输入来选择要接受的接入点

3 改进了 WLAN 高性能和低延迟模式

Android Q 扩展了 WLAN Lock API,以有效地支持高性能和低延迟模式。系统会针对高性能和低延迟模式停用 WLAN 节能模式,并且您可以在低延迟模式下启用进一步的延迟优化(具体取决于调制解调器支持)

4 DNS 解析器中的专用查找

Android Q 增加了对“通过传输层安全协议 (TLS) 执行 DNS”的原生支持,以进行专用 DNS 查找

5 WLAN Easy Connect

利用 Easy Connect 为使用 URI 的对等设备配置 WLAN 凭据。您可以通过各种方法来检索此 URI,包括从 QR 码或者通过蓝牙 LE 或 NFC。

6 WLAN 直连连接 API

利用预先确定的信息快速与 WLAN 直连建立连接的功能。此信息通过边信道进行共享,例如蓝牙或 NFC。

7 启用和禁用Wi-Fi的限制

应用无法启用或停用Wi-Fi。 WifiManager.setWifiEnabled()方法始终返回false。 如果需要,请使用设置面板提示用户启用和禁用Wi-Fi。

8 QR Code

允许您为 Wi-Fi 网络创建一个 QR 码,或者扫描一个 QR 码,就直接在设备的 Wi-Fi 设置中加入 Wi-Fi 网络。若要使用此新功能,需转到 Wi-Fi 设置,然后选择您的家庭网络,然后是共享按钮,上面有一个小 QR 码。这样避免了与人分享密码或询问别人密码的尴尬

9. 默认启用 MAC 地址随机化

当设备连接到不同的 Wi-Fi 网络时,系统会随机生成不同的 MAC 地址

4.[蓝牙] 连接导向型频道 (CoC)

可以使用 BLE CoC 连接在两个 BLE 设备之间传输较大的数据流

5. Calling and messaging

1 通话质量方面的改进

增加了在支持相关功能的设备上收集进行中的 IP 多媒体子系统 (IMS) 通话质量相关信息的功能,包括通过网络接听和拨打电话的质量。

2 选接电话和来电显示

可以将用户通讯录中不存在号码的来电标识为潜在骚扰电话,以及代表用户拒接骚扰电话而不响铃。

3 辅助拨号

自动将给定国家/地区的代码添加到已拨号码

4 共享快捷方式

允许直接与联系人共享内容

5 优化了紧急拨号

在紧急情况下支持 IRadio HAL v1.4的设备可以发起紧急拨号 紧急号码包括报警 火警 救护车等

6 基于eMBMS 未apps提供了一套标准的群通话的api

7 Android Q支持通过蓝牙实现远程SIM卡功能

6 [USB] Native MIDI API

可以使用 C/C++ 代码发送和接收 MIDI 数据、与 C/C++ 音频/控制逻辑进行更紧密的集成以及最大限度地减少对 JNI 的需求,即原生MIDI API,允许与音乐控制器交互

7. [Media]MediaCodecInfo

  1. MediaCodecInfo 中有一些新方法可以显示有关编解码器的更多信息
  2. MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints() 会返回编解码器可以渲染或捕获的 PerformancePoint 条目列表
  3. 调用 PerformancePoint.covers(PerformancePoint) 来检查给定的 PerformancePoint 是否会覆盖另一个性能点
  4. 支持AV1视频编解码器,HDR10 +视频格式和Opus音频编解码器

8. [Camera]

8.1 单色摄像头支持

  1. 新增了对 Y8 流格式的支持,以提高内存效率。
  2. 支持单色原始 DNG 捕获。
  3. 引入了 MONO 和 NIR CFA 枚举,以区分常规单色摄像头和近红外摄像头。
  4. 摄像头可以使用名为“动态深度格式”(DDF) 的新架构将图片的深度数据存储在单独的文件中

9. 无障碍服务

  1. 增加了一个新标记,用于指示其是否代表文本输入键的。您可以使用 AccessibilityNodeInfo.isTextEntryKey() 方法来访问此标记
  2. 无障碍对话框语音反馈
  3. 用于为用户针对互动式和非互动式的无障碍界面元素定义的超时提供支持

10. 自动填充

  1. 使用 FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST 标记来确定是否通过兼容性模式生成了自动填充请求
  2. 自动填充功能可以更新现有密码
  3. 增加了 FillResponse.setUserData(),让您能够在会话期间设置特定于应用的用户数据。这有助于自动填充服务检测包含特定于应用的内容的字段的类型

11. 调试

增加了对 Android JVMTI 实现中的 can_pop_frames 功能的支持。在调试时,此功能让您能够在断点暂停并调整函数的局部变量、全局变量或实现,然后重新运行函数。

12. UI 控件

1 Surface Control API

  1. 同步多个表面
  2. 跨进程的表面嵌入
  3. 底层生命周期管理

2. WebView

引入了一个新的 WebViewRendererClient 抽象类,应用可以使用它来检测 WebView 是否无响应。要使用此类,请执行以下操作:

  1. 定义自己的子类,并实现其 onRendererResponsive() 和 onRendererUnresponsive() 方法。
  2. 将 WebViewRendererClient 的实例附加到一个或多个 WebView 对象。
  3. 如果 WebView 无响应,则系统会调用客户端的 onRendererUnresponsive() 方法以传递 WebView 和 WebViewRenderer(如果 WebView 是单进程,则 WebViewRenderer 参数为 null)。您的应用可以执行适当的操作,例如向用户显示一个对话框,以询问其是否要暂停渲染流程。

3. 表情符号12.0(Unicode 12.0)

为聋人添加表情符号,一对情侣手上的表情符号序列,多达55种肤色和性别组合,服务动物背心更换为安全背心,新的表情符号为臭鼬,斧头,打呵欠的脸,风筝,懒惰,三角裤,潜水面罩,洋葱,降落伞等等。

4. 用于UI呈现的Vulkan API

根据这项技术的实施方式,最终结果可能是更好的电池寿命以及更流畅的动画和菜单转换。

5. 截图保留刘海屏

6. Undo app removal-撤消

在应用程序被删除几秒钟后,您还可以撤销更改,在屏幕底部找到“撤消”按钮,点击即可恢复应用程序。

13. 权限管理

1. 用户存储权限的变更-丰富权限的细粒度控制权

Q中用更精细的媒体特定权限替换并取消了 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE权限,需要申请新的媒体权限:READ_MEDIA_IMAGES,READ_MEDIA_VIDEO,READ_MEDIA_AUDIO,申请方法同原来的存储权限。

用户可细粒度地设置允许应用访问的共享文件的媒介类型(照片、视频或音频),从而让应用访问的数据类型和数量有必要性。并为每个应用程序单独设立了存储沙盒,应用程序读取自身的文件不需要特别授权,其他应用程序则无法直接访问;

2. 用户的定位权限的变更

为了让用户更好地控制应用对位置信息的访问权限,Android Q 引入了新的位置权限 ACCESS_BACKGROUND_LOCATION。新权限仅会影响应用在后台运行时对位置信息的访问权

参照IOS系统对地理位置的授权机制, 在“始终访问”外,安卓系统也增加了“仅在使用该应用期间”才能获取设备当前位置信息得选项,确保用户可以自行控制是否允许后台应用获知地理位置;

3. 不再接受SYSTEM_ALERT_WINDOW权限的申请

因为悬浮窗会使用额外的内存,这对于低内存配置的Android设置带来很明显的性能消耗

14. 多显示器支持

能够连接到外接显示器并同时使用两个屏幕(手机/平板电脑和显示器)

15. 系统

1. Activity后台活动限制

Android Q 对应用未经通知用户就启动进行了极大地限制,在Android Q上运行的应用只有在满足以下一个或多个条件时才能启动活动:

  1. 该APP具有可见窗口,例如有前台Activity
  2. 位于前台的另一个 APP 发送属于该应用程序的 PendingIntent。
  3. 系统发送属于该 APP 的PendingIntent,例如点击通知。
  4. 系统向应用程序发送广播,例如SECRET_CODE_ACTION。只有应用程序预期启动UI的特定广播才免除。

2. 浮动设置面板,允许直接从应用程序更改系统设置

3. ZIP 文件实用程序库变更

Android Q 对 java.util.zip 软件包(用于处理 ZIP 文件)中的类做出了变更。让库的行为在 Android 和使用 java.util.zip 的其他平台之间更加一致

4. java_sdk_library

java_sdk_library 是Android Q 新提供的一种编译语法 目的是解决多个library之间兼容性的问题 例如系统的和厂商自定已的library 厂商可以通过java_sdk_library 编译自己的library

5. Hardware abstraction layer (HAL)

实现hal的动态关停 例如,如果用户未使用 WLAN,则 WLAN 子系统不应占用内存、耗损电量或使用其他系统资源

6. HIDL

Android Q 提供了一中全新的aidl机制 stable aidl
他和aidl的区别在于

  1. 接口是直接定义在aidl_interfaces文件中的
  2. Interfaces can contain only structured data. Parcelables representing the desired types are automatically created based on their AIDL definition and are automatically marshalled and unmarshalled.
  3. Stable AIDL是向前兼容的 可以转化aidl to stable aidl

详情参考:https://source.android.google.cn/devices/bootloader/stable-aidl

7. APEX file format

新支持的一种文件格式

16. 更新

1. 允许应用程序降级

当对商店更新后的版本后悔时,可以“回到过去”即回滚到旧版

2. Modular system components

android Q 提供了一些系统组件可以通过被单独的通过googleplay 或者ota升级 不依赖整个android生态

3. system.img独立更新

用户可以从网上下载单独的system.img刷机 且不会有变砖的风险

17. 共享内存

Ashmem 更改了 /proc//maps 中的 dalvik 映射的格式,这会影响那些直接解析映射文件的应用。如果应用依赖于 dalvik 映射格式,则应用开发者应该在设备上测试新的 /proc//maps 格式并相应地进行解析。

以 Android Q 为目标平台的应用无法再直接使用 ashmem (/dev/ashmem),而必须通过 NDK 的 ASharedMemory 类访问共享内存。此外,应用无法直接对现有 ashmem 文件描述符进行 IOCTL,而必须改为使用 NDK 的 ASharedMemory 类或 Android Java API 创建共享内存区域。这项变更可以提高使用共享内存时的安全性和稳健性,从而提高 Android 的整体性能和安全性。

18. 暗黑模式

暗黑模式适用于任何地方,如果应用不支持暗黑模式,那么系统将自动设置一个暗黑模式。

19. 隐私增强

当应用程序使用您的位置数据、麦克风或摄像头时,您将在通知栏中看到相应的图标, 它会告诉你哪个应用程序正在使用该权限。

20. App使用情况

  1. UsageStats应用使用体验升级。
  2. Android Q可以设置app为grayscale display mode
  3. 进入Suspended状态的APP不能播放音频
  4. android.preference库被弃用。使用AndroidX preference库作为替代。

21. 设置targetSdkVersion为Q的APP

  1. 非SDK接口限制。
  2. Shared memory。
    target Q的APP不能再直接使用ashmem(/dev/ashmem),可通过NDK的AShareMemory类访问shared memory。
    In addition, apps cannot make direct IOCTLs to existing ashmem file descriptors and must instead use either the NDK’s ASharedMemory class or the Android Java APIs for creating shared memory regions. (这里不是很熟悉,没有翻译,sorry)
    这些改变会增加使用shared memory时的安全性和鲁棒性,提升性能和Android系统的安全性。
  3. ART只接受系统生成的OAT文件。
    ART(Android Runtime)不再通过应用进程调用dex2oat。
  4. 强化了ART的AOT检查。
  5. Fullscreen intent的权限变化。
    使用fullscreen intent的app,必须在manifest文件中声明USE_FULL_SCREEN_INTENT权限,该权限是一个普通权限,系统会自动授权。
    如果APP在没有申请USE_FULL_SCREEN_INTENT权限的情况下,通过fullscreen intent创建一个通知,那么系统会忽略该请求,并在控制台输出以下信息:
    Package [pkg]: Use of fullScreenIntent requires the USE_FULL_SCREEN_INTENT permission

22. 电池

1. 预估使用时长

在下拉通知栏顶部加入了一项新内容,即剩余续航时间。和电池图标的百分比不同,它会直接告诉你手机还能用多长时间,相当于是将设置项中的「预估使用时长」放到了通知栏上。目前我们系统上面是放在电池电量界面的

2. Doze mode

Android Q 可以在任何状态下enable

3. Activity后台活动限制

Android Q 贯彻了PBD(privacy by default)的精神,原则上将禁止后台应用未经通知用户就直接启动(Android O已经要求启动麦克风、摄像头权限时进行增强提示,Android P直接禁止后台应用启用麦克风、摄像头及其他传感器访问权限,Android Q进一步扩大了对应用在后台启动的限制范围)。若后台应用运行的程序需启用,需要使用高优先级通知,并提供一个全屏 intent。否则,一旦应用程序尝试从后台运行,系统将会向用户发送警告消息;

4. 暗黑模式

当应用黑暗模式时,浏览Pixel 3上的界面和基本应用程序可以减少30%的功耗。同时,黑暗模式也会影响第三方应用程序的功耗,可节省高达20%的电量!

全局黑暗模式可以达到延长具有OLED显示屏的电池寿命的效果。

23. 原生支持录屏

24. 共享功能改进

25. Display

  1. Android Q支持 HDR10, VP9, and HDR10+ 回放
  2. 优化了Text classification 一种新的文字功能系统 例如通过选中一段http地址 在它弹出的popwindow中显示用浏览器打开 如果选中一段email格式的地址popwindow中显示跳转到email的item
  3. 支持Zawgyi font 字体的渲染
  4. 限制隐藏图标
    android Q 要求所有app必须在Launcher 有个icon 除非如下几种情况
  • a 系统app 升级过的也算
  • b It’s a managed profile admin (work profile owner).
  • c 这个app没有申请任何的权限
  • d 这个app不含有任何的组件例如( activities, content providers, broadcast receivers, and services).

【转】AndroidQ新特性相关推荐

  1. androidq获取文件正式路径_android Q 新特性

    谷歌针对的Q预览版的特性分享,内容涉及比较多.遗憾的是没有提供PPT给参会者,如下内容根据提纲与回忆整理,如有缺失敬请谅解. 适配Q重点归纳 限制后台拉activity 非系统应用无法获取到IMEI ...

  2. Android Q:新系统名称和新特性整理

    目前关于 Android Q 的相关新闻已经流出,这里我们对 Android Q 的系统名称和新特性进行整理. Android Q 的名字: 很想知道 Android Q 今年使用哪个名字作为系统的名 ...

  3. Android Q(10.0 API29)版本新特性和兼容性适配

    摘要 1.本文档基于谷歌AndroidQ官方文档和一加Q版本应用兼容性整改指导 2.本文档主要对影响比较大的部分进行简单总结,内容并不全面: 3.版本号对应关系: Android-Q = Androi ...

  4. Android 1.5 -10.0 都有哪些新特性?

    点击上方"开发者技术前线",选择"星标" 13:21 在看 真爱 本文部分整理 公众号 终端研发部 作者:嘟嘟呢 https://blog.csdn.net/u ...

  5. Android 1.5到10.0 都有哪些新特性?

    文章转自:https://www.itcodemonkey.com/article/13183.html Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘:使用widgets实现桌面个 ...

  6. Android 10正式版发布,新特性来袭!

    点击上方"开发者技术前线",选择"星标" 13:21 在看 真爱 原文链接:https://dwz.cn/FQ118EWj 在美国时间9月3日,谷歌发布了And ...

  7. Android 1.5 到 10.0 新特性

    Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘:使用widgets实现桌面个性化:在线文件夹(Live Folder)快速浏览在线数据:视频录制和分享:图片上传: 更快的标准兼容浏览 ...

  8. Android 十年总结:1.5 到 10.0 都有哪些新特性?面试常问题

    文热导读|   点击标题阅读 知识星球第三期开园了- 转自:嘟嘟呢 Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘:使用widgets实现桌面个性化:在线文件夹(Live Folde ...

  9. 我要学ASP.NET MVC 3.0(一): MVC 3.0 的新特性

    摘要 MVC经过其1.0和2.0版本的发展,现在已经到了3.0的领军时代,随着技术的不断改进,MVC也越来越成熟.使开发也变得简洁人性化艺术化. 园子里有很多大鸟都对MVC了如指掌,面对问题犹同孙悟空 ...

最新文章

  1. JavaScript对象数组示例
  2. easypoi导出word表格_java如何导出word和wps文档
  3. Java过滤特殊字符的正则表达式
  4. Intel Realsense D435使用生成器初始化多个摄像头(c语言vector)
  5. Pytorch中的variable, tensor与numpy相互转化
  6. mysql 语句性能分析_mysql的sql语句的性能诊断分析
  7. Vue父子组件之间的传值
  8. 接入 SDK 结果翻车了?了解 SDK 的那些事
  9. 头条号为什么把作者抛弃了?
  10. unity 模型渐变消失_Unity 雨水滴到屏幕效果
  11. 【报告分享】2020巨量引擎营销通案.pdf(附下载链接)
  12. @ApiImplicitParam注解的dataType、paramType两个属性的区别?
  13. rap2检测哪些接口在使用_使用四合一气体检测仪应注意哪些方面?-逸云天
  14. 网络系统设计的一般步骤
  15. CANoe教程:CAPL编程
  16. 电脑小鸟壁纸怎么彻底删除?
  17. 批量处理:读取文件夹,将json文件转化为txt文件
  18. 算法分析:大O符号/大Ω符号/大Θ符号/小o符号/小w符号
  19. 文件上传漏洞 — ::$DATA绕过、点和空格绕过
  20. 新年将至, 程序员如何以代码送出新春祝福

热门文章

  1. win10安装anaconda详细教程
  2. MATLAB算法实战应用案例精讲-【智能优化算法】北方苍鹰优化算法(NGO) (附MATLAB代码实现)
  3. 玩客云刷armbian的坑
  4. LitePal+RecyclerView+checkBox实现便签功能(仿小米便签)
  5. word怎么设置第三页或别的页码为第一页
  6. 遥感图像分割数据集整理(发布)
  7. 农信社计算机专业知识考题,吉林省农村信用社考试笔试试题(计算机专业部分试题)...
  8. 用numpy库手写算子六:Dense
  9. IPHONE实景导航开发总结(一)
  10. Java 安全之反序列化漏洞