AndroidN行为变更和后台优化

Android native开发严重问题总结 本文用于总结开发过程中遇到的重要问题分析原因及其解决方案 1、libnativeloader.so" is not accessible for the namespace “classloader-namespace” 原因:安卓高版本中将会限制三方APP访问非NDK公开so库,即不能访问system/lib/lib64下面的私有so库。 两种情况的解决方案: 第一:若是系统system app,该问题的产生原因是app是通过install的,这样不可行,必须将该模块在编译产品后的system/app路径 阅读详情

行为变更

参照:http://developer.Android.com/intl/zh-cn/preview/behavior-changes.html


本文内容

  1. 性能提升

    1. 打盹

    2. 后台优化

  2. 权限更改

  3. 辅助工具改进

    1. 屏幕缩放

    2. 设置向导中的视觉设置

  4. NDK 应用链接至平台库

  5. Android for Work

另请参阅

  1. Android N API 概览

Android N 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。本文重点介绍您应该了解并在开发应用时加以考虑的一些重要变更。

如果您之前发布过 Android 应用,请注意您的应用可能受到这些平台变更的影响。

性能提升


为延长设备的电池寿命、降低内存使用率以及提升应用性能,Android N 对系统行为做出了一些变更。这些变更可能会影响系统资源和系统通知对应用的可用性。您应仔细检查这些变更并评估应用可能需要做何调整以适应这些变更。

打盹

Android 6.0(API 级别 23)引入了打盹模式,当用户设备未插接电源、处于静止状态且屏幕关闭时,该模式会推迟 CPU 和网络活动,从而延长电池寿命。而 Android N 则通过在设备未插接电源且屏幕关闭状态下、但不一定要处于静止状态(例如用户外出时把手持式设备装在口袋里)时应用部分 CPU 和网络限制,进一步增强了打盹模式。


当设备处于充电状态且屏幕已关闭一定时间后,设备会进入打盹模式并应用第一部分限制:关闭应用网络访问、推迟作业和同步。如果进入打盹模式后设备处于静止状态达到一定时间,系统则会对PowerManager.WakeLock、AlarmManager 闹铃、GPS 和 Wi-Fi 扫描应用余下的打盹限制。无论是应用部分还是全部打盹限制,系统都会唤醒设备以提供简短的维护时间窗口,在此窗口期间,应用程序可以访问网络并执行任何被推迟的作业/同步。


图 2. 打盹模式如何在设备处于静止状态达到一定时间后应用第二级系统活动限制的图示。

请注意,激活屏幕或插接设备电源时,系统将退出打盹模式并取消这些处理限制。此项新增的行为不会影响有关使您的应用适应 Android 6.0(API 级别 23)中所推出的旧版本打盹模式的建议和最佳实践,如打盹和应用待机优化中所讨论。您仍应遵循这些建议(例如使用 Google Cloud Messaging (GCM) 发送和接收消息)并开始安排更新计划以适应新增的打盹行为。

Project Svelte:后台优化

Android N 删除了三项隐式广播,以帮助优化内存使用和电量消耗。此项变更很有必要,因为隐式广播会在后台频繁启动已注册侦听这些广播的应用。删除这些广播可以显著提升设备性能和用户体验。

移动设备会经历频繁的连接变更,例如在 Wi-Fi 和移动数据之间切换时。目前,可以通过在应用清单文件中注册一个接收器来侦听隐式 CONNECTIVITY_ACTION 广播,让应用能够监控这些变更。由于很多应用会注册接收此广播,因此单次网络切换即会导致所有应用被唤醒并同时处理此广播。

同理,应用可以注册接收来自其他应用(例如相机)的隐式 ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 广播。当用户使用相机应用拍摄照片时,这些应用即会被唤醒以处理广播。

为减缓这些问题,Android N 应用了以下优化措施:

  • 面向 Android N 开发的应用不会收到 CONNECTIVITY_ACTION 广播,即使它们已有清单条目来请求接受这些事件的通知。在前台运行的应用如果使用 BroadcastReceiver 请求接收通知,则仍可以在主线程中侦听CONNECTIVITY_CHANGE。

  • 应用无法发送或接收 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO 广播。此项优化会影响所有应用,而不仅仅是面向 Android N 的应用。

