楼主

7820发表于 2019-08-15 14:38:53
只看该作者楼主

Android Q | 开发者最常见问题 [复制链接]

本帖最后由 霜雪千年2019-12-02 13:56:56 编辑


Device ID


Q: 预装应用可以获取设备 ID,这里对预装应用的定义、标准和范畴是什么?是否由厂商系统设置名单?
A: 厂商预装的系统应用。具体来说,应用必须获得 READ_PRIVILEGED_PHONE_STATE 权限,而这个权限只可能被赋予预装在系统分区的应用。


Q: IMEI 可以帮我们判断用户是否更换了设备。在 Android Q 里有没有合适的替代方案?
A: 以下是针对常见场景的方案


Q: Android Q 上禁止了对于设备 IMEI 的获取,那么如何更好地唯一识别设备呢?
A: 针对不同的场景,我们建议用不同的唯一标识符。


Q: Device ID 废弃后,如何识别卸载再安装的用户?
A: 在 Android 8.0 或以上的版本中,可以考虑使用 SSAID (Settings.Secure.ANDROID_ID),因为它的生成是基于设备用户安装应用签名的密钥。


Q: 在同一台设备上,不同应用的 Android ID 是否相同?
A: 对于由不同开发者密钥签名的应用或同一设备上的不同用户,Android ID (Setting.Secure.ANDROID_ID 或 SSAID) 是不一样的。如果不同应用由同一开发者密钥签名,那同一用户在这些应用间的 Android ID 是相同的。



后台启动 Acitvity 限制


Q: 如果用户在设置里关闭了我的 app 通知,我的 app 是不是没有办法在后台通过通知来启动 Activity 了呢?对此 Google 有什么建议?
A: 是的。所以请提高应用品质,让用户满意才不会关闭您的 app 通知。也请在应用里多给用户提示,让用户了解关闭通知所造成的改变。当然,使用 Notification Channel 将通知分类也是一个好方法。


Q: 禁止后台启动 Activity 是否会对 adb 启动 Activity 等测试场景有影响,如果是的话有办法绕过吗?
A: 没有影响。Android Studio 安装与测试的流程也是用了 adb 的机制而不会受到影响。


Q: 我的网络电话应用或闹钟应用会受背景限制影响吗?
A: 为了提高用户体验,当用户正在使用其他应用时,请善用 heads-up notification 通知用户。

详情请参阅
https://developer.android.google.cn/preview/privacy/background-activity-starts#create-notifications


Scoped Storage


Q: 应用如何暂时豁免 Q 的外部存储沙箱限制。
A: 不会。所以我们强烈建议应用在 Q 版本时作出适配,但如您需要多点时间,可考虑在 Manifest 中增加 <application android:requestLegacyExternalStorage = “true”>,如果要检测是否已豁免,使用 Environment.isExternalStorageLegacy() 函数。


Q: 外部存储沙箱限制在下一版本仍可获得豁免吗?
A: 不会。所以我们强烈建议应用在 Q 版本时作出适配。


Q: 我的文件管理器/电子书应用与 Q 不兼容,该如何做?
A: 我们建议档案管理类应用使用 OPEN_DOCUMENT_TREE 让用户选择一个子目录,使应用能够存取该目录下的档案。经此方法,用户亦能够存取任何经由 DocumentsProvider 所提供,在云端或在本地的档案。


Q Timeline

Q: Android Q 会在什么时候推出?
A: 2019 年第三季度。


详情请参阅
https://developer.android.google.cn/preview/overview



Q: Android Q 源码大概什么时候会开源出来?
A: 2019 年第三季度,Android Q 正式推出当日。


Q: Android Q 的应用什么时候能上传到 Google Play?
A: 从 Beta 4 开始。


Q: 支持 Android Q 开发者预览版的设备只有 Google Pixel 吗?
A: 现时共有 21 款 Beta 设备支持 Android Q 开发者预览版。

详情请参阅
https://developer.android.google.cn/preview/devices


64 位应用


Q: Android Q 是否只支持 64 位应用?
A: 不是。但自 2019 年 8 月起,上传到 Google Play 的新应用必须包含 64 位版本。


Q: 许多 .so 文件由开源 SDK 提供,但很久没有维护更新了,是不是必须放弃该 SDK?
A: 开发者可以从源码编译 64 位的 .so 文件。


Q: 我们在有些 SDK 提供商处了解到,他们建议将 32 位 .so 文件直接放入 64 位的文件目录,这种做法是否可以?
A: 不行。这样只支持 64 位的设备将无法运行您的应用。而且这样亦无法通过 Google Play 的检测。



Q: 为应用添加 64 位架构支持会带来 APK 的体积增大,但 Google Play 只允许上传最大 100MB 的 APK,这种情况应该如何解决?
A: 我们强烈建议您使用 Android App Bundle,这是 Android 所支持的一种官方发布格式,可让您以更高效的方式开发和发布应用。当您发布 Android App Bundle 文件到 Google Play 时,如果 Google Play 分析并发现任何一个可能设备的下载包超过 150MB 时,将会拒绝这个 App Bundle 文件。如: 当用户首次下载您的应用时,基础 APK 加上为特定设备而构建的 APK 之和不超过 150MB。除了 Android App Bundle 方式,您也可以为不同架构发布不同的 APK 文件。


