首页
我的博客
写文章
登录
注册
网站导航
互站首页
源码集市
服务市场
域名交易
网站交易
任务大厅
商家专区
互站社区
“此应用专为旧版android打造,因此可能无法运行”
原创
咕噜内测平台
2023-12-12 15:09:03
评论(0)
阅读(99)
当用户在Android P系统上打开某些应用程序时,可能会弹出一个对话框,提示内容为:“此应用专为旧版Android打造,可能无法正常运行。请尝试检查更新或与开发者联系”。 随着Android平台的发展,每个新版本通常都会引入新的功能和API,同时逐渐弃用或改变一些旧版本的API。这给应用开发者带来了挑战,如何保持他们的应用与**本的Android操作系统兼容? 在这篇文章中,我们将讨论Android操作系统的向后兼容性,并提供面向开发者和用户的解决方案。 Android平台的向后兼容性 在Android应用开发中,目标SDK版本(targetSdkVersion)非常重要,它告诉系统应用是为哪个版本的Android SDK设计的。系统使用这个信息来判断是否需要对该应用应用向后兼容措施。如果一个应用的目标SDK版本过低,可能会导致在新版本的Android系统上出现兼容性问题。 实际问题:遗留应用 由于历史原因,一些应用可能没有及时更新他们的目标SDK版本。这样,旧的应用可能无法充分利用新版本Android的优化或功能,也可能会由于权限模型或API行为变更而出现问题。这些问题会对用户体验产生负面影响。让我们深入了解其中的具体问题。 权限模型问题 随着Android版本的更新,权限模型也发生了改变。在旧版本Android系统中,应用安装后可以随意访问用户的许多敏感数据和系统资源,例如联系人数据、位置信息等等。这是一个潜在的安全隐患,Google加强了对应用权限的管理,并增加了对用户数据的保护。而这也是导致旧版应用出现兼容性问题的一个重要方面。 API的变化 Android系统推出新的API版本,同时可能会弃用旧的API,这意味着旧版应用使用这些API将无法在新版Android系统上正常运行。大多数情况下,使用新的API版本将更好地支持新的Android系统,并为用户提供更好的功能和体验。 Android P的“应用警告”机制 为了帮助用户更好地管理旧的应用,Android P中引入了“应用警告”机制,当应用的targetSdk版本低于Android系统中规定的**支持版本,会弹出“deprecated target”提示框。这个提示框给用户了解应用的适配情况,提醒他们可能会出现兼容性问题。 代码解决方案 更新应用targetSdkVersion 为了解决对应用兼容性的问题,应用开发者可以考虑更新其targetSdkVersion。这将使应用能够**地适应新的Android系统版本,并使用新的API和变化的权限模型等,充分利用**的功能。以下示例显示如何使用Gradle将应用程序的目标SDK版本提升至API级别为30。这会让用户感到困惑,那么真正的原因是什么呢?下面通过分析Android P源代码来解析这个问题。 在启动应用程序时,会经过一系列的流程,其中涉及到名为realStartActivityLocked的方法,该方法位于ActivityStackSupervisor.java文件中。在这个方法中,会调用AppWarnings.java文件中的onStartActivity方法。 onStartActivity方法具体实现如下: public void onStartActivity(ActivityRecord r) { showUnsupportedCompileSdkDialogIfNeeded(r); showUnsupportedDisplaySizeDialogIfNeeded(r); showDeprecatedTargetDialogIfNeeded(r); } 上述代码中,我们重点关注showDeprecatedTargetDialogIfNeeded函数的实现。 showDeprecatedTargetDialogIfNeeded函数会判断应用程序的targetSdkVersion是否低于Build.VERSION.MIN_SUPPORTED_TARGET_SDK_INT,如果是,则会显示对话框。 那么,如何确定Build.VERSION.MIN_SUPPORTED_TARGET_SDK_INT的值呢?我们可以通过查看源代码,发现其默认值是17(Build.VERSION_CODES.JELLY_BEAN_MR1)。 所以,当应用程序的targetSdkVersion低于17时,在Android P系统上启动应用时会弹出对话框“此应用专为旧版Android打造,可能无法正常运行。请尝试检查更新或与开发者联系”。 为了验证这一原因,我们查看了一个应用程序的Package信息,发现targetSdk版本是8,远低于17。= 为了避免重复弹出对话框,AMS会在用户选择“确定”后给应用设置一个Flag标识:FLAG_HIDE_DEPRECATED_SDK。这样在下次弹出对话框时,会先检测该标识是否为true,如果是,则说明已经提示过用户,无需再次弹出。 需要注意的是,标准值由ro.build.version.min_supported_target_sdk设定,默认为17。因此,当应用的targetSdk版本低于17时,会弹出对话框。比如,当检查某应用Package信息时,发现该应用的targetSdk版本为8,因此启动该应用时会弹出该对话框。 解决方案: 开发者应该将应用程序的targetSdkVersion版本提升至17或更高,以确保应用程序在Android P系统上能够正常运行。 需要注意的是,当用户**次弹出对话框后,如果选择“确定”,Android Management System(AMS)会为应用程序设置一个标识位FLAG_HIDE_DEPRECATED_SDK。因此,每次准备弹出对话框时,会先检查此标识位是否为true。如果是true,则说明已经提示过用户,无需再次弹窗。 总结: 在Android P系统上,当应用程序的targetSdkVersion低于17时,启动应用程序时会弹出对话框“此应用专为旧版Android打造,可能无法正常运行。请尝试检查更新或与开发者联系”。这个限制是由系统默认的Build.VERSION.MIN_SUPPORTED_TARGET_SDK_INT值决定的,一般为17。开发者应该尽快将应用程序的targetSdkVersion版本提升,以确保应用程序在Android P系统上的兼容性和正常运行。
关注下面的标签,发现更多相似文章
本文TAG标签:
分享
QQ分享
微博分享
微信扫一扫
收藏
此应用专为旧版android打造
因此可能无法运行
问题解决方案
上一篇:开源线上教学课程付费系统搭建教程开源线上教学课程付费系统搭建教程
下一篇:抖音跑腿小程序开发指南:从零开始到上线开源线上教学课程付费系统搭建教程
您好,
请先
登录
!请文明评论,不得违反国家法律法规!
已有
0
条评论
咕噜内测平台
关注
TA的店铺
89
文章
8183
人气
0
评论
0
粉丝
喜欢我的文章,请分享到朋友圈!
Ta的最新文章
如何在Linux上部署1Panel面板并远程访问内网Web端
Java读取制表符文本转换为JSON
应用app的服务器如何增加高并发
PyQt GUI开发初学者:固定尺寸还是全屏自适应?
如何在Linux上搭建本地Docker Registry
标签大全
因此可能无法运行
(2)
工厂设备扫码使用售卖联网开发需要怎么开发
(1)
小白在开发app过程中外包我们经常会遇到
(1)
游戏分发平台怎么领取分发点之订阅币赠送活
(1)
问题解决方案
(1)
苹果应用商城审核拒绝的问题如何解决
(1)
android studio打包有哪些优
(1)
苹果ios打包出来的ipa应用app怎么
(1)
授信的原理是什么
(1)
ipa应用测试平台怎么开开具发票
(1)
uniapp x 相比于其他的开发系统框
(1)
guideline 2.3.1 - pe
(1)
蓝牙物联网多个核心应用场景开发与应用细化
(1)
如何在苹果ios系统ipa应用中获取当前
(1)
苹果安卓网页的h5封装成app的应用和原
(1)
应用分发平台的重要性构建扩展和管理您的移
(1)
苹果ios系统ipa文件签名的圈外签名是
(1)
解决苹果应用商城审核拒绝的问题
(1)
在app store connect上编
(1)
游戏服务器怎么挑选细节与技巧深度解析
(1)
阅读目录
已有 0 条评论