未来的 Android 版本还可能会弃用其他隐式广播以及未绑定的后台服务。有鉴于此,您应避免依赖在清单文件中声明的接收器来侦听隐式广播或删除此依赖关系,以及避免或删除对后台服务的依赖关系。

Android 框架提供多种解决方案来降低这些隐式广播或后台服务的必要性。例如,JobScheduler API 提供了一个稳健可靠的机制来安排满足指定条件(例如连入不按流量计费的网络)时所执行的网络操作。您甚至可以使用JobScheduler 来响应内容提供程序所发生的变更。

如需了解有关此行为变更及如何改写应用的详细信息,请参阅后台优化。

权限更改


Android N 做了一些权限更改,包括用户帐户权限和向外部存储设备写入信息的新权限,这些更改可能会影响您的应用。下面概要列出了预览版中已发生更改的权限。

  • GET_ACCOUNTS(已弃用)

    GET_ACCOUNTS 权限现已弃用。对于面向 Android N 的应用,系统将忽略此权限。

辅助工具改进


为提高平台对于视力不佳或视力受损用户的可用性,Android N 做出了一些更改。这些更改一般并不要求更改您的应用代码,不过您应仔细检查并使用您的应用测试这些功能,以评估它们对用户体验的潜在影响。

屏幕缩放

Android N 支持用户设置显示尺寸,以放大或缩小屏幕上的所有元素,从而提升设备对视力不佳用户的可访问性。用户无法将屏幕缩放至低于最小屏幕宽度 sw320dp,该宽度是 Nexus 4 的宽度,也是常规中等大小手机的宽度。

​

当设备密度发生更改时,系统会以如下方式通知正在运行的应用:

  • 如果是面向 API 级别 23 或更低版本系统的应用,则系统会自动终止其所有后台进程。这意味着如果用户切换离开此类应用,转而打开 Settings 屏幕并更改 Display size 设置,则系统会像处理内存不足的情况一样终止该应用。如果应用具有任何前台进程,则系统会如处理运行时变更中所述将配置变更通知给这些进程,就像对待设备屏幕方向变更一样。

  • 如果是面向 Android N 的应用,则其所有进程(前台和后台)都会收到有关配置变更的通知,如处理运行时变更中所述。

大多数应用并不需要进行任何更改即可支持此功能,不过前提是这些应用遵循 Android 最佳实践。具体要检查的事项:

  • 在屏幕宽度为 sw320dp 的设备上测试您的应用,并确保其充分运行。

  • 当设备配置发生变更时,更新任何与密度相关的缓存信息,例如缓存位图或从网络加载的资源。当应用从暂停状态恢复运行时,检查配置变更。

    注:如果您要缓存与配置相关的数据,则最好也包括相关元数据,例如该数据对应的屏幕尺寸或像素密度。保存这些元数据便于您在配置变更后决定是否需要刷新缓存数据。

  • 避免用像素单位指定尺寸,因为像素不会随屏幕密度缩放。应改为使用与密度无关像素 (dp) 单位指定尺寸。

设置向导中的视觉设置

Android N 在“Welcome”屏幕中加入了“Vision Settings”,用户可以在新设备上设置以下辅助工具设置:Magnification gesture、Font size、Display size 和 TalkBack。此项变更增强了与不同屏幕设置相关的错误的可见性。要评估此功能的影响,您应在启用这些设置的状态下测试应用。您可以在 Settings > Accessibility 中找到这些设置。

NDK 应用链接至平台库


Android N 做了一些命名空间更改,以阻止加载非公开 API。如果您使用 NDK,则只能使用 Android 平台提供的公开 API。在下一个官方发布的 Android 版本上使用非公开 API 会导致应用崩溃。

为提醒您使用了非公开 API,在 Android N 设备上运行的应用会在有应用调用非公开 API 时在日志消息输出中生成一个错误。此错误还会作为消息显示在设备屏幕上,以帮助增强您对此情况的认识。您应检查应用代码以删除使用非公开平台 API,并使用预览版设备或模拟器全面测试应用。

如果您的应用依赖平台库,则请参见 NDK 文档,了解使用公开 API 等效项替换普通私有 API 的典型修复。您还可以链接至平台库,而无需实现此应用,如果应用使用的库是平台的一部分(例如 libpng),但不属于 NDK,则更可如此。此情况下,请确保您的 APK 包含您打算链接到的所有 .so 文件。

