今天,2017年3月26日星期日,负责Android项目的副总裁Dave Burke先生向广大开发者宣布Android O正式发布。看来不仅仅是程序员周末没闲着,就连google副总裁也忙得不可开交,只能在周末推广Android新特性。我怀着好奇心进入Android开发者网站,发现新版本变化不小:后台限制、网络连接、高质量的蓝牙音频编解码、自适应图标、键盘导航、运行时优化等。以下是原文翻译(来自https://developer.android.google.cn/preview/behavior-changes.html):

Android O引入许多新特性与新功能,包含大量的系统和API行为和变化。这篇文档突出介绍一些重要变化,建议开发者深入理解以便为自己项目所用。

这些变化中大多数会影响着所有app,不管是什么目标版本。但是,一些变化只会影响Android O 版本。为了最大限度地清晰地清晰表达,这页会分为两个章节:app的通用版本和针对Android O 的版本。

app通用版本

这些变化适用于所有app,当它们运行于Android O 平台的时候,不管它们目标版本API大小。当应用于app时,所有开发者应该复习这些变化,并且调整你们的app以正确地支持这些功能。

后台执行限制

作为Android O 用来延长电池寿命的其中一个功能,当你的app进入休眠状态时,没有激活任何组件,系统会释放app持有任何唤醒锁。

Android后台限制

为了节约电量、提高用户体验、系统健康,会尽量降低后台app接收位置更新的频率,当你使用的设备运行于Android O 平台时。这些行为变化会影响所有app接收位置更新,包括google play 服务。

这些变化影响一下API:

1、融合位置提供(FLP)

2、地理栅栏

3、GNSS测量

4、位置管理器

蓝牙

Android O 做出以下调整,使用ScanRecorder.getBytes()来检索数据长度:

1、getBytes()方法不对接收的字节数作任何假设,因此,app不应该以来任何返回字节数的最大值或最小值。相反,你们应该自己估计接收数组的长度。

2、兼容蓝牙5.0的设备,返回的数据长度应该超过60字节的原有最大值。

3、如果远程设备没有提供扫描响应,也有可能返回少于60字节数。

输入与导航

随着运行于Chrome OS的Android app的出现,与其他设备例如可穿戴式设备,我们看到在Android app使用键盘导航的复苏。在Android O中,我们重定向键盘作为导航输入设备,产生一个更可靠、可预测的箭头与导航标签模型。

为了学习如何在你的app中更好运用键盘导航,请查看Supporting Keyboard Navigation指南。

可访问性

在你的app TextView对象中,现在可访问性服务支持可点击实例。

为了学习更多关于可访问性服务,请查看Accessibility指南。

安全

Android O 包含以下安全相关的变化:

1、平台不再支持SLLv3。

2、当创建一个HTTPS连接到服务器,而没有实现TLS协议的协商,HttpsUrlConnection不再尝试早期的TLS版本和重试。

3、对于所有app,Android O具有一个安全计算(SECCOMP)过滤。系统调用仅限用于通过反射暴露的方法。虽然也有其他一些后台调用,但我们不推荐使用。

4、你app 的WebView对象,现在运行于多进程模型。为了提高安全,web内容在一个独立隔离的进程进行处理,与app进程区分开来。

关于使用native库来提高安全性的信息,请查看Native Libraries。

为了使得你的app更加安全的额外指导,请查看Security for Android Developers。

隐私

Android O在平台中做出如下关于隐私的调整:

1、现在平台处理标识符与众不同了。

2、查询net.hostName的系统属性会产生一个空指针。

3、你不再能假定,名称为-1或者-2结束的apk驻留在目录中了。app应该使用sourceDir来获取目录,而不能直接依赖目录格式。

网络与HTTP(S)连接

android O包含以下对网络与HTTP连接的调整:

1、Options请求没有请求体,会有一个Content-Length:0请求头。原先版本没有Content-Length的请求头。

2、HttpUrlConnection规定Urls,在主机或者授权后面追加的反斜杠来包含空路径。例如,它把http://example.com转换成http://example.com/

3、Urls不能再包含空标签。

4、Android O不再执行不安全的TLS/SLL协议版本回退。

5、在回退到TCP协议之前,InetAddress.isReachable()会先尝试ICMP。

Android O 特有版本

后台执行限制

1、app后台运行不再能随便访问后台服务。

2、app不能在manifest文件里注册隐式广播。

安全

如果你的app网络安全配置支持明文传输的opts out,WebView不能再通过HTTP进行访问,必须使用HTTPS来访问。

本地库

在Android O版本的app里,本地库不再加载包含可写的和可执行的代码区。一些app应该会停止运行,因为无法正确加载库。这是一个安全加固手段。更多详情,请查看Writable and Executable Segments

集合处理

在Android O中,Collections.sort()属于List.sort()的顶层。

大多数情况下,你可以使用一个接口来重写List.sort(),根据不同API对默认实现的委托。例如:

    @Override    public void sort(Comparator<? super E> comparator) {    if (Build.VERSION.SDK_INT <= 25) {       Collections.sort(this);       } else {       super.sort(comparator);       }    }

账号访问与扫描

app不能再访问用户账号,除非持有账号或者用户授权访问。GET_ACCOUNTS权限不再有效。为了授权访问用户,app应该使用

AccountManager.newChooseAccountIntent()方法。在获得访问用户授权后,app可以调用AccountManager.getAccounts()来访问账号。

内容更新通知

Android O 改变ContentResolver.notifyChange()和registerContentObserver(Uri, boolean, ContentObserver)的行为。这些API需要为所有授权的URLs定义一个有效的ContentProvider。定义一个具有相关权限的有效ContentProvider,将可以帮助抵抗恶意app的攻击,并且可以防止隐私数据的泄漏给恶意的app。

自适应图标

为帮助您更好地与设备 UI 集成,您现在可以创建自适应图标,系统可以基于设备选择的蒙版将这些图标显示为不同形状。系统还将实现与图标的自动交互, 并在启动器、快捷方式、设置、共享对话框以及概览屏幕中使用它们。



更多相关文章

  1. 基于Android的校园快递系统_移动端设计_后台管理_MySQL数据库设
  2. Android设备FTP服务器搭建
  3. Android solve设备(手机)旋转过程中出现程序中断问题
  4. Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设
  5. 后台应用不应做Android待机电池杀手
  6. 定制android设备启动后进入的初始界面
  7. android开发AVD配置target为unknown(设备红米note4x)
  8. 总结安卓各大版本(4.0-9.0)的区别、新特性
  9. 在Android设备上搭建Web服务器的方法

随机推荐

  1. Android(安卓)Factory Reset flow
  2. 收集android的三个小tip
  3. 【黑马Android】(02)短信发送器/布局演示
  4. listView 多值显示
  5. Android(安卓)RecyclerView添加分隔线 Di
  6. android 键盘显示与隐藏
  7. Android(安卓)Hook学习之ptrace函数的使
  8. Android(安卓)ListView中带有时间数据的
  9. [摘]android:windowSoftInputMode属性使
  10. Android(安卓)之 Gallery