0新特性整理,新特性详解

作者: 白小姐开奖结果开奖结果  发布:2019-08-17

Android 5.0展现改换

Android 7.0 新性情(源自官方文书档案)

API级别:21

Android 7.0(API 等第 24) 除了提供好些个新特色和效率外,还对系统和 API 行为做出了各样变动。本文珍重介绍您应该精通并在开辟应用时加以思虑的有的重视更改。

  1. Android Runtime

假如你从前发布过 Android 应用,请留意你的接纳可能遭遇这个平台转换的影响。

绝大非常多 Android 应用不须求任何更换就足以在 ART 下办事。不过,部分符合 Dalvik 的手艺并不适用于 ART。如需通晓有关最珍视难题的音讯,请参阅在 Android Runtime 上表达应用行为。如存在以下情形,应极其注意:

电池和内部存款和储蓄器

Android 7.0 包含目的在于延长设备电瓶寿命和削减 RAM 使用的种类作为改变。那些改换只怕会影响你的利用访谈系统财富,以及你的采纳通过一定隐式 intent 与任何使用交互的法子。

您的选拔使用Java原生接口 运维 C/C 代码。

低电耗形式

Android 6.0(API 品级23)引进了低电耗方式,当用户设备未插接电源、处于平稳状态且显示器关闭时,该格局会延迟 CPU 和网络移动,进而延伸电瓶寿命。而 Android 7.0 则透过在设施未插接电源且显示器关闭状态下、但不必然要处在平稳状态(比如用户外出时把手持式设备装在衣兜里)时选用有的 CPU 和网络范围,进一步拉长了低电耗格局。

图片 1

图1_Image.png

图 1. 低电耗形式怎么样运用第超级系统活动限制以延长电池寿命的图示。

当设备处于充电状态且显示屏已关门一定时期后,设备会进入低电耗方式并行使第一有的限制:关闭应用网络访谈、推迟作业和一块。假使进入低电耗形式后装置处于平稳状态达到自然时间,系统则会对 PowerManager.WakeLock、AlarmManager 闹铃、GPS 和 WLAN 扫描应用余下的低电耗情势限制。无论是应用有的照旧整个低电耗方式限制,系统都会提醒设备以提供轻便的爱慕时间窗口,在此窗口时期,应用程序能够访谈网络并实行别的被延迟的功课/同步。

图片 2

图2_Image.png

图 2. 低电耗格局如何在装置处于平稳状态达到自然时间后使用第二级系统活动限制的图示。

请留心,激活显示屏或插接设备电源时,系统将脱离低电耗情势并移除那一个管理范围。此项新扩展的表现不会潜濡默化有关让你的施用适应 Android 6.0(API 等第23)中所推出的旧版本低电耗方式的提商谈特级做法,如对低电耗形式和应用待机情势进行针对性优化中所研讨。您仍应依据那个建议(比如使用 谷歌 云音讯传递 (GCM) 发送和摄撤除息)并开首布局更新安插以适应新添的低电耗情势行为。

您使用生成非规范代码的开荒工具(比如,一些代码混淆工具)。

Project Svelte:后台优化

Android 7.0 移除了三项隐式广播,以协助优化内部存储器使用和电量消耗。此项改成很有要求,因为隐式广播会在后台频仍运营已注册侦听那几个广播的运用。删除这个广播能够分明进步器具品质和用户体验。

移步器材会经历屡次的连年更动,譬如在 WLAN 和移动多少里面切换时。目前,能够经过在行使清单中登记一个接收器来侦听隐式 CONNECTIVITY_ACTION 广播,让使用能够监督那个更换。由于广大应用会注册接收此广播,由此单次互连网切换即会导致全部应用被唤起并还要管理此广播。

同理,在事先版本的 Android 中,应用能够注册接收来自其余使用(举个例子相机)的隐式 ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 广播。当用户使用相机应用拍戏照片时,这个应用即会被唤起以管理广播。

为消除那个标题,Android 7.0 应用了以下优化措施:

  • 面向 Android 7.0 开采的运用不会收下 CONNECTIVITY_ACTION 广播,固然它们已有清单条约来呼吁接受这个事件的照顾。在前台运营的采用倘使选取布罗兹castReceiver 哀告接收布告,则仍是可以够在主线程中侦听 CONNECTIVITY_CHANGE。
  • 利用无法发送或抽取 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO 广播。此项优化会影响全数应用,而不止是面向 Android 7.0 的采用。
    借使您的运用使用别的intent,您仍急需及早移除它们的借助关系,以科学适配 Android 7.0 设备。Android 框架提供四个减轻方案来消除对那么些隐式广播的必要。比如,JobScheduler API 提供了三个细心可相信的编写制定来配置满足内定条件(举例连入Infiniti流量互联网)时所实行的互连网操作。您仍是能够运用 JobScheduler 来适应内容提供程序变化。

如需通晓有关 Android N 中后台优化以及怎么样改写应用的详细新闻,请参阅后台优化。

你使用与缩短垃圾回收差别盟的手艺

权力更动

Android 7.0 做了一部分权力退换,这么些改变只怕会影响你的施用。

  1. 动静和惊动

系统权限更动

