层层剥开Android14升级后异常弹框的神秘面纱,Android 14升级后异常弹框揭秘,层层剥开神秘面纱

马肤

温馨提示:这篇文章已超过472天没有更新,请注意相关的内容是否还可用!

摘要:,,Android 14升级后出现异常弹框的问题引发了广泛关注。经过深入探究,我们发现这一问题涉及多个层面,包括系统更新后的兼容性问题、软件与硬件之间的不匹配以及潜在的系统漏洞等。揭开这一神秘面纱,我们发现解决这一问题需要全面分析和有针对性的优化措施,以确保系统平稳运行并提升用户体验。

问题描述

在Android 14升级后,出现了两个异常的弹窗,以下是异常的截图:

层层剥开Android14升级后异常弹框的神秘面纱,Android 14升级后异常弹框揭秘,层层剥开神秘面纱 第1张

我们将对这两个异常弹框逐一进行分析。

问题分析与解决方案

由于这两个异常弹框是由系统主动弹出的,应用层面无法直接干预其流程,要想分析这两个问题,我们只能通过系统源码找到弹框提示文字,进而找到对应的代码查看逻辑,分析源码以找到解决方案。

问题一

通过搜索关键字“此应用与最新版 Android 不兼容,请检查是否有更新,或与应用开发者联系。”,我们能够搜索到在Framework层的字符串资源文件中名为“deprecated_abi_message”的字符串就是我们搜索的关键字。

接下来我们通过“deprecated_abi_message”继续搜索,可以找到该字符串在系统中只在一个地方使用了,以下是它使用的代码:

<pre class="brush:java;toolbar:false">class DeprecatedAbiDialog extends AppWarnings.BaseDialog {

//省略无关代码...

final CharSequence message = context.getString(R.string.deprecated_abi_message);

final AlertDialog.Builder builder = new AlertDialog.Builder(context)

.setPositiveButton(R.string.ok, (dialog, which) ->

manager.setPackageFlag(

mPackageName, AppWarnings.FLAG_HIDE_DEPRECATED_ABI, true))

.setMessage(message)

.setTitle(label);

//省略无关代码...

}</pre>

很清楚的可以看到这个字符串被使用创建成了一个AppWarnings.BaseDialog类型的弹框,我们继续顺着源码找到DeprecatedAbiDialog类在哪里被调用以及它被调用的逻辑是什么。

通过搜索我们可以找到以下调用:

层层剥开Android14升级后异常弹框的神秘面纱,Android 14升级后异常弹框揭秘,层层剥开神秘面纱 第2张

最终我们可以看到弹框的调用逻辑如下:

<pre class="brush:java;toolbar:false">public void showDeprecatedAbiDialogIfNeeded(ActivityRecord r) {

//省略无关代码...

if (is64BitDevice && appContainsOnly32bitLibraries) {

mUiHandler.showDeprecatedAbiDialog(r);

}

}</pre>

自此我们终于找到了问题1异常弹框的触发逻辑,如果设备为64位指令集并且当前应用仅仅包含32位指令集的包,那么就会弹出问题1的异常弹框。

问题一解决方案

通过对问题1的分析,我们知道如果碰到该提示,解决方案是在项目的build.gradle文件的ndk部分添加arm64-v8a的指令集。

问题二

分析步骤和问题1类似,我们最终可以找到以下代码:

<pre class="brush:java;toolbar:false"> /

* Shows the "deprecated target sdk" warning, if necessary.

* @param r activity record for which the warning may be displayed

*/ </pre>

当应用设置的targetSdkVersion值大于系统的常量 Build.VERSION.MIN_SUPPORTED_TARGET_SDK_INT会被触发,该常量在安卓14系统的值为28,因此设置targetSdkVersion至少为29就能在安卓14上避免异常弹框。

通过从源代码的角度分析安卓 14升级后出现双弹窗异常的原因并根据调查结果提出解决方案可以更好地定位问题并实施有效的修复措施,这种方法需要对系统和应用程序的源代码进行深入的检查和理解并确保修复后的应用程序在新系统上能够正常运行。 以下是部分Android学习资源的链接: Android 性能优化篇:https://qr18.cn/FVlo89 Android Framework底层原理篇:https://qr18.cn/AQpN4J Android 车载篇:https://qr18.cn/F05ZCM Android逆向安全学习笔记:https://qr18.cn/CQ5TcL Android 音视频篇:https://qr18.cn/Ei3VPD Jetpack全家桶篇(内含Compose):https://qr18.cn/A0gajp OkHttp 源码解析笔记:https://qr18.cn/Cw


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码