Android Q Labs 纪要(一)

5.20日在深圳现场听了Google Android Team组织的Android Q Labs的分享,简单做了个纪要,关注的朋友可以了解下。

(机缘巧合,官方工程师有看这篇文章,指出其中device ID的截图有错,SDK深灰名单的描述有错,感谢纠错,但是因为要休假旅行,所以没有时间详细再看回放修改,6.10号以后会更正为正确的内容。)

完整内容可以看这个视频直播:https://juejin.im/e/android-q-labs?from=groupmessage&isappinstalled=0

虽然直播是上海现场的,但是日程和内容和深圳场是一样的。

Android Q Labs 纪要(一)_第1张图片

 

Android Q Timeline

Android Q Labs 纪要(一)_第2张图片

 

Android Q Suport

支持Android Q的手机,国内几大厂商已经都支持了,梳理了一下品牌及分布,如下方表格。

Google

小米

VIVO

OPPO

OnePlus

其他

LG

Pixel /XL

小米 MI 9

Vivo NEX S

OPPO Reno

OnePlus 6T

 

Tecno Spark 3 Pro

LG G8

 

Pixel 2/XL

小米 MIX 3 5G

Vivo X27

 

 

Realme 3 Pro

 

 

Pixel 3/XL

 

 

 

 

ASVS ZenFone SZ

 

Pixel 3a

 

 

 

 

Sony Xperia XZ3

 

 

 

Android Q 优化

Android Q Labs 纪要(一)_第3张图片

分享:支持生成分享的shortcut,即可预览展示分享的内容,快速复制

通知:支持高、弱优先级的通知设置,遵循用户设置为主。系统同时会对应用的通知状态进行预判断,比如会认为通话、message等是高优先级的通知。

通知处理:系统支持通知的一些回复的预测,以及默认处理。并且这个预判和处理不会发送到云端,仅在设备处理,保证用户的隐私。

 

Android Q  Theme

隐私:为用户提供透明度、可控制性及数据上的保护

性能:改善性能有关的痛点,游戏开发、UI开发等

可更新性:把主要组件放在OS版本升级时同步更新

 

WI-FI权限:

APP不能自行开关WI-FI,设备政策控制程序(Device Policy Controller)才能调用网络配置API。WifiManager.setWifiEnabled()方法始终返回false。

如果需要,请使用设置面板提示用户启用和禁用Wi-Fi。使用getConfiguredNetwork()、updateNetwork()

Telephony、Wi-Fi、蓝牙扫描API,需要获得精确位置许可,即必须先获取ACCESS_FINE_LOCATION权限,否则在Android Q上运行时,应用将无法在Wi-Fi,Wi-Fi Aware或蓝牙API中使用多种方法。

 

设备ID访问限制:

仅系统应用才可读取IMEI 和Build serial,系统预装的应用,可通过 READ_PRIVILEGED_PHONE_STATE 获得设备ID。

targetSdk>=Q,将导致SecurityException

targetSdk

常见问题的解决方案:

地址位置权限:

Pre Q:ACCESS_COARSE_LOCATIO

Android Q:ACCESS_COARSE_LOCATION、ACCESS_BACKGROUND_LOCATION

                    另外新增 ACCESS_MEDIA_LOCATION 权限。控制程序访问照片的位置。

 Android Q 用户可通过以下三种方式对位置权限进行管理:

  • 始终允许: 应用可在任何时段获取位置信息
  • 仅在使用期间允许: 应用只能在被使用时获取位置信息
  • 拒绝: 应用无法获取设备的位置信息

权限获取的方式依然是在Android Manifest文件中





为了让用户体验更好,Google针对开发者做了适配处理,以targetSdkVersion来进行判断和控制。

示例:

地图APP,targetSdkVersion 为Android Q,希望始终访问位置信息功能时,需要开启ACCESS_COARSE_LOCATION 和ACCESS_BACKGROUND_LOCATION权限。

地图APP,targetSdkVersion为 Android 9 (API 等级 28) 或更低,当请求ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION时,系统会自动为应用添加ACCESS_BACKGROUND_LOCATION权限。

 

渐进式授权

通话记录:READ_CALL_LOG、WRITE_CALL_LOG、ROCESS_OUTGOING_CALLS