Q: 2019 年 8 月 1 号开始没有支持 64 位的在线应用,64 位的手机还能不能下载使用?
A: 因为 Google Play 只提供对适配该设备的应用下载,所以除非设备同时也支持 32 位运行环境,否则将不能下载没有支持 64 位的应用。




Android 性能


Q: 近期的 Android 版本在提升性能上做了什么努力?
A: Android Q 为 ART 运行时新添了多项改进。让开发者无需更改任何代码,便可有效缩短应用的启动时间,减少内存消耗。例如,我们改进了 Android Q 中的 Zygote 进程,提早开启应用进程并将其移至安全容器中,如此一来,应用便做好了随时启动的准备。此外,我们还在应用的系统启动映像中加入了更多信息,例如类,并借助线程管理加快映像文件的加载速度。
与此同时,我们还在 ART 的并发复制垃圾收集器 (Concurrent Copying Garbage Collector) 中加入了分代收集机制 (Generational Garbage Collection)。分代算法可以将新生代的对象单独收集出来,这样效率更高,而且与 Full-heap GC 相比成本更小,释放空间也十分可观。总体而言,引入分代算法后,ART 垃圾回收速度和 CPU 利用效率有了明显提升,在减少垃圾的同时,帮助应用在低端设备上流畅运行。
我们在近期的 Android 版本中也加强了对后台运行以及隐式广播的限制,同时我们也改进了低电耗模式。在 Android 9 中,我们引入了一项名为应用待机群组 (App standby buckets) 的特性。但更重要的是,我们希望和开发者一同去改进应用的质量。


针对非 SDK 接口的限制


Q: 非 SDK 接口的灰名单是何时确定的?是否会不定时动态更新呢?
A: 非 SDK 接口的各类名单是随着每个 Android 版本的发布而更新的。


Bubbles


Q: Bubbles 为何要放在开发者选项?
A: 在 Android Q 中,气泡 (Bubbles) 仅作为一项预览功能,我们仍在探索气泡功能的发展方向。欢迎向我们反馈您的意见,这将有助我们改进气泡功能,并在未来以最好的形式推出该功能。

Q: 当应用在后台被关闭后,此前显示的气泡 (Bubble) 还会显示吗?
A: 气泡是基于通知的,也应该和通知一样工作。


CameraX


Q: 现在有哪些手机已经支持 CameraX Extension,以及是否有后续的路线图?
A: 我们正协助包括三星、摩托罗拉和 LG 在内的一系列 OEM 厂商在设备上支持 CameraX Extension。


Q: CameraX 中的图像分析功能是在线还是离线的?它是否支持人脸和物品识别?
A: ImageAnalysis 只会从相机获取实时图像,并传递到开发者定义的分析器。开发者可以利用这些图像来进行更深入的分析,如进行人脸识别。


Generic System Image (GSI)


Q: GSI 是支持所有手机硬件吗?还是只支持像 Pixel 这样的标准硬件?
A: 支持使用常规系统映像 (GSI) 的设备需要满足以下条件: 完全的 Treble 支持;可解锁 bootloader;停用 Android 启动时验证 (Verify Boot)。我们测试了少量的设备,如 Moto G7/G7+、Sony XZ3、小米 Note7、MIX3,这些是支持的;同时我们发现一加 6T 有兼容性问题,我们正在修复。


Q: 怎么在厂商手机上安装 Android Q?
A: 如果您想安装 Android Q Beta,可参阅 https://developer.android.google.cn/preview/devices/index.html 的有关说明。该页面列举了如何从 OEM 厂商获取并安装 Beta 版本。


Permissions


Q: 为什么扫描蓝牙及 Wi-Fi 热点也需要申请地理位置权限?
A: 因为开发者可以利用这些信息来推断用户的位置。为了提高用户的透明度,Android Q 对这些功能加上了地理位置权限的要求。开发者可以使用系统的对话框来选择 Wi-Fi 热点。


其他


Q: Android Q 提供自定义类加载器的公有 API,是不是意味着对于热修复或者插件化 Google 将有官方的支持?
A: 我们按照开发者的反馈,将部分合理的常用非 SDK 接口以新的 API 取代。而热修复或者插件化皆违反 Google Play 政策,是不容许的。

Q: Dark Theme 会自动套用都所有的应用吗?开发者需要作出更新吗?
A: 开发者必须更新代码以支援 Dark Theme。

Q: 在翻屏手机上,用户翻屏时,应用会重新启动。
A: 请确定应用已定义为 Resizeable Activity。


Q: 在可折叠屏幕手机手机上,应用出现排版错乱。
A: 请确定应用是使用视窗大小进行排版,而不是屏幕大小。




Q: 关于应用内存的分析,有什么好的工具或者方法吗?
A: https://developer.android.google.cn/games 提供了一些运行时分析的方法。



举报

您需要登录后才可以回帖

登录注册
发表回复