为了增加个人文件的安全性,面向 Android 7.0 或更加高版本的运用私有目录被限制访谈 (0700)。此设置可堤防个人文件的元数据外泄,如它们的大大小小或存在性。此权限改变有多种副效率:

  • 私家文件的公文权限不应再由全体者放宽,为利用 MODE_WORLD_READABLE 和/或 MODE_WORLD_WKoleosITEABLE 而张开的此类尝试将触发 SecurityException。
    注:迄今截至,这种范围尚不能够一心实行。应用仍可能使用原生 API 或 File API 来修改它们的个体目录权限。可是,我们明确反对放宽私有目录的权能。

  • 传递软件包网域外的 file:// UPAJEROI 恐怕给接收器留下不能访谈的门路。由此,尝试传递 file:// ULacrosseI 会触发 FileUriExposedException。分享个人文件内容的引荐形式是行使 FileProvider。

  • DownloadManager 不再按文件名享受私人存款和储蓄的文书。旧版应用在拜见COLUMN_LOCAL_FILENAME 时大概出现不能够访谈的门道。面向 Android 7.0 或越来越高版本的运用在品尝访谈 COLUMN_LOCAL_FILENAME 时会触发 SecurityException。通过应用 DownloadManager.Request.setDestinationInExternalFilesDir() 或 DownloadManager.Request.setDestinationInExternalPublicDir() 将下载地方设置为公家地点的旧版应用还可以够访问 COLUMN_LOCAL_FILENAME 中的路线,不过大家确定反对使用这种办法。对于由 DownloadManager 公开的文书,首推的拜候格局是运用ContentResolver.openFileDescriptor()。

倘使你当前利用 Ringtone、MediaPlayer 或 Vibrator 类向通告中增多声音和震惊,则移除此代码,以便系统能够在“优先”方式中精确呈现通告。代替他的是,使用 Notification.Builder 方法增多声音和震惊。

在运用间分享文件

对于面向 Android 7.0 的使用,Android 框架奉行的 StrictMode API 政策禁止在你的利用外部公开 file:// U宝马7系I。即使一项包蕴文件 UENCOREI 的 intent 离开你的选拔,则利用出现故障,并出现 FileUriExposedException 至极。

要在应用间共享文件,您应发送一项 content:// U牧马人I,并赋予 UWranglerI 有时探访权限。实行此授权的最轻松易行方法是利用 FileProvider 类。如需询问关于权限和分享文件的详细消息,请参阅分享文件。

将设备设为 奇骏INGE昂Cora_MODE_SILENT 可使设备踏入新的前期方式。如若你将配备设为 凯雷德INGESportage_MODE_NORMAL 或 RINGER_MODE_VIBRATE,则配备将退出优先进表率式。

无障碍创新

为巩固平台对于视力不好或眼神受损用户的易用性,Android 7.0 做出了有的改动。那个改动一般并不要求改造您的使用代码,但是你应留意检查并应用你的应用测量检验那些功效,以评估它们对用户体验的地下影响。

以前,Android 使用 STREAM_MUSIC 作为主流式传输来调整机械Computer设备上的轻重。在 Android 5.0 中,手提式有线电话机和三星平板设备的主音量流式传输现已联合,由 STREAM_RING 或 STREAM_NOTIFICATION 进行支配。

荧屏缩放

Android 7.0 帮衬用户设置展现尺寸,以推广或裁减显示器上的装有因素,进而进级设施对视力糟糕用户的可访问性。用户不能将荧屏缩放至低于最小荧屏宽度 sw320dp,该拉长率是 Nexus 4 的升幅,也是健康中等大小手提式有线话机的上升的幅度。

图片 3

图3_1_Image.png

图片 4

图3_2_Image.png

图 3. 左手荧屏显示的是一台运营

Android 7.0 系统影像的器械增大突显尺寸后的意义。

当设备密度产生改动时,系统会以如下格局通报正在运作的利用:

  • 如倘若面向 API 级别 23 或更低版本系统的使用,系统会自行结束其持有后台进度。那意味一旦用户切换离开此类应用,转而开辟Settings 显示器并改造 Display size 设置,则系统会像管理内存不足的情事一样终止该行使。假如使用具有任何前台进度,则系统会如管理运营时退换中所述将配备更换通告给这一个进程,就像是对待设备显示屏方向改换同样。

  • 一经是面向 Android 7.0 的施用,则其独具进度(前台和后台)都会收下关于安顿改动的通报,如管理运维时更动中所述。
    大比相当多运用并无需举办其余退换就能够帮忙此意义,可是前提是那几个使用服从Android 最棒做法。具体要反省的事项:

  • 在荧屏宽度为 sw320dp 的器械上测验你的应用,并保管其丰盛运维。

  • 当设备配备产生改变时,更新任何与密度有关的缓存音讯,举例缓存位图或从网络加载的能源。当使用从中断状态苏醒运行时,检查安插退换。
    注:假令你要缓存与配置相关的数额,则最棒也席卷有关元数据,举个例子该数量对应的显示屏尺寸或像素密度。保存那些元数据平价您在布置更换后决定是或不是须求刷新缓存数据。

  • 幸免用像素单位钦点尺寸,因为像素不会随显示器密度缩放。应改为利用与密度无关像素 (dp) 单位钦点尺寸。

  1. 锁定屏幕可知性

安装向导中的视觉设置