注意:有些第三方库可能会链接至非公开 API。如果您的应用使用这些库,那么当您的应用在下一个官方发布的 Android 版本上运行时可能会出现崩溃现象。

应用不应依赖或使用不属于 NDK 的原生库,因为这些库可能会发生更改或从一个 Android 版本迁移至另一版本。例如,从 OpenSSL 切换至 BoringSSL 即属于此类更改。此外,不同的设备可能提供不同级别的兼容性,因为不属于 NDK 中的平台库没有兼容性要求。如果您必须在较旧设备上访问非 NDK 库,则请依据 Android API 级别进行加载。

为帮助您诊断此类问题,下面列举了一些在您试图使用 Android N 开发应用时可能遇到的 Java 和 NDK 错误:

Java 错误示例:

java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
    is not accessible for the namespace "classloader-namespace"

NDK 错误示例:

dlopen failed: cannot locate symbol "__system_property_get" referenced by ...

以下是遇到这类错误的应用的一些典型修复:

  • 可以使用标准 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 函数:

    <span class="com" style="margin: 0px; padding: 0px;">#include</span><span class="pln" style="margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="str" style="margin: 0px; padding: 0px;"><sys/system_properties.h></span>
  • 应使用应用本地版本来替代使用 libcrypto.so 中的 SSL_ctrl 符号。例如,您应在 .so 文件中静态链接libcyrpto.a,或者在应用中包含您自己的来自 BoringSSL 或 OpenSSL 的动态 libcrypto.so。

Android for Work


Android N 包含一些针对面向 Android for Work 的应用的变更,包括对证书安装、密码重置、二级用户管理、设备标识符访问权限的变更。如果您是要针对 Android for Work 环境开发应用,则应仔细检查这些变更并相应地修改您的应用。

  • 您必须先安装授权证书安装程序,然后 DPC 才能对其进行设置。对于面向 N SDK 的配置文件和设备所有者应用,您应在设备策略控制器 (DPC) 调用 DevicePolicyManager.setCertInstallerPackage() 之前安装授权证书安装程序。如果尚未安装此安装程序,则系统会引发 IllegalArgumentException。

  • 针对设备管理员的重置密码限制现在也适用于配置文件所有者。设备管理员无法再使用DevicePolicyManager.resetPassword() 来清除或更改已经设置的密码。不过,设备管理员仍可以设置密码,但只能在设备没有密码、PIN 或图案时这样做。

  • 即使设置了限制,设备所有者和配置文件所有者仍可以管理帐户。而且,即使具有DISALLOW_MODIFY_ACCOUNTS 用户限制,设备所有者和配置文件所有者仍可调用 Account Management API。

  • 设备所有者可以更轻松地管理二级用户。当设备在设备所有者模式下运行时,系统将自动设置DISALLOW_ADD_USER 限制。这样可以防止用户创建非托管二级用户。此外,CreateUser() 和createAndInitial() 方法已弃用,取而代之的是 DevicePolicyManager.createAndManageUser() 方法。

  • 设备所有者可以访问设备标识符。设备所有者可以使用 DevicePolicyManagewr.getWifiMacAddress() 访问设备的 Wi-Fi MAC 地址。如果设备上从未启用 Wi-Fi,则此方法将返回一个 null 值。

如需了解有关 Android N 中针对 Android for Work 所做变更的详细信息,请参阅 Android for Work 更新。

其他重要说明


  • 如果一个应用在 Android N 上运行,但却是针对更低 API 级别开发的,那么在用户更改显示尺寸时,系统将终止此应用进程。因此,应用必须能够正常处理此情景。否则,当用户从最近使用记录中恢复运行应用时,应用将会出现崩溃现象。

    您应测试应用以确保不会发生此行为。要进行此测试,您可以通过 DDMS 手动终止应用,以造成相同的崩溃现象。

    在密度发生更改时,系统不会自动终止面向 N 及更高版本的应用;不过,这些应用仍可能对配置变更做出不良响应。

  • Android N 上的应用应能够正常处理配置变更,并且在后续启动时不会出现崩溃现象。您可以通过更改字体大小 (Setting > Display > Font size) 并随后从最近使用记录中恢复运行应用,来验证应用行为。



后台优化

本文内容

  1. 对 CONNECTIVITY_ACTION 的限制

  2. 安排连入无限流量连接时的网络作业

  3. 在应用运行时监控网络连接

  4. 对 NEW_PICTURE 和 NEW_VIDEO 的限制

  5. 新的 JobInfo 方法

  6. 新的 JobParameter 方法

  7. 进一步优化您的应用