短信:READ_SMS、SEND_SMS、WRITE_SMS、RECEIVE_SMS、RECEIVE_WAP_PUSH、RECEIVE、RECEIVE_MMS

 

比如:允许APP获取该设备的位置信息吗?只有当您使用该应用时,该应用才有权访问您的信息。

 

存储授权

 

应用私有存储区保持不变,即Context.getDataDir()。

公有存储MediaStore:常见的MediaStore媒体文件有以下三类特定集合:音频 (Audio)、视频 (Video) 和图片 (Images)。新系统用了更细致的的媒体特定权限READ_MEDIA_IMAGES和READ_MEDIA_STORAGE权限,来限制访问。其它类型的文件,可储存在新的下载文件即Downloads集合中,并且MediaStore以外的文件需要通过系统文件管理器来访问。

在使用 MediaStore 的情况下,应用无需权限便可访问自己创建的文件,但是如果应用需要访问由其它应用提供的文件,则需请求权限。另外,在用户卸载应用之后又重新安装的情况下,原MediaStore的文件视为其他应用提供的文件。需要再次向用户请求权限,才能访问之前所提供的媒体文件。

 

 

targetSdkVersion

Android Q更新了对targetSdkVersion的要求。

至于更新的原因官方有简单说一下:

  • Google Play上的应用API级别依然26以下的占比趋向0%
  • 恶意软件的targetSdkVersion偏低,为绕过高版本的安全隐私改进
  • 国内市场也引入targetSdkVersion要求
  • 主流OEM厂商和应用商店已签高级API协议(自律公约)

要求:

  • 2018.5月:必须升级到26或以上
  • 2019.8月:新应用的targetSdkVersion必须升级到28或以上
  • 2019.11月:已有应用的新版本targetSdkVersion必须升级到28或以上

另外,对如下情况进行了安装警告,以及运行警告。

安装警告出现在App安装时:

  • 安装警告
  • 只对新安装的APK报警
  • 只在安装时报警
  • 适用于所有来源的安装
  • 用户仍可选择继续安装应用

Google Play Protect条件:targetSdk

2019.8月:新应用的targetSdkVersion低于26时

2019.11月:已有应用的新版本targetSdkVersion低于26时2020年及以后:每年持续更新targetSdkVersion要求

运行警告出现在不满足要求的App运行时,并区分了国内和国外,国外依然是上述要求,而国内是:

Android P:针对targetSdkVersion<17的应用

Android Q:针对targetSdkVersion<23(Android M)的应用

另外,对于会弹出运行警告框的用户,开发需要对检查更新icon进行处理:ACTION_SHOW_APP_INFO(需安装程序支持处理intent)

 

SDK List

另外Android Q 也有一些SDK名单的更新。

Android Q Labs 纪要(一)_第4张图片

名单

描述

影响

白名单

公开SDK

 

浅灰名单

检测到应用在使用的接口

允许访问,可能加入警告或日志

深灰名单

(maxTargetSDK = P)

接近浅灰名单的接口,并在Android新版本中已经增加了公开替代接口

当应用的targetSdkVersion 在P 或更早时允许访问;否则(应用的targetSdkVersion在Q或以后时)禁止访问

黑名单

我们认为没有应用的非SDK接口

禁止访问,抛出运行时错误

具体的非SDK接口更新文档可以在官网上看:

官方也给了开发者建议,可以通过如下三种方式测试用了哪些非SDK接口:

  • 构建targetSdkVersion为Q的调试应用

adb  logcat

“Accessing hidden field Landroid/os/Message;->flags:l(light greylist,JNI)”件放在OS版本升级时同步更新

  • 使用StrictMode API

detectNonSdkApiUsage()+penaltyListener()

处理onVmViolation回调

  • Veridex静态分析工具

AOSP中提供源代码及预编译可执行文件

跟随每次Q Beta 版本发布更新

不支持JNI调用,对反射调用的检测结果不完全准确

 

Android Q Labs 纪要(一)_第5张图片

Android Q主要的变化还是围绕在隐私、性能和可更新性上。

关于折叠屏和背景主题的更新,参见另一篇文章:原 Android Q Labs 纪要(二):折叠屏和主题背景

你可能感兴趣的:(Android开发)