Android 7.0 在“Welcome”显示器中加入了“Vision Settings”,用户能够在新装置上安装以下无障碍成效设置:Magnification gesture、Font size、Display size 和言语提醒。此项改成让您能够更便于发觉与分化荧屏设置有关的谬误。要评估此意义的影响,您应在启用这么些设置的景色下测量试验应用。您能够在 Settings > Accessibility 中找到这么些设置。

暗中同意情状下,在 Android 5.0 中,通知未来突显在用户的锁定荧屏上。用户能够选拔尊敬敏感音信不被公开,在此情状下,系统会自行删除文告展现的公文。要自定义此删减的打招呼,请使用 setPublicVersion()。

NDK 应用链接至平台库

从 Android 7.0 初阶,系统将堵住应用动态链接非公开 NDK 库,这种库或然会变成您的选拔崩溃。此行为改动意在为跨平台立异和差别道具提供联合的运用体验。固然你的代码只怕不会链接私有库,但你的行使中的第三方静态库或者会这么做。由此,全数开荒者都应进行相应检查,确定保障他们的应用不会在运转Android 7.0 的配备上崩溃。假设你的利用使用原生代码,则不得不动用公开 NDK API。

您的采用可通过以下三种方法尝试访谈私有平台 API:

  • 你的施用直接待上访谈私有平台库。您应创新您的运用以增添该采用的库别本,或行使公开 NDK API。
  • 你的利用使用八个可访谈私有平台库的第三方库。固然你鲜明你的施用不会直接待上访谈私有库,您仍应本着此境况测量试验你的运用。
  • 您的选取引用贰个其 APK 中未富含的库。举例,要是您尝试选取你自个儿的 OpenSSL 别本,但忘记将它与使用的 APK 举行捆绑,则大概会现出此情状。不奇怪意况下,此采取可在蕴藏 libcrypto.so 的 Android 平台版本上运转。但是,此选拔在不含有此库的新版 Android(比如,Android 6.0 和更加高的本子)上会崩溃。为修复此主题素材,请确认保证您的 APK 捆绑您的有着非 NDK 库。
    选用不应使用 NDK 中未包括的原生库,因为那些库大概会时有发生改换或在分歧Android 版本之间的可用性区别。比如,从 OpenSSL 切换至 BoringSSL 即属于此类改变。其余,由于不属于 NDK 中的平台库没有包容性供给,因而分歧的器材只怕提供差别等级的包容性。

为减弱此限制恐怕对当前宣布的行使的震慑,面向 API 等第 23 或更低档别的选拔在 Android N 上可不经常访问颇为常用的一组库,举个例子libandroid_runtime.so、libcutils.so、libcrypto.so 和 libssl.so。假若你的选拔加载当中有些库,logcat 会生成叁个警告,并在对象设备上展现几个 Toast 来打招呼你。假如您看到那些警告,您应立异您的利用以增多该利用自个儿的库别本,或仅使用公开 NDK API。今后公告的 Android 平台或然会全盘限制对私有库的运用,并变成你的行使崩溃。

具备应用在调用既非公开又不行暂且访谈的 API 时都会变卦一个运作时不当。结果正是 System.loadLibrary 和 dlopen(3) 同期再次回到 NULL,并大概引致你的使用崩溃。您应检查选择代码以移除对个人平台 API 的应用,并利用预览版设备或模拟器周密测量检验应用。若是您不鲜明你的施用是不是使用私有库,您能够检查 logcat 以识别运维时不当。

下表描述的是依附使用使用的个体原生库及其目的 API 等第(android:targetSdkVersion),应用预期展现的表现。

图片 5

Paste_Image.png

借使公告不分包个人信息,恐怕您想同意媒体播发控件展现在通报上,则调用 setVisibility() 方法并将文告的可知性等第设为 VISIBILITY_PUBLIC。

检查你的施用是还是不是使用私有库

为辅助您辨别加载私有库的难题,logcat 可能会转变叁个告诫或运维时不当。比如,借使您的选用面向 API 品级 23 或更低等别,并在运作 Android 7.0 的设施上尝试访问私有库,您恐怕会看出二个类似于上边所示的告诫:

03-21 17:07:51.502 31234 31234 W linker  : library "libandroid_runtime.so"
("/system/lib/libandroid_runtime.so") needed or dlopened by
"/data/app/com.popular-app.android-2/lib/arm/libapplib.so" is not accessible
for the namespace "classloader-namespace" - the access is temporarily granted
as a workaround for http://b/26394120

那个 logcat 警告文告你哪个库正在品尝访问私有平台 API,但不会招致您的运用崩溃。然而,假若使用面向 API 等级 24 或更加高档别,logcat 会生成以下运营时不当,您的选取大概会崩溃:

java.lang.UnsatisfiedLinkError: dlopen failed: library "libcutils.so"
("/system/lib/libcutils.so") needed or dlopened by
"/system/lib/libnativeloader.so" is not accessible for the namespace
"classloader-namespace"
  at java.lang.Runtime.loadLibrary0(Runtime.java:977)
  at java.lang.System.loadLibrary(System.java:1602)

如果你的施用使用动态链接到私有平台 API 的第三方库,您也许也会看到上述 logcat 输出。利用 Android 7.0DK 中的 readelf 工具,您能够由此运营以下命令生成给定 .so 文件的享有动态链接的分享库列表:

aarch64-linux-android-readelf -dW libMyLibrary.so
  1. 浮动布告

更新您的运用

通过下边的部分步骤,您能够修复上述项指标不当并确认保证您的利用不会在前天的更新版平台上崩溃:

  • 若是你的行使使用个人平台库,您应立异它,以增加该行使自个儿的库别本或利用公开 NDK API。
  • 假定您的采纳使用访谈私有符号的第三方库,则联系库小编以更新库。
  • 请确定保证将您的具备非 NDK 库与你的 APK 打包在一道。
  • 利用专门的学业 JNI 函数而非来自 libandroid_runtime.so 的 getJavaVM 和 getJNIEnv:
AndroidRuntime::getJavaVM -> GetJavaVM from <jni.h>
AndroidRuntime::getJNIEnv -> JavaVM::GetEnv or
JavaVM::AttachCurrentThread from <jni.h>.
  • 使用 __system_property_get 而非来自 libcutils.so 的私有 property_get 符号。为此,请使用 __system_property_get 及以下 include 函数:
#include <sys/system_properties.h>

注:系统质量的可用性和内容未通过 CTS 实行测验。应实施特别修复以制止同期采取那一个属性。

  • 运用来源 libcrypto.so 的 SSL_ctrl 符号的本土版本。譬喻,您应在你的 .so 文件中静态链接 libcyrpto.a,或从 BoringSSL/OpenSSL 加多贰个动态链接的 libcrypto.so 版本,并将其包装到你的 APK 中。

前几天,当设备处于活动状态时(即,设备未锁定且其显示器已开辟),公告能够显得在Mini浮动窗口中(也堪称“浮动文告”)。那个通告看上去好像于精简版的打招呼,只是浮动通告还突显操作开关。用户能够在不偏离当前应用的景观下拍卖或免除浮动文告。

Android for Work

Android 7.0 满含部分针对面向 Android for Work 的施用的退换,富含对注脚安装、密码复位、二级用户管理、设备标记符访谈权限的改观。假诺你是要针对 Android for Work 境况开采应用,则应紧凑检查那几个改造并相应地修改您的应用。

  • 你必须先安装授权证书安装程序,然后 DPC 手艺对其张开安装。对于面向 N SDK 的配备文件和装置所有者应用,您应在装置正式调节器 (DPC) 调用 DevicePolicyManager.setCertInstallerPackage() 从前设置授权证书安装程序。若无安装此安装程序,则系统会吸引IllegalArgumentException。
  • 本着设备管理员的重新恢复设置密码限制现在也适用于配置文件全数者。设备管理员不能够再使用 DevicePolicyManager.resetPassword() 来驱除或转移已经安装的密码。设备助理馆员还可以设置密码,但不得不在道具尚未密码、PIN 码或图案时那样做。
  • 纵使设置了限制,设备全体者和配备文件全体者仍是可以够管理帐户。何况,尽管具有DISALLOW_MODIFY_ACCOUNTS 用户限制,设备全数者和配置文件全部者仍可调用 Account Management API。
  • 道具全数者可以更自在地处理二级用户。当设备在配备全体者方式下运转时,系统将活动安装 DISALLOW_ADD_USERAV4限制。那样能够幸免用户创造非托管二级用户。另外,CreateUser() 和 createAndInitializeUser() 方法已弃用,替代它的是 DevicePolicyManager.createAndManageUser() 方法。
  • 器械全体者能够采访设备标志符。设备全体者能够使用 DevicePolicyManagewr.getWifiMacAddress() 访谈设备的 WLAN MAC 地址。假设设备上未曾启用 WLAN,则此办法将赶回三个 null 值。
  • 做事方式设置调控专门的职业采纳访谈。当专业形式关闭时,系统运维器通过使职业采纳体现为朱红来提醒它们不可用。启用职业情势会再次复苏通常行为。
  • 从 Settings UI 安装蕴含客户端证书链和呼应的私钥的 PKCS #12 文件时,系统不再将该证书链中的 CA 证书安装到受重视的证据存款和储蓄空间。当使用稍后尝试搜索客户端证书链时,那不会影响 KeyChain.getCertificateChain() 的结果。假诺急需,使用 .crt 或 .cer 文件扩充名的 DE福睿斯 编码格式通过 Settings UI 单独将 CA 证书安装到受正视的凭证存款和储蓄空间。
  • 从 Android 7.0 发轫,可针对各种用户管理指纹登记和积存空间。要是计划文件全体者的配备正式客户端 (DPC) 面向 Android N 设备上的 Android N 在此之前的本子,则用户仍可以够在该器械上安装指纹,但职业选取不可能访问设备指纹。当 DPC 面向 Android N 和更加高版本时,用户能够经过转到 Settings > Security > Work profile security 特地为托管配置文件设置指纹。
  • DevicePolicyManager.getStorageEncryptionStatus() 重临新的加密状态 ENCRubiconYPTION_STATUS_ACTIVE_PER_USE普拉多,以申明加密居于活动状态,且加密密钥与用户关联。仅当 DPC 面向 API 等第 24 和越来越高等别时才会回来新的意况。对于面向更早的 API 级其余利用,固然加密密钥是用户或布置文件特有的,系统也会回到 ENCEvoqueYPTION_STATUS_ACTIVE。
  • 在 Android 7.0 中,如若设备经过单独的行事挑衅安装了托管配置文件,则原来普通会影响整个设施的多少个艺术将会转移其表现格局。那几个方法将仅使用于托管配置文件,并非影响全数设施。(此类措施的完好列表位于 DevicePolicyManager.getParentProfileInstance() 文书档案中。)举例,DevicePolicyManager.lockNow() 只锁定托管配置文件,并非锁定任何设施。对于上述每一个方法,您能够通过对 DevicePolicyManager 的父实例调用该办法来收获以前的行为;您可以透过调用 DevicePolicyManager.getParentProfileInstance() 获取此父项。举例,倘使您调用父实例的 lockNow() 方法,则全体设施将被锁定。
    如需询问关于 Android 7.0 中针对 Android for Work 所做改动的详细音讯,请参阅 Android for Work 更新。