后台进程非常耗费内存和电池。例如,隐式广播可以启动许多已注册侦听它的后台进程,即使这些进程可能没有执行许多工作。 这会严重影响设备性能和用户体验。

为减缓这个问题,N Developer Preview 应用了以下限制:

Android 框架提供多个解决方案来缓解对这些隐式广播的需求。 例如,JobScheduler 和GcmNetworkManager 提供了一个稳健可靠的机制来安排满足指定条件(例如连入无限流量网络)时所执行的网络操作。 现在,您还可以使用 JobScheduler 来响应内容提供程序所发生的变更。JobInfo 对象封装了JobScheduler 用来安排您的作业的参数。如果符合作业条件,系统将在应用的 JobService 上执行此作业。

在本文档中,我们将学习如何使用备用方法(如 JobScheduler)调整您的应用以符合这些新限制。

对 CONNECTIVITY_ACTION 的限制


面向 N Developer Preview 的应用不会收到 CONNECTIVITY_ACTION 广播,即使它们在清单文件中注册接收这些广播亦是如此,依赖此广播的流程也不会启动。 这可能会给需要侦听网络变化或者需要在设备接入无限流量网络时执行批量网络活动的应用造成问题。 Android 框架中已存在多个可绕过此限制的解决方案,但需要根据您想要应用实现的目标来选择正确的解决方案。

注:当应用位于前台时,通过 Context.registerReceiver() 中注册的 BroadcastReceiver 将继续接收这些广播。

安排连入无限流量连接时的网络作业

使用 JobInfo.Builder 类构建 JobInfo 对象时,应用 setRequiredNetworkType() 方法,并将JobInfo.NETWORK_TYPE_UNMETERED 作为作业参数传递。

当符合作业条件时,应用会收到回调以运行指定 JobService.class 中的 onStartJob() 方法。 如需查看JobScheduler 实现的更多示例,请参阅 JobScheduler 示例应用。

使用 GMSCore 服务且面向 Android 5.0(API 级别 21)或更低版本系统的应用可以使用 GcmNetworkManager 并指定 Task.NETWORK_STATE_UNMETERED。

在应用运行时监控网络连接

在前台运行的应用仍可以通过注册的 BroadcastReceiver 侦听 CONNECTIVITY_CHANGE。不过,ConnectivityManager API 提供了一个更稳健可靠的方法,可以仅在符合指定的网络条件时才请求回调。

NetworkRequest 对象根据 NetworkCapabilities 定义网络回调的参数。 使用NetworkRequest.Builder 类创建 NetworkRequest 对象。然后,registerNetworkCallback() 将NetworkRequest 对象传递给系统。 当符合网络条件时,应用会收到回调以执行在其ConnectivityManager.NetworkCallback 类中定义的 onAvailable() 方法。

应用继续接收回调,直至应用退出或调用 unregisterNetworkCallback()。

对 NEW_PICTURE 和 NEW_VIDEO 的限制


在 N Developer Preview 中,应用无法发送或接收 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO 广播。此限制有助于缓解必须唤醒多个应用以处理新图像或视频时对性能和用户体验造成的影响。 N Developer Preview 扩展了 JobInfo 和 JobParameters 以提供备用解决方案。

新的 JobInfo 方法

为了针对内容 URI 变化触发作业,N Developer Preview 使用以下方法扩展了 JobInfo API。

  • JobInfo.TriggerContentUri()

  • 封装针对内容 URI 变化触发作业所需的参数。

  • JobInfo.Builder.addTriggerContentUri()

  • 将 TriggerContentUri 对象传递给 JobInfo。ContentObserver 监控已封装的内容 URI。如果存在多个与某个作业关联的 TriggerContentUri 对象,则系统会提供一个回调,即使其报告仅一个内容 URI 发生变化。

  • 如果给定 URI 的任何子级发生变化,则添加 TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS 标志以触发作业。 此标志对应于传递给 registerContentObserver() 的 notifyForDescendants 参数。

注: TriggerContentUri() 无法与 setPeriodic() 或 setPersisted() 结合使用。 若要持续监控内容变化,则可在应用的 JobService 完成处理最新的回调前安排新的 JobInfo。


当系统报告指定内容 URI 所发生变化时,应用将收到一个回调,并向 MediaContentJob.class 中的onStartJob() 方法传递一个 JobParameters 对象。

新的 JobParameter 方法

N Developer Preview 也扩展了JobParameters,以允许应用接收有关哪些内容权限和 URI 已触发作业的有用信息:

  • Uri[] getTriggeredContentUris()

  • 返回已触发作业的 URI 数组。如果没有任何 URI 触发作业(例如,作业是因截止期限或其他一些原因触发的),或者已更改的 URI 数量超过 50,该数组将为 null。

  • String[] getTriggeredContentAuthorities()

  • 返回已触发作业的内容权限的字符串数组。 如果返回的数组不是 null,请使用getTriggeredContentUris() 检索有关哪些 URI 已更改的详细信息。


进一步优化您的应用


优化您的应用以在低内存设备上或在低内存条件下运行,这样可以提升性能和用户体验。 删除后台服务依赖关系和静态注册的隐式广播接收器可帮助您的应用在此类设备上运行得更好。 尽管 N Developer Preview 采取了措施以减少部分问题,但建议您优化自己的应用,使其能够在完全不使用这些后台进程的情况下运行。

N Developer Preview 推出了一些附加 Android Debug Bridge (ADB) 命令,您可以使用这些命令测试在禁用这些后台进程情况下的应用行为:

  • 要模拟隐式广播和后台服务不可用的条件,请输入以下命令:

  • $ adb shell cmd appops set RUN_IN_BACKGROUND ignore
  • 要重新启用隐式广播和后台服务,请输入以下命令:

  • $ adb shell cmd appops set RUN_IN_BACKGROUND allow

第三方应用调用系统SO 库失败Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library 在Android 31平台,尝试使用第三方应用调用系统SO 库,会报如下的错误 Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib64/XXX.so" needed or dlopened by "/apex/com.android.art/lib64/libnativeloader.so" is not accessible for the namespace "classloader-namesp 阅读详情

相关推荐

Android AOSP源码编译之 dlopen failed:library is not accessible for the namespace “classloader-namespace“

项目对应的Android.bp shared_libs 添加 libnativeloader.so。

人生只是一种体验,不必用来演绎完美。 1512

Android5.1--多用户模式

Android中的多用户与windows中的多用户类似,可以支持多个用户使用系统。通常,第一个在系统中注册的用户将默认成为系统管理员。 不同用户的锁屏设置、壁纸等系统设置各不相同,并且不同用户安装的应用及应用数据也不相同。但是系统中和硬件相关的设置则是共用的,例如网络设置等。

Kitty_Landon的专栏 1万+

原恒星尘埃生长的三维MHD模拟与湍流效应研究

星际尘埃演化是恒星形成过程中的关键环节,其动力学行为直接影响行星系统的构建。通过磁流体力学(MHD)模拟可以揭示尘埃颗粒从微米级到行星胚胎尺度的生长机制,其中湍流效应通过改变碰撞频率和密度结构发挥双重作用。最新研究采用COALA-RAMSES耦合框架,实现了包含自洽尘埃生长的三维非理想MHD模拟,量化了不同物理环境下尘埃尺寸分布的演化规律。这些发现不仅为解释ALMA观测数据提供理论依据,也对行星形成初期条件约束具有重要意义,特别是在湍流参数化与尘埃生长速率关系方面取得突破。

weixin_30988079的博客 382

Android N加载系统私有库时出现is not accessible for the namespace错误和针对该错误的解决方法

谷歌从Android N开始,除了那些在Android NDK提供的库之外,限制了应用对系统私有库的加载。本文介绍了如何应对这种情况。

wujushan的博客 3万+

制作 img系统镜像的详细方法

      I.MX6开发板目前支持从TF卡和eMMC启动,启动时,由于各个不同的启动文件对路径有不同的要求,例如uboot文件要求位于启动设备的某个块,dtb文件要求在FAT分区上,文件系统要求在Linux分区上,基于此,我们目前采用将映像制作成img文件的方式,这样可以更简单完成对启动卡的制作。 关于如何制作img,方法如下:方法一  Windows下面利用Win32工具1.   准备我司提供...

armkits的博客 4万+

Flotherm XT学习历程

大家好,通过半年的热仿真软件学习使用,最终发现最好用,最好上手的软件就是Flotherm XT,对新手非常友好,但由于软件近几年才发布,网上教程非常少,后面我将在这里持续分析软件使用心得,和大家一起学习。

xiaoredred的博客 6255

2021-01-27

Androidso库 异常保错: is not accessible for the namespace "classloader-namespace" 具体 so是我自己项目独有的,但是报错应该不是个例,而且下面的错误偶发出现。 java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libserial_port.so" needed or dlopened by "/system/lib/libnativelo...

wrc_work的博客 1463

MATLAB实战:手把手教你实现Gardner环路位同步(附完整代码)

本文通过MATLAB实战,详细讲解了Gardner环路位同步算法的原理与实现。内容涵盖插值滤波器、定时误差检测、环路滤波器与数控振荡器等核心模块,并提供完整代码和调试技巧,帮助读者掌握数字通信中关键的符号定时同步技术。

weixin_29048775的博客 174

Android N Preview 行为变更

行为变更 Android N 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。本文重点介绍您应该了解并在开发应用时加以考虑的一些重要变更。 如果您之前发布过 Android 应用,请注意您的应用可能受到这些平台变更的影响。 性能提升 为延长设备的电池寿命、降低内存使用率以及提升应用性能,Android N 对系统行为做出了一些变更。这些变更可

随手记两笔 4740

实战指南:如何用Frida绕过某梆加固的Anti-Frida检测(附完整脚本)

本文深入剖析了企业级加固方案中的Anti-Frida检测机制,并提供了实战对抗策略。通过分析基于文件系统、内存特征、行为及环境的多层次检测原理,文章详细介绍了如何定位检测逻辑、绕过maps文件扫描、对抗内存与行为特征检测,并附上了针对某梆加固的完整绕过脚本与系统化工程方案。

weixin_42527589的博客 598

忘记安卓锁屏密码怎么办?3种方法教你用ADB恢复访问(含gesture.key解密)

本文详细解析了安卓设备锁屏密码的存储与加密机制,特别是gesture.key文件的解密原理。针对遗忘密码的常见问题,提供了三种核心恢复方法:利用ADB调试接口删除密码文件、对gesture.key进行离线分析与解密,以及应对高版本系统的替代方案。重点介绍了通过ADB工具在Recovery模式下操作的具体步骤,帮助用户在合法合规前提下恢复设备访问权限。

php55的博客 955

AndroidN 7.0的注意事项

Android N 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。 本文重点介绍您应该了解并在开发应用时加以考虑的一些重要变更。如果您之前发布过 Android 应用,请注意您的应用可能受到这些平台变更的影响。电池和内存Android N 包括旨在延长设备电池寿命和减少 RAM 使用的系统行为变更。 这些变更可能会影响您的应用访问系统资源,以及您的系统通过特定隐式 Inten

chanzhu的博客 1611

全网最全-QCC51xx-QCC30xx(TWS)系列从入门到精通开发教程汇总(持续更新中)

