Android Q 开发者常见问题 | FAQ・第二期

2024-01-26 10:20:38 浏览数 (2)

64-bit

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 文件。

  • 关于 App Bundle 的介绍,请参阅: developer.android.google.cn/platform/te…

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) 的特性。但更重要的是,我们希望和开发者一同去改进应用的质量。

  • 关于应用待机群组,请参阅 developer.android.google.cn/about/versi…

针对非 SDK 接口的限制

Q: 非 SDK 接口的灰名单是何时确定的?是否会不定时动态更新呢?

A: 非 SDK 接口的各类名单是随着每个 Android 版本的发布而更新的。

  • 关于针对非 SDK 接口的限制,请查阅: developer.android.google.cn/distribute/…

Bubbles

Q: Bubbles 为何要放在开发者选项?

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

Q: 当应用在后台被关闭后,此前显示的气泡 (Bubble) 还会显示吗?

A: 气泡是基于通知的,也应该和通知一样工作。

  • 关于气泡的更多信息,请查阅: developer.android.google.cn/preview/fea…

CameraX

Q: 现在有哪些手机已经支持 CameraX Extension,以及是否有后续的路线图?

A: 我们正协助包括三星、摩托罗拉和 LG 在内的一系列 OEM 厂商在设备上支持 CameraX Extension。

Q: CameraX 中的图像分析功能是在线还是离线的?它是否支持人脸和物品识别?

A: ImageAnalysis 只会从相机获取实时图像,并传递到开发者定义的分析器。开发者可以利用这些图像来进行更深入的分析,如进行人脸识别。

  • 关于分析图片的更多信息,请查阅 developer.android.google.cn/training/ca…

Device ID

Q: Android Q 上禁止了对于设备 IMEI 的获取,那么如何更好地唯一识别设备呢?

A: 针对不同的场景,我们建议用不同的唯一标识符。

  • 请参阅下方文章,了解更多 developer.android.google.cn/training/ar…

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 是相同的。

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,可参阅: developer.android.google.cn/preview/dev… 的有关说明。该页面列举了如何从 OEM 厂商获取并安装 Beta 版本。

Permissions

Q: 为什么扫描蓝牙及 Wi-Fi 热点也需要申请地理位置权限?

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

  • Wi-Fi network connection API
  • Wi-Fi network suggestion API

其他

Q: 关于应用内存的分析,有什么好的工具或者方法吗?

A: developer.android.google.cn/games 提供了一些运行时分析的方法。

点击这里提交产品反馈建议

0 人点赞