恐怕接触浮动公告的尺度示例饱含:

解说保留

Android 7.0 修复了多个注脚可知性被忽视的谬误。这种主题素材会招致应用可在运营时采访原来差别意访谈的表明。那几个注脚饱含:

  • VISIBILITY_BUILD:仅应编写翻译时可知。
  • VISIBILITY_SYSTEM:运转时应可知,但只限底层系统。
    万一您的选用依赖这种表现,请为运转时必须可用的讲授增加入保障留政策。您可透过动用 @Retention(RetentionPolicy.RUNTIME) 来施行此操作。

用户的 Activity 处于全屏格局中(应用使用 fullScreenIntent)

别的器重表达

  • 假诺八个采纳在 Android 7.0 上运营,但却是针对更低 API 等级开拓的,那么在用户退换呈现尺寸时,系统将告一段落此采用进程。应用必须能够安妥管理此现象。不然,当用户从眼前利用记录中还原运转应用时,应用将会油然则生崩溃现象。
    你应测量检验应用以确认保证不会生出此表现。要进行此测量试验,您能够通过 DDMS 手动终止应用,以促成相同的崩溃现象。
    在密度发生改换时,系统不会自动结束面向 N 及越来越高版本的选拔;然而,那一个应用仍或许对铺排改动做出不良响应。

  • Android 7.0 上的应用应能够妥贴管理配置退换,何况在持续运维时不会见世崩溃现象。您能够由此转移字体大小 (Setting >Display > Font size) 并随着从方今使用记录中还原运维应用,来证实应用行为。

  • 是因为事先的 Android 版本中的一项错误,系统不能够将对主线程上的三个 TCP 套接字的写入操作举报为违反严俊格局。Android 7.0 修复了此错误。突显出这种行为的选择未来会引发 android.os.NetworkOnMainThreadException。一般情形下,我们不提议在主线程上施行网络操作,因为这一个操作平日会出现或然导致 ANTiggo 和卡顿的高尾延迟。

  • Debug.startMethodTracing() 方法层层现行反革命暗中认可在你的共享存款和储蓄空间上的软件包特定目录中贮存输出,而非 SD 卡根目录。那象征应用不再须求哀告 WLX570ITE_EXTERNAL_STORAGE 权限来利用那个 API 。

  • 广大平台 API 未来开首检查在 Binder 事务间发送的大负荷,系统今后会将 TransactionTooLargeExceptions 作为 RuntimeExceptions 再度抓住,而不再只是默默记下或抑制它们。一个广大例子是在 Activity.onSaveInstanceState() 上囤积过多多少,导致 ActivityThread.StopInfo 在你的行使面向 Android 7.0 时引发 RuntimeException。

  • 假定利用向 View 发表 Runnable 义务,况兼 View 未附加到窗口,系统会用 View 为 Runnable 职分排队;在 View 附加到窗口从前,不会试行 Runnable 职责。此行为会修复以下错误:

    • 一经一项应用是从而不是预期窗口 UI 线程的别样线程发表到 View,则 Runnable 大概会为此运维错误的线程。
      若是 Runnable 职务是从并不是环路径程的其他线程发表,则接纳恐怕会暴露 Runnable 职务。
    • 固然 Android 7.0 上一项有 DELETE_PACKAGES 权限的选取尝试删除贰个软件包,但另一项应用已经设置了这么些软件包,则系统要求用户进行确认。在这种状态下,应用在调用 PackageInstaller.uninstall() 时预计的回到状态应为STATUS_PENDING_USER_ACTION。
  • 名字为 Crypto 的 JCA 提供程序已弃用,因为它仅局地 SHA1PRubiconNG 算法为弱加密。应用不能再选用SHA1P奥迪Q7NG(不安全地)派生密钥,因为不再提供此提供程序。如需询问详细音讯,请参阅博文 Android N 中已弃用“Crypto”安全提供程序。

公告全部较高的事先级并接纳铃声或振动

若果你的行使在以上任何动静下促成文告,请确定保障系统科学突显浮动公告。

  1. getRecentTasks()

为进步用户隐秘的安全性,现已弃用 ActivityManager.getRecentTasks() 方法。对于向后包容性,此措施仍会回到它的一小部分数据,富含调用应用自身的任务和恐怕的部分其余非敏感职责。假使您的应用使用此措施搜索它和煦的职分,则改用 getAppTasks() 检索该音信。

  1. 绑定到劳动