QCC3040开发笔记之基本介绍(0) QCC3040开发笔记之开发环境搭建(1) QCC3040开发笔记之debug调试(trb调试,usbt调试,adb调试,WIFI调试)(2) QCC3040开发笔记之按键配置(3) QCC3040开发笔记之按键切换(4) QCC3040开发笔记之按键逻辑(5) QCC3040开发笔记之tone(6) QCC3040开发笔记之提示音(7) QCC3040开发笔记之bitserial接口(8) QCC3040开发笔记之双mic+AEC+ANC(9...

心跳包的博客 3万+

Android 7.0新特性---删除三项广播

简述:      Android N 除了提供诸多多窗口支持、活动通知、后台优化、消息传递服务和Vulkan 等新特性和功能外,还对系统和 API 行为做出了各种变更。本文介绍一下Android N 后台优化新特性。 Android官网官方文档:    对于Android N后台的优化主要是关闭了三项系统广播:网络状态变更广播、拍照广播以及录像广播。接下来我们看看Android官方

lzy_tinyjoy 5278

最新2026年《网络数据安全风险评估办法》条款解读

大型企业集团IT变革下的零信任安全体系建设方案(55页).pptx。以数据安全为核心的安全立体防御体系解决方案(41页).pptx。让数据安全合规地创造价值(15页 PPT).pptx。大型集团数据安全应急预案(57页).docx。数据安全治理与评估服务业务介绍.pptx。数据安全管理实践(17页).pptx。大数据安全架构设计方案.pptx。大数据安全规划总体方案.pptx。数据库安全综合治理方案.pptx。医疗数据安全建设方案.pptx。数据安全框架规划图.pptx。数据安全治理方案.pptx。

cdfunlove的博客 46

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android目标版本23升级到26修改点

Android N(7.0) 参考官网说明(https://developer.android.google.cn/about/versions/nougat/android-7.0-changes): 主要修改点有以下: 电池和内存: 问题: 应用退到后台后,可能进入低电耗模式,此时无法进行延时操作。如访问网络,以及PowerManager.WakeLock、AlarmManager 闹铃、...

KSWistron的博客 686

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android P 适配指南

1.1 non-sdk 接口限制此限制不仅仅局限于sdk层 (或者),而触及到了层,其实早在的时候就限制了使用的符号集合,一旦NDK有无法通知的变更,毫无疑问会引起程序的 crash。1.1.1 SDK 接口和非 SDK 接口指在 Android 框架中记录的接口, Google为了让开发者有过渡的时间并且起到警示的作用, 针对我们平时开发需要注意的也就是和,不用太在意,因为前面说到过可以直接引用接口,这里基本上是指直接引用。这边先举个例子:在官方的浅灰名单中,其中列举可很多我们平时用的接口,例如。

2401_84123171的博客 605

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android获取WifiMac地址

Android获取WifiMac地址 1:android6.0以下通过wifiinfo来获取。 WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); if (wifi != null) { WifiInfo wifiInfo = wifi.getConnectionInfo(); if (w

赵航的博客 2万+

JNI无法访问so提示not accessible

如果遇到library "/system/lib/libcontrol_opt.so" ("/system/lib64/libserialport.so") needed or dlopened by"/system/lib64/libnativeloader.so" is not accessible for the namespace "classloader-namespace"这个问题: ...

拒绝背八股文 1069

Android获取物理地址(支持5.0~10.0)

获取物理地址的方法,支持Android 5.0~Android 10.0 public String getMacAddress() { List<NetworkInterface> interfaces = null; try { interfaces = Collections.list(NetworkInterface.getNetworkInte...

doris_d的专栏 6802

JAVA类装载器classloader和命名空间namespace

JAVA类装载器classloader和命名空间namespace  JAVA虚拟机通过装载、连接和初始化一个JAVA类型,使该类型可以被正在运行的JAVA程序所使用。其中,装载就是把二进制形式的JAVA类型读入JAVA虚拟机中。连接就是把这种已经读入虚拟机的二进制形式的类型数据合并到虚拟机的运行时状态中去。连接阶段分为三个步骤-验证、准备和解析。验证确保了JAVA类型数据格式正确并适于J

sureyonder的专栏 1万+

Android N后使用JNI时调用一些库出现is not accessible for the namespace的问题

查阅资料等,Google从Android N开始,除了那些在Android NDK提供的库之外,限制了应用对系统私有库的加载。 目前有两种解决方案: 1、如果有源码权限,可以将system/etc/public.libraries.txt 和system/vendor/etc/public.libraries.txt导出;其中system/etc/public.libraries.txt是An...

欢迎来到潇潇的优快云 2565

android中获取mac地址8.0,NJS如何获取安卓手机MAC地址 安卓版本8.0以上

代码没问题, 应该是系统限制了硬件标识符访问权为给用户提供更严格的数据保护,从此版本开始,对于使用 WLAN API 和 Bluetooth API 的应用,Android 移除了对设备本地硬件标识符的编程访问权。WifiInfo.getMacAddress() 方法和 BluetoothAdapter.getAddress() 方法现在会返回常量值 02:00:00:00:00:00。7.0 以...

weixin_35763448的博客 305

关于Android N不能加载.so库的相关问题分析

分析android不能 load 系统功能so库的问题及解决

忧愁的awe的博客 2125

Android 7.0 Behavior Changes(Android 7.0 新特征)

本文内容 性能提升 低电耗模式 后台优化 权限更改 应用间共享文件 无障碍改进 屏幕缩放 设置向导中的视觉设置 NDK 应用链接至平台库 Android for Work 注解保留 其他重要说明 另请参阅

eesc55的博客 597
上一篇: Android动画
下一篇: Android H5判断是否安装app和唤起APP
robert_chao
博客等级 码龄15年 265粉丝 119原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值