一、运行时权限检查(Runtime Permisssions)
目标版本为Android6.0(API 23)或更高时,请确保在运行时进行权限的检查和请求。新的方法checkSelfPermission()可以用来判断你的应用是否被授予了权限,而requestPermissions()可请求权限。即使你app的目标版本在android6.0以下,也应该在新的权限管理模型下测试你的应用。
二、Doze模式
休眠模式,手机在没有外接电源且放置至屏幕关闭一段时间后,设备将进入休眠模式,它将使系统进入睡眠状态(sleep state)。在此模式下,设备周期性的短暂恢复正常操作,以使应用可以同步,系统执行一些必要操作
三、app standby应用待机模式
当 app 被认为处于闲置状态时停用它的同步功能与网络连接直到手机连接电源或恢复正常状态
四、Apache HTTP Client Removal
移除Appache的HTTP Client
五、BoringSSL
Android正在将OpenSSL库替换为BoringSSL库,这将影响你的应用在NDK中所链接的加密库,比如libcrypto.so和libssl.so,它们不是NDK API的一部分。这些库不是公开的API,因此在不同版本和设备上的变化也不会及时通知开发者。而且,这也将暴露你应用的安全缺陷。因此,需要修改你的native代码,通过JNI的方式调用Java的加密API或者静态链接你选择的加密库。
ps:7.0中JNI 直接不允许调用非公有 API
六、获取硬件标识符(Access to Hardware Identifier)
Android**移除了从代码中通过Wi-Fi和蓝牙的API访问设备本地网络标识符**。因此WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()将始终返回02:00:00:00:00:00。
而为了能够通过Wi-Fi和蓝牙扫描时,获取周边设备的硬件标识符,应用必须具有ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION权限
七、通知(Notifications)
移除了Notification.setLatestEventInfo()方法
八、AudioManager Changes
不再支持通过AudioManager类来直接对特定的音频流设置音量和静音
九、文本选择(Text Selection)
在用户选择一段文本时,开发者可以设置一个弹出对话框让用户更方便的执行文字编辑操作
十、app link
开发者可以将一个web域名 与自家 app 绑定
十一、浏览器书签变化(Browser Bookmark Changes)
此版本移除了全局书签的支持.
android.provider.Browser.getAllBookmarks() 和 android.provider.Browser.saveBookmark()方法被移除,同样的READ_HISTORY_BOOKMARKS和WRITE_HISTORY_BOOKMARKS权限也被移除。如果你app的目标版本是android6.0或更高,请不要访问全局的provider获取书签,而是应该在应用的内部保存书签数据。
十二、更严格的 APK 验证
当检查到在Manifest里声明的文件在 APK 中并不存在时,则认为此 APK不合法,需要重新生成签名
十三、Android KeyStore变化
此版本上Android Keystore provider不再支持DSA,仍旧支持ECDSA。
锁屏密码在(如用户或设备管理器)禁用或重置的情况下,不需要加密部分将不再被删除,而加密部分则会被删除。
十四、八个新组件(Material design 风格并且向后兼容)
AppBarLayout, NavigationView, FloatingActionButton,TabLayout,SnackBar,CoordinatorLayout
, Collapsing Toolbars,TextInputLayout
十五、SVG 支持
可以在 Android studio 中使用 SVG 资源了,实现一些复杂动画又有了新的方法
十六、C/C++与 NDK支持
AS 中直接集成了 JetBrains 家的 Clion,进行 C/C++开发更为方便。另外这个 Clion特别为 Android开发进行了优化,可以自动生成JNI 方法名
十七、ata binding(现在可以通过在XML文件中进行 Data binding)
十八、语音API
现在有了可以在第三方app里配合语音输入使用的 API,用户可以通过语音输入与 app 进行交互。前提是使用 Google voice input
十九、direct share
可以直接指定分享方式(邮件、短信、FB)来对特定目标(比如联系人 app 中联系人)进行分享
二十、Wi-Fi和网络变化(Wi-Fi and Networking Changes)
修改你自己创建的WifiConfiguration对象的状态,而不再允许修改或删除由用户或其它app创建的WifiConfiguration对象
之前可以使用enableNetwork(),设置disableAllOthers=true,来使设备断开其它网络,如蜂窝网络,而强制连接指定的Wi-fi网络。在此版本上,设备将不会从其它网络断开连接。如果你的app的targetSdkVersion是20或者更低,将固定在选择的Wi-Fi网络。如果targetSdkVersion是21或者更高,使用multinetwork APIs (如openConnection(), bindSocket()和bindProcessToNetwork()方法)来保证网络流量被发送到指定的网络上
二十一、相机服务变化(Camera Service Changes)
访问相机服务模型将由原来的“先来先服务”方式,改为基于优先级的访问方式
二十二、USB连接(USB Connection)
通过UAB端口连接设备,默认采用仅充电模式。通过USB连接设备并获取内容,必须明确的经过用户授权这种交互权限。如果你的应用支持通过USB端口的交互,要考虑到这种交互必须被明确的启用。
二十三、数据流量统计(Data Usage):
android.app.usage.NetworkUsageStats类被重命名为NetworkStats。
二十四、全局设置变化:
这些配置不再能通过setGlobalSettings()来设置:
BLUETOOTH_ON
DEVELOPMENT_SETTINGS_ENABLED
MODE_RINGER
NETWORK_PREFERENCE
WIFI_ON
这些配置现在能通过setGlobalSettings()来设置:
WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN
其他的还包括全平台数据自动备份、指纹识别、ART bug修复、企业Android的变化等。
参考资料: