没有合适的资源?快使用搜索试试~ 我知道了~
首页安卓Q版本兼容性适配指导v2.3.pdf
资源详情
资源评论
资源推荐

应用2019上架谷歌Play商店适配指导
Google P版本变化点 说明 第三方应用影响 适配指导
ART 非SDK接口管控 Android 9 引入了针对非 SDK 接口的使用限制,无论是直接使用还是
通过反射或 JNI 间接使用。 无论应用是引用非 SDK 接口还是尝试使用
反射或 JNI 获取其句柄,均适用这些限制。
所有使用非SDK接口的三方应用 • 重新做接口扫描
• 关注应用有没有使用深灰名单和黑名单非SDK接口,需要
适配和整改
• 无法整改的接口说明详细使用场景和理由反馈给谷歌申请
加灰名单
内联方法不能跨
dex限制
如果应用内内联方法出现跨dex场景,系统将会直接abort,导致应用
出现崩溃
使用热修复+插件框架的应用(淘
宝、爱奇艺等等)
• 尽量避免使用不同的classloader来加载相关的(有互相调
用可能)类
• 如果一定要这样做的话,需要避免内联(比如在不期望被
inline的函数里面加个try catch,这样compiler就不会将
这个函数inline)
Frame
work
Apache HTTP 客
户端弃用
从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除
且不可用于应用。
1.使用热修复或者插件框架的应用
2.TargetSdkVersion>=28的应用
• 如果要继续使用 Apache HTTP 客户端,以 Android 9 及
更高版本为目标的应用可以向其 AndroidManifest.xml 添
加以下内容:<uses-library
android:name="org.apache.http.legacy"
android:required="false"/>
• 使用 HttpURLConnection 类替代apache-http
1. 谷歌API LEVEL要求,应用2019上架谷歌Play商店需要应用升级自己的targetSdkVersion到28,具体参考:
https://android-developers.googleblog.com/2019/02/expanding-target-api-level-requirements.html
2. 2018年要求升级targetSdkVersion到26;
3. P版本上通过targetSdkVersion控制生效的变更需要重点关注,其他版本变更的适配请关注:
https://developer.android.google.cn/distribute/best-practices/develop/target-sdk.html

Android Q版本变更列表
Google Q版本变化点 说明 第三方应用影响 Q版本处理策略
隐私和
安全
应用存储空间限制 • 应用通过File接口只能读写应用自己沙箱目录的文件,无法直接
读写沙箱外文件
• 应用需要使用安卓提供的接口读写沙箱外的文件
对应用需要读写应用沙箱外文件的场景
都有影响
需要应用适配解决
禁止应用读取
deviceid和SN号
• 通过新增的权限控制:READ_PRIVILEGED_PHONE_STATE
• 只有系统签名的应用才能申请,三方应用无法申请
影响应用依赖deviceid的功能,包括:
数据上报、用户画像、推荐、广告等功
能;金融类的应用需要重点验证对用户
功能是否会产生影响
需要应用适配解决
Wifi Mac地址随机
化
• P版本已有该功能,未使能,可以在开发者选项打开
• Q版本默认使能该特性
三方应用无法获取
手机的USB序列号
• targetSdkVersion>=Q的应用有影响
• 新增权限控制:android.permission.MANAGE_USB
• 该权限需要系统签名才能申请
同上 应用升级TargetSdkVersion需要适配
不允许后台弹页面 • 禁止应用后台启动activity
• 目前版本未真的禁止,有toast告警提示,需要开发者整改
影响应用后台弹页面的场景:闹钟、音
乐锁屏、语音和视频电话
需要应用按照通知提醒的方式适配解决
不允许应用隐藏图
标
• 所有三方应用的图标都会显示
• 如果应用没有启动页面,点击图标跳转到应用的详情页面
只有服务的应用 • 需要应用检查是否会有图标的问题
• 如果确实需要隐藏,可以通过担保应用担保来适配
禁止应用后台访问
剪切板
• 除非应用程序是默认输入法编辑器(IME)或当前具有焦点的
应用程序,否则应用程序无法访问剪贴板数据。
后台读取剪切板场景 需要应用适配解决
位置权限三态化 • Android Q 允许用户指定应用从不、仅在使用期间 (运行时),
或者任何时候 (退到后台) 都能获取位置信息。
• 如果用户选择仅在使用,那么前台服务需要在manifest定义的
前台服务中增加android:foregroundServiceType=“location
”
才能访问位置信息
影响后台gps定位场景:百度地图、高
德地图后台导航
• 后TargetSdkVersion>=Q,应用需要后台定位需要申请后
台定位权限ACCESS_BACKGROUND_LOCATION
• 前台服务设置type:
Service.startForeground(Notification notif, int
serviceTypes);
AOSP Hidden API • 名单类型变化,新增:max-o和max-p名单类型
• 名单变化:黑名单增加
所有使用非SDK接口的三方应用 • 使用最新Q版本的工具重新做接口扫描
• 有问题的接口需要应用适配和整改
• 无法整改的接口说明详细使用场景和理由反馈给谷歌申请加
灰名单
折叠屏 • 提供统一的折叠屏方案和适配接口 • 状态切换,应用页面重新加载问题
• 屏幕比例适配问题
需要应用适配解决

