温馨提示:这篇文章已超过472天没有更新,请注意相关的内容是否还可用!
摘要:,,Android 14升级后出现异常弹框的问题引发了广泛关注。经过深入探究,我们发现这一问题涉及多个层面,包括系统更新后的兼容性问题、软件与硬件之间的不匹配以及潜在的系统漏洞等。揭开这一神秘面纱,我们发现解决这一问题需要全面分析和有针对性的优化措施,以确保系统平稳运行并提升用户体验。
问题描述
在Android 14升级后,出现了两个异常的弹窗,以下是异常的截图:

我们将对这两个异常弹框逐一进行分析。
问题分析与解决方案
由于这两个异常弹框是由系统主动弹出的,应用层面无法直接干预其流程,要想分析这两个问题,我们只能通过系统源码找到弹框提示文字,进而找到对应的代码查看逻辑,分析源码以找到解决方案。
问题一
通过搜索关键字“此应用与最新版 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类在哪里被调用以及它被调用的逻辑是什么。
通过搜索我们可以找到以下调用:

最终我们可以看到弹框的调用逻辑如下:
<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
还没有评论,来说两句吧...