Context.bindService() 方法以往亟需显式 Intent,倘若提供隐式 intent,将掀起那多少个。为力保应用的安全性,请使用显式 intent 运转或绑定 Service,且毫无为劳动申明 intent 过滤器。

  1. webview

Android 5.0 退换了利用的暗许行为。

假诺你的利用是面向 API 等第 21 或更加高等别:

暗许情状下,系统会阻止混合内容和第三方 Cookie。要允许混合内容和第三方 Cookie,请分别使用 setMixedContentMode() 和 setAcceptThirdPartyCookies() 方法。

系统今后得以智能地挑选要绘制的 HTML 文书档案部分。那几个新的暗中认可行为有利于削减内部存款和储蓄器占用和晋级换代品质。假若你要一遍渲染整个文书档案,可经过调用 enableSlowWholeDocumentDraw() 停用此优化。

一旦你的行使是面向低于 21 的 API 品级:系统允许混合内容和第三方 Cookie,并从来三次渲染整个文档。

Android 6.0行为改动

API级别:23

  1. 运作时权限

对于以 Android 6.0(API 等级23)或更加高版本为指标平台的采纳,请务必在运营时检查和恳求权限。要规定你的运用是不是已被授予权限,申请调离用新扩充的 checkSelfPermission() 方法。要乞求权限,申请调离用新扩展的 requestPermissions() 方法。就算你的使用并不以 Android 6.0(API 品级23)为指标平台,您也应有在新权力情势下测验你的利用。

  1. 取消补助Apache HTTP客户端

Android 6.0 版移除了对 Apache HTTP 客户端的支撑。若是您的施用使用该客户端,并以 Android 2.3或更加高版本为指标平台,请改用 HttpUTiggoLConnection 类。此 API 成效更加高,因为它能够透过透明裁减和响应缓存减弱互联网采取,并可最大限度减弱功耗量。要持续采纳Apache HTTP API,您必须先在 build.gradle 文件中声称以下编写翻译时正视项:

android {

useLibrary 'org.apache.http.legacy'

}

  1. BoringSSL

Android 正在从使用 OpenSSL 库转向使用 BoringSSL 库。要是您要在利用中利用 Android NDK,请勿链接到并非 NDK API 组成都部队分的加密库,如 libcrypto.so 和 libssl.so。这几个库并非公共 API,可能会在分裂版本和装置上无须征兆地发生变化或出现故障。别的,您还大概让和睦揭穿在安全漏洞的高风险之下。请改为修改原生代码,以通过 JNI 调用 Java 加密 API,或静态链接到您选择的加密库。

  1. 通知

此版本移除了Notification.setLatestEventInfo()方法。请改用 Notification.Builder 类来营造布告。要双重更新文告,请重复使用 Notification.Builder 实例。调用 build() 方法可获取更新后的 Notification 实例。

adb shell dumpsys notification命令不再打字与印刷输出您的通知文件。请改用adb shell dumpsys notification --noredact命令打字与印刷输出 notification 对象中的文本。

  1. 节奏管理器改动

不再协助通过 奥迪(Audi)oManager 类间接设置音量或将一定音频流静音。setStreamSolo() 方法已弃用,您应该改为调用 request奥迪(Audi)oFocus() 方法。类似地,setStreamMute() 方法也已弃用,请改为调用 adjustStreamVolume() 方法并传到方向值 ADJUST_MUTE 或 ADJUST_UNMUTE。

  1. 相机服务转移

在此版本中,相机服务中国共产党享财富的拜谒形式已从从前的“先到先得”访问格局退换为高优先级进度优先的拜访方式。对劳务行为的改造蕴涵:

传说客户端应用进度的“优先级”授予对相机子系统能源的访谈权,包涵打开和陈设相机设备。带有对用户可知Activity 或前台Activity 的应用进度一般会被赋予较高的优先级,进而使相机财富的拿走和接纳更为可相信;

当高优先级的使用尝试采取相机时,系统也许会“驱逐”正在使用相机客户端的低优先级应用。在已弃用的 Camera API 中,那会导致系统为被赶走的客户端调用 onError()。在 Camera2 API 中,那会导致系统为被驱逐的客户端调用onDisconnected();

在配置相应相机硬件的设备上,区别的施用进度可同期独立展开和行使不一致的相机设备。但后天,假使在多进度用例中何况做客相机遇变成任何张开的相机设备的品质或才干严重下落,相机服务会检查评定到这种情形并取缔同一时间做客。即便并不曾另外使用间接尝试访谈同一相机设备,此改动也恐怕导致低优先级客户端被“驱逐”。

更换当前用户会促成前面用户帐户具有的选拔内运动相机客户端被驱赶。对相机的寻访只限于访问当前设备用户全数的用户个人资料。譬世尊讲,那代表,当用户切换成别的帐户后,“广安”帐户实际上不恐怕让动用相机子系统的长河保持运市价况

图片 6

Android 7.0表现退换

API级别:24

  1. 电瓶和内部存款和储蓄器

Android 7.0 包涵目的在于延长设备电瓶寿命和减弱 RAM 使用的类别作为退换。那一个改换大概会影响您的选用访谈系统能源,以及你的采纳通过特定隐式 intent 与其他使用交互的诀要。

  1. Project Svelte:后台优化

