不适配targetSdkVersion的坑你了解吗?

2020-07-02 22:24:45 浏览数 (2)

前言

Android测试同学,不可避免的都接触过targetSdkVersion升级相关的测试,今天小编结合之前的经历聊一聊测试过程遇到的关于targetSdkVersion的坑。

问题现象和排查

小编参与测试的项目有一个产品线是由SDK和awp内核组成,为第三方提供优化移动端的web应用体验的解决方案。

近期,接入合作方的开发反馈了一个很诡异的问题:他们正在开发新版本出现web页面加载后显示空白的问题。而这在其他接入方使用一年多时间都没有反馈过上述问题。

故,我们开始探案模式:整个过程采用典型的排除法来定位问题

STEP-01: 排查是否网站原因

和接入方沟通出现问题的机型和系统(AndroidQ)以及出现问题的链接,自行编译demo,但是并没有成功的复现问题。(排除由于网站原因导致白屏的可能)

STEP-02: 尝试寻找稳定复现路径

在出现问题机型上安装接入方提供的安装包,发现可以稳定复现网页白屏的问题。(说明该开发版本存在问题)

STEP-03: 排查awp代码改动的影响

使用接入方提供的安装包,替换加载早期版本的内核,惊奇的发现也是可以复现网页白屏的问题。(排除近期产品代码和功能的变更优化,引入上述问题)

STEP-04: 排查接入方代码改动的影响

使用接入方线上的安装包,分别加载早期和最新版本的内核,结果发现问题无法复现。(这个一度使我们陷入困境,怀疑是接入方自身代码错误而引入的问题)

STEP-05: 确认接入方代码改动对awp的影响

和接入方开发沟通,排查前后版本有哪些重大改动。(确认哪些改动,是否影响到awp的接入功能,最后发现该开发版本计划升级targetSdkVersion到api29)

STEP-06: demo尝试模拟出现问题场景

修改demo代码,更改targetSDKVersion为29,发现在Android Q手机上可以复现问题。

STEP-07: 确认导致问题的复现原因

基于上面的排查步骤,可以初步定位是由于接入方将targetSDKVersion升级29导致Android Q机型上独有的问题。之前一年没有反馈上述问题的原因是基本业界内主流应用targetSdkVersion大部分都没有升级到29,所以提前没有暴露上述问题。

STEP-08: 定位问题的深层原因

这个部分,测试同学在排查阶段不需要介入太多。由开发持续定位深层原因和修复问题。

问题原因

针对问题的后续的定位和排查,我们发现导致问题的原因是由于接入方升级targetSDKVersion为29,诱发了潜藏的共享内存问题,导致网页显示白屏。后续有机会可以针对共享内存问题总结分享一次。

Android Q共享内存特性详细参考:https://developer.android.com/about/versions/10/behavior-changes-10

隐患思考

细思下,这有个更隐患的问题。这个问题是在接入方开发过程提出发现的,如果到接入方测试后期才发现呢?或者由于未适配API29的机型呢?对于用户,这无疑将是一个重大伤害。

那我们在过程中的哪个环节存在问题呢:没有关注Android新版本的特性吗?没有关注共享内存对于逻辑细节的影响吗?

答案是否定的,这个是我们学习、总结、沉淀和提升的过程,但是并不是解决这个问题的核心方法。核心在于如何尽早发现上述问题。

问题解决与启示

解决这个问题的核心在于第一时间进行targetSdkVersion适配。

因为是为第三方提供服务的产品形态,所以和单一APP测试存在的区别是:在单一APP测试中,适配测试主要涉及分辨率适配,厂商机型适配,系统版本适配,ROM 适配,CPU架构适配和Android系统运行环境适配。但是单一APP特定版本targetSdkVersion是恒定的,不需要适配targetSDKVersion。

而作为第三方服务提供者,接入方targetSDKVersion版本并不统一,虽然接入方也不会第一时间升级到最新版本的targetSDKVersion。但是第一时间完成最新版本targetSDKVersion的适配,可以提前发现潜藏的问题,以便为接入方提供更好的服务。

结语

工作中需要学会尽可能避免踩坑,但实际上不可能做到完全杜绝。真正重要的是杜绝踩相同的坑,工作过程遇到的问题都是成长的宝藏:

0 人点赞