关于app提示专为旧版Android打造的有关测试

您所在的位置:网站首页 老版本的安卓应用 关于app提示专为旧版Android打造的有关测试

关于app提示专为旧版Android打造的有关测试

2024-07-08 03:55| 来源: 网络整理| 查看: 265

因为经常进自己网站左康右康有没有人访问(极度自恋),老是去翻浏览器书签很麻烦,最近就想着把网站打包一个app,虽然我这破站也没什么可看的,不过至少打包后加点快捷功能就看不出来我一直在划水了

0x01 正文

说是做个app,但是我又完全不懂安卓,这可怎么办呢。

正好想到之前大名鼎鼎的Funsion App,可以快捷的将网站做成app,于是就下载来试了一下,调了半个小时就做好了(也就改改图标之类的,也没什么技术含量,就不献丑了),说起来这应用确实简单,没有一点安卓编程基础的都能用,这里向和我一样的小白朋友们安利一波(住口,我没恰烂钱!)

虽然这软件确实很方便,不过随之而来也有一些问题,预览的结果还挺简洁美观,但是打包安装好后测试一波,就弹出了下面的提示 虽说没有什么大问题,但是,一来弹个提示出来会让大部分人不爽,二来这不还是看的出来我在划水吗?得想办法解决一下。

一般这种情况,要么是用了低版本安卓专用的参数,要么就是应用SDK版本配置过低,上网查了一下,原因大致是因为从Android9开始,操作系统对minSdk进行了限制。

具体原因分析:PS:引用自大佬文章https://www.jianshu.com/p/9dc825ac1c58安卓应用启动,startActivity时,流程会执行到realStartActivityLocked方法,代码位于ActivityStackSupervisor.javarealStartActivityLocked方法中,会调用AppWarnings.java的onStartActivity方法,如下:

final boolean realStartActivityLocked(ActivityRecord r, ProcessRecord app, boolean andResume, boolean checkConfig) throws RemoteException { try { // ... mService.getAppWarningsLocked().onStartActivity(r); // ... } catch (RemoteException e) { // ... } }

onStartActivity方法实现:

/** * Called when an activity is being started. * * @param r record for the activity being started */ public void onStartActivity(ActivityRecord r) { showUnsupportedCompileSdkDialogIfNeeded(r); showUnsupportedDisplaySizeDialogIfNeeded(r); showDeprecatedTargetDialogIfNeeded(r); }

其中第三个函数showDeprecatedTargetDialogIfNeeded重点分析:

/** * Shows the "deprecated target sdk" warning, if necessary. * * @param r activity record for which the warning may be displayed */ public void showDeprecatedTargetDialogIfNeeded(ActivityRecord r) { if (r.appInfo.targetSdkVersion < Build.VERSION.MIN_SUPPORTED_TARGET_SDK_INT) { mUiHandler.showDeprecatedTargetDialog(r); } }

重点:这里出现一个判断方法,正是其决定是否弹窗,判断条件中Build.VERSION.MIN_SUPPORTED_TARGET_SDK_INT,如下:

public static final int MIN_SUPPORTED_TARGET_SDK_INT = SystemProperties.getInt( "ro.build.version.min_supported_target_sdk", 0);

此属性默认值,一般是17。也就是说:Android P机以上机型上,当应用的targetSdk版本低于17时,应用启动时会弹窗“此应用专为旧版Android打造,因此可能无法正常运行。请尝试检查更新或与开发者联系”。

懂安卓编程或者正在学的同学可以分析一下,反正我是看不懂的(菜)。。。

原理搞懂了,现在来看解决方法

这里需要提到AndroidManifest.xml 里 targetSdkVersion版本:原文及相关释义引用自大佬文章,自行查看:https://blog.csdn.net/qq_23062979/article/details/81294550总结:

targetSdkVersion保证的是api的一致性。所以一般minSdkVersion



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3