Android 7.0 移除了三项隐式广播,以帮忙优化内部存款和储蓄器使用和电量消耗。此项改成很有不能缺少,因为隐式广播会在后台频仍运维已登记侦听那几个广播的行使。删除那么些广播能够肯定晋级设施品质和用户体验。

一抬手一动脚器械会经历每每的三番五次退换,比如在 WLAN 和移动多少里面切换时。近日,能够因而在选择清单中登记三个接收器来侦听隐式 CONNECTIVITY_ACTION 广播,让动用能够监察和控制那些改变。由于众多应用会注册接收此广播,由此单次互联网切换即会产生全体应用被提醒并同期管理此广播。

同理,在在此以前版本的 Android 中,应用能够挂号接收来自另外应用的隐式 ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 广播。当用户使用相机应用拍戏照片时,那一个应用即会被提示以拍卖广播。

为化解那些标题,Android 7.0 应用了以下优化措施:

面向 Android 7.0 开荒的使用不会接收 CONNECTIVITY_ACTION 广播,纵然它们已有清单条约来呼吁接受这个事件的照顾。在前台运维的运用若是利用 BroadcastReceiver 伏乞接收公告,则还可以够在主线程中侦听 CONNECTIVITY_CHANGE。

应用无法发送或收取 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO 广播。此项优化会潜移暗化全部应用,而不光是面向 Android 7.0 的行使。

一经您的施用使用另外 intent,您仍急需尽早移除它们的借助关系,以正确适配 Android 7.0 设备。Android 框架提供四个缓慢解决方案来化解对这个隐式广播的必要。举例,JobScheduler API 提供了三个庄严可信赖的建制来布局知足钦命条件(比方连入Infiniti流量网络)时所施行的网络操作。您依然足以选拔JobScheduler 来适应内容提供程序变化。

  1. 系统权限更动

为了增长个人文件的安全性,面向 Android 7.0 或越来越高版本的施用私有目录被限制访问。此设置可预防个人文件的元数据败露,如它们的大大小小或存在性。此权限更换有多种副功能:

1.私有文件的公文权限不应再由全部者放宽,为利用 MODE_WORLD_READABLE 和/或 MODE_WORLD_W冠道ITEABLE 而开始展览的此类尝试将触发 SecurityException。

注:迄今截止,这种范围尚不能够一心施行。应用仍恐怕使用原生 API 或 File API 来修改它们的个体目录权限。可是,大家领会反对放宽私有目录的权能。

2.传递软件包网域外的 file:// U君越I 或者给接收器留下不可能访谈的门路。由此,尝试传递 file:// U昂科拉I 会触发 FileUriExposedException。分享个人文件内容的推荐方法是行使 FileProvider。

3.DownloadManager 不再按文件名享受私人存款和储蓄的文书。旧版应用在拜会COLUMN_LOCAL_FILENAME 时可能出现不能访谈的门道。面向 Android 7.0 或更加高版本的运用在尝试访问 COLUMN_LOCAL_FILENAME 时会触发 SecurityException。通过应用DownloadManager.Request.setDestinationInExternalFilesDir()或DownloadManager.Request.setDestinationInExternalPublicDir()将下载地方设置为公家地点的旧版应用还能够访谈COLUMN_LOCAL_FILENAME 中的路线,但是大家确定反对使用这种办法。对于由 DownloadManager 公开的文件,首推的拜见格局是行使ContentResolver.openFileDescriptor()。

  1. 在应用件共享文件

对此面向 Android 7.0 的选拔,Android 框架推行的 StrictMode API 政策禁止在您的应用外部公开 file:// U揽胜I。若是一项包括文件 UENVISIONI 的 intent 离开你的利用,则应用出现故障,并冒出 FileUriExposedException 万分。

要在接纳间分享文件,您应发送一项 content:// U福睿斯I,并给予 UKoleosI 有时拜会权限。实行此授权的最简便易行方法是应用 FileProvider 类。

  1. 显示屏缩放

Android 7.0 帮忙用户安装展现尺寸,以加大或缩短显示屏上的富有因素,进而升高器具对视力糟糕用户的可访谈性。用户无法将显示屏缩放至低于最小显示屏宽度 sw320dp,该增长幅度是 Nexus 4 的急剧,也是日常中等大小手提式有线电话机的增幅。

当设备密度发生改动时,系统会以如下格局通告正在周转的采纳:

一旦是面向 API 品级 23 或更低版本系统的应用,系统会活动甘休其持有后台进度。那意味着一旦用户切换离开此类应用,转而开采Settings 荧屏并退换 Display size 设置,则系统会像管理内部存款和储蓄器不足的情形同样终止该应用。假若利用具有别的前台进度,则系统会如管理运转时改造中所述将安插更动布告给这几个进程,仿佛对待设备显示屏方向更改一样。

假若是面向 Android 7.0 的行使,则其独具进度都会接到有关计划更换的照应,如管理运转时改造中所述。

超越55%应用并无需举办其余退换就可以支持此作用,可是前提是那一个应用遵守Android 最好做法。具体要检查的事项:

1.在荧屏宽度为 sw320dp 的配备上测量试验你的选择,并确定保障其充裕运维。