Android Q版本变更列表
Google Q版本变化点 说明 第三方应用影响 Q版本处理策略
多媒体 并发录音 • P不支持并发录音,录音焦点不可抢占
• 支持并发录音,录音焦点可以抢占
应用后台录音场景,可能录到空
数据
• 需要应用通过接口监听焦点状态变化,做出对应处理
访问所有相机信
息需要获得权限
• Android Q更改了默认情况下getCameraCharacteristics()方法返回的
信息的广度。特别是,您的应用必须具有CAMERA权限才能访问此方
法的返回值中包含的潜在设备特定元数据。
相机场景 需要应用适配解决
MediaProvider • “_data”值变化,返回的值不再是文件真实路径
• 查询sql语句管控,不合法的查询列会导致返回的查询数据为空,除了
mediastore中定义的列以外的信息,其他的信息,无法查询成功
• 位置信息被删除,无法通过MediaProvider直接查询
影响应用的多媒体查询,可能导
致查询结果为空
• 应用不能再通过获取的“_data”值作为文件真实路径判断
文件是否存在或者直接进行读写
• 应用对MediaProvider的查询语句排查和整改
• 应用读取位置信息适配:需要应用动态申请
ACCESS_MEDIA_LOCATION权限,并调用MediaStore
的setRequireOriginal方法
系统应
用
安装器安装应用
接口废弃
• Q版本不允许使用intent(action为INSTALL_PACKAGE),在intent
中通过 “file://” 附带文件路径拉起安装器安装应用
• 主要影响TargetSdkVersion<24的应用
应用内安装 使用FileProvider适配,使用content Uri替代file Uri解决
Q版本通知规格变
更
• 屏通知增加权限:对于TargetSdkVersion>=Q且通知设置了全屏属性
(fullscreenIntent),需要增加USE_FULL_SCREEN_INTENT权限通知
• 优先级(Importance)调整:增加通知助手NotificationAssistant去调
整通知优先级
• 全屏通知在桌面状态显示成横幅:带有fullscreenIntent的通知在桌面
显示成横幅,在锁屏界面显示成全屏;(前提:Importance>=4)
不适配可能出现:
• 通知无法横幅显示
• 通知无法全屏显示
• 通知无法响铃、震动
需要应用适配解决

