自 Android Oreo 发布以来,我们陆续收到了开发者们提出的一些新系统相关问题。尤其在 1 月期间我们专门制作并上传了 Oreo 新功能应用的中文教学视频,帮助大家更快掌握系统新特性。在众多问题中我们筛选出以下十个比较有代表性的问题并作出相应解答,希望可以帮助大家查漏补缺或巩固已有知识技能。
Q 1:
手机耗电比较严重,Android对这方面有改进吗?
A:Android在后台中运行的服务会消耗设备资源,这可能降低用户体验。为了缓解这一问题,Android O 系统对这些服务施加了一些限制。具体操作请参考 “【中文教学视频】Android Oreo 中的后台进程”
Q 2:
我比较重视 Android 的安全性问题,那么在这方面 Android O 有什么新的改进呢?
A:在 Android 8.0 之前,如果应用在运行时请求权限并且被授予该权限,系统会将属于同一权限组并且在清单中注册的其他权限也一起授予应用。
对于针对 Android 8.0 的应用,此行为已被纠正。系统只会授予应用明确请求的权限。请注意,一旦用户为应用授予某个权限,则所有后续对该权限组中权限的请求都将被自动批准。
Q 3:
Android O 的自适应图标可以适应不同的手机吗?
A:是的。自适应图标可以在不同的设备模型中显示各种形状。例如,自适应启动器图标可以在一个OEM设备上显示圆形形状,并在另一个设备上显示一个圆角矩形,而开发者不需要进行额外的任何工作。
Q 4:
我是 Android 初学者,不了解 Android O 之前的相关接口,我如何能在短时间内明白 Android O 做了哪些改进呢?
A:关于 Android 的历史版本,可以参考 Android 开发者官方网站获知具体信息(链接:https://developer.android.com/index.html)。
Android 8.0 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。重点介绍了您应该了解并在开发应用时加以考虑的一些主要变更(参考链接:https://developer.android.com/about/versions/oreo/android-8.0-changes.html)。
Q 5:
我是做移动支付的,自动填充框架对于我来说是一个很好的功能,有没有能运用到上面(移动支付方面)的?
A:自定义描述可帮助自动填充服务更清楚地说明正在保存的内容;例如,当屏幕包含信用卡时,它可以显示信用卡银行的标志,信用卡号码的最后四位数字和到期号码。要了解更多信息,请参阅 CustomDescription 课程(链接:https://developer.android.com/reference/android/service/autofill/CustomDescription.html)。
Q 6:
我的 Android 虚拟机有非常多,默认路径是什么?
A:
Mac OS X 和 Linux:/ ~/.android/avd/name.avd
微软 Windows XP:C:\Documents and Settings\user\.android\name.avd\
Windows Vista 和更高版本:C:\Users\user\.android\name.avd\
您可以通过两种方式发现文件的位置:
从命令行启动模拟器时,使用 -verbose 或 -debug init 选项,并查看输出;
使用该命令列出默认目录。例如:emulator -help-option
Q 7:
我想将我的虚拟机存在另一个路径中,我该如何操作?
A:在命令行使用 -datadir dir 使用绝对路径指定数据目录。
例如:$ emulator @Nexus_5X_API_23 -datadir ~/.android/avd/Nexus_5X_API_23.avd/mytest
Q 8:
有关模拟机的相关命令行我在哪里可以看到?
A:Android SDK 包含一个 Android 设备模拟机,是在您计算机上运行的虚拟设备。 Android 模拟机可让您在不使用物理设备的情况下开发和测试 Android 应用程序。
有关 Android 虚拟机命令行,请参考原文(链接:https://developer.android.com/studio/run/emulator-commandline.html#data-filedir)。
Q 9:
Android Support Library V26 什么时候可以用 SDKTool 下载到?
A:Android Support Library 不需要下载,在 gradle 的配置文件依赖即可。
Q 10:
Android O 在蓝牙开发方面有没有什么变化?
A:您好,是有变化的。Android 8.0 对 ScanRecord.getBytes() 函数检索的数据长度做出以下变更:getBytes() 函数对于所接收的字节数不作任何假定。因此,应用不应受所返回的任何最小或最大字节数的影响。相反,应用应当计算所返回数组的长度;兼容蓝牙 5 的设备返回的数据长度可能会超出之前最大约 60 个字节的限制;如果远程设备未提供扫描响应,则也可能返回少于 60 个字节的数据。
如果您仍然有关于系统及兼容性等问题,欢迎在我们本文评论区留言,我们会继续收集有代表性的问题,请我们的工程师做出解答,并将答案尽量及时地回复给大家。同时,也请关注下一期的 “Android 开发者 FAQ” 专题文章,希望可以帮助您补充相关知识技能。