2.当配备配备发生转移时,更新任何与密度有关的缓存新闻,举例缓存位图或从网络加载的能源。当使用从中断状态复苏运维时,检查布置改换。

注:借使您要缓存与布置相关的数量,则最佳也包蕴有关元数据,举例该数额对应的荧屏尺寸或像素密度。保存那几个元数据实惠您在安顿改造后调控是不是须要刷新缓存数据。

3.幸免用像素单位钦点尺寸,因为像素不会随荧屏密度缩放。应改为运用与密度无关像素 单位钦命尺寸。

  1. 自己争辩你的施用是不是使用私有库

为援助你辨别加载私有库的难题,logcat 大概会生成多少个告诫或运营时不当。比如,若是你的采纳面向 API 等级 23 或更低端别,并在运作 Android 7.0 的装置上尝试访谈私有库,您也许拜访到二个近乎于上面所示的告诫:

03-21 17:07:51.502 31234 31234 W linker :

library "libandroid_runtime.so"("/system/lib/libandroid_runtime.so") needed or dlopened by "/data/app/com.popular-app.android-2/lib/arm/libapplib.so" is not accessible for the namespace "classloader-namespace" - the access is temporarily granted as a workaround for

那么些 logcat 警告布告你哪个库正在尝试访谈私有平台 API,但不会导致您的运用崩溃。不过,即使接纳面向 API 等第 24 或越来越高端别,logcat 会生成以下运维时不当,您的接纳恐怕会崩溃:

java.lang.UnsatisfiedLinkError: dlopen failed:

library "libcutils.so"("/system/lib/libcutils.so") needed or dlopened by"/system/lib/libnativeloader.so" is not accessible for the namespace "classloader-namespace"

at java.lang.Runtime.loadLibrary0(Runtime.java:977)

at java.lang.System.loadLibrary(System.java:1602)

借使你的施用使用动态链接到私有平台 API 的第三方库,您恐怕也会看到上述 logcat 输出。利用 Android 7.0DK 中的 readelf 工具,您能够由此运营以下命令生成给定 .so 文件的享有动态链接的分享库列表:

aarch64-linux-android-readelf -dW libMyLibrary.so

  1. 任何关键表达

⑴倘使一个运用在 Android 7.0 上运行,但却是针对更低 API 等级开拓的,那么在用户改动彰显尺寸时,系统将适可而止此选取进度。应用必须能够稳当处理此场景。不然,当用户在此以前段时直接纳记录中苏醒运维应用时,应用将会产出崩溃现象。

您应测量试验应用以担保不会时有产生此作为。要开始展览此测量检验,您能够由此 DDMS 手动终止应用,以致使一样的垮台现象。

在密度爆发改动时,系统不会活动截至面向 N 及更加高版本的应用;可是,这么些使用仍只怕对配备改动做出不良响应。

⑵Android 7.0 上的选拔应可以安妥管理配置改变,並且在一连运营时不会冒出崩溃现象。您能够经过改动字体大小 (Setting >Display > Font size) 并跟着从近期使用记录中平复运维应用,来证明应用行为。

⑶由于以前的 Android 版本中的一项错误,系统不许将对主线程上的二个 TCP 套接字的写入操作举报为违反严俊情势。Android 7.0 修复了此错误。显示出这种作为的运用未来会掀起android.os.NetworkOnMainThreadException。一般景色下,大家不建议在主线程上施行互连网操作,因为这几个操作经常会产出大概引致 AN奥迪Q5 和卡顿的高尾延迟。

⑷Debug.startMethodTracing()方法层层现行反革命私下认可在你的共享存储空间上的软件包特定目录中积累输出,而非 PCIe闪存卡根目录。那象征应用不再须要诉求W科雷傲ITE_EXTERNAL_STORAGE权限来接纳那么些API 。

⑸比较多阳台 API 今后起初工检索查在 Binder 事务间发送的大负荷,系统未来会将TransactionTooLargeExceptions作为 RuntimeExceptions 再度掀起,而不再只是默默记下或抑制它们。几个广大例子是在Activity.onSaveInstanceState()上囤积过多多少,导致ActivityThread.StopInfo在您的运用面向 Android 7.0 时引发 RuntimeException。

⑹假若使用向 View 公布 Runnable 任务,并且 View 未附加到窗口,系统会用 View 为 Runnable 任务排队;在 View 附加到窗口以前,不会实践 Runnable 职责。此行为会修复以下错误:

如若一项应用是从并不是预期窗口 UI 线程的别的线程宣布到 View,则 Runnable 恐怕会为此运行错误的线程。

假如 Runnable 职分是从并不是环路径程的其他线程宣布,则利用恐怕会暴光Runnable 职务。

⑺假如 Android 7.0 上一项有 DELETE_PACKAGES 权限的使用尝试删除四个软件包,但另一项应用已经设置了这几个软件包,则系统需求用户实行确认。在这种状态下,应用在调用PackageInstaller.uninstall()时测度的回到状态应该为STATUS_PENDING_USER_ACTION。

本文由白小姐透特发布于白小姐开奖结果开奖结果,转载请注明出处:0新特性整理,新特性详解

关键词: 白小姐透特

上一篇:定金可抵千元,富士单反相机X
下一篇:没有了