Android Q版本变更列表
Google Q版本变化点 说明 第三方应用影响 Q版本处理策略
OS 禁止三方应用调
用dex2oat
• 通过selinux权限限制
• 只对TargetSdkVersion>=Q有影响
加固和需要调用dex2oat完成的功
能
应用不要自己调用dex2oat
OpenGL切换
Vulkan
• 2D 绘制,hwui通路增加skiavulkan pipeline;
• 3D 绘制,opengl接口增加Angle实现,可以选择通过vulkan实现
opengl API
• vulkan版本升级到vulkan1.1;
• 对外接口没有变化,不会导致
兼容性问题,但是应用也需要
排查有没有依赖OpenGL的私
有接口
• 可能存在显示问题
应用排查是否依赖OpenGL的私有接口,如果有需要整改
短距 启用和禁用Wi-Fi
的限制
• 在Android Q上运行的应用无法启用或停用Wi-Fi。
WifiManager.setWifiEnabled()方法始终返回false。
• 如果需要,请使用设置面板提示用户启用和禁用Wi-Fi。
对应用直接停止和开启wifi的功能
有影响
需要应用使用设置面板提示用户开启和禁用Wifi
电话,Wi-Fi,蓝
牙API所需的精确
位置权限
• TargetSdkVersion>=Q:除非您的应用具有ACCESS_FINE_LOCATION
权限,否则在Android Q上运行时,您的应用无法在Wi-Fi,Wi-Fi
Aware或蓝牙API中使用多种方法。
• targetSdkVersion<Q:不受影响,只需要申请
ACCESS_COARSE_LOCATION或者ACCESS_FINE_LOCATION即可
对通过wifi,网络和蓝牙接口定位
有影响
应用升级TargetSdkVersion的话需要适配
Wifi和蓝牙使用需
要打开位置开关
• WiFi扫描/蓝牙扫描,需要开启定位服务 对应用的wifi和蓝牙扫描功能有影
响
需要开发者开启wifi和蓝牙扫描之前判断位置开关是否开启,
如果没有开启提示用户打开再发起扫描
兼容性 64位支持 • 新开发的应用,2019-8-1以后上架谷歌Play要求应用的native代码需
要提供64位的版本
• 更新的应用,2019-11-1以后上架谷歌play要求应用的native代码需要
提供64位的版本
需要上架谷歌Play的应用 • 应用自己的Native代码增加64位版本
• 使用的第三方的SDK的native代码增加64位版本
API
LEVEL
2019谷歌Play上
架API LEVEL政策
• 新开发的应用,2019-8-1以后上架谷歌Play要求应用的
TargetSdkVersion>=28
• 更新的应用,2019-11-1以后上架谷歌play要求应用的
TargetSdkVersion>=28
需要上架play商店的应用 重点关注TargetSdkVersion控制生效的一些特性,特别是P
版本
最小
TargetSdkVersio
n要求至少23
• 应用的TargetSdkVersion<23,应用首次启动会弹框警告 所有三方应用 需要应用升级TargetSdkVersion到23

应用存储空间限制-特性介绍
1. Android Q为每个应用程序在外
部存储设备提供了一个独立的存储
沙箱,应用通过路径创建的文件都
保存在应用的沙箱目录
2. 共享集合:如果应用的一些文件
是用户选择下载保存的,应用卸载
的时候用户不希望删除,这部分文
件开发者可以通过MediaProvider
接口保存在公共共享集合,包括:
照片、视频、音乐和下载集合
3. 新的访问多媒体文件的权限:应
用读写自己创建的文件不需要权限
,但是如果需要读取其他应用创建
的多媒体文件就需要申请对应的权
限,通过MediaProvider接口读取
4. 读写其他应用的下载公共集合文
件需要使用SAF的方式读写
5. 目前版本该特性没有默认开启,
需要开发者通过命令开启:adb
shell sm set-isolated-storage on
6. 参考谷歌提供的官方适配指导文档:https://developer.android.google.cn/preview/privacy/scoped-storage
剩余29页未读,继续阅读




















hongye_main
- 粉丝: 9
- 资源: 3
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0