一、背景和现状

安装包的重要性无需多提,针对安装包质量控制越来越严格和规范,包括证书、文件大小、安装成功率等,APP的证书及混淆是影响APP的安装成功率及代码安全性的很大因素,随着功能迭代,安装包也会随之增大,那么用户下载和app激活转化率就会越低,同时在提交及发布渠道时的错误率也会提升,所以成熟的app会不定期进行安装包瘦身实践,通过对于代码、资源文件等梳理将安装包大小控制在一个合理的值。(比如有app,iOS安装包大小控制在55M,Android安装包大小控制在28M等)。

目前组内针对这一块已经形成了APP的安装包的常规检测,并将其加入到整个研发流程中,参与人员会包含产品、设计、开发和测试同学。

、安装包质量目标确立

1、包大小控制

2、资源重复及大小文件检测及新增控制

3、重复、废弃及无用代码检测

4、基本项检查

三、检测技术及度量指标

1、 针对APK的总体大小

1.1 获取方式:

针对IOS端:开发者证书、企业证书和发布证书打出来的包可能大小不同,并且debug和release也会影响包大小,从第一版本开始,建议选择发布证书+release版本作为被测包。

安卓端:不存在IOS端的证书问题,建议选择release版本打出的包作为被测包

1.2 控制方式:

研发工作开始之前,研发负责人给出APP的预估大小值

(1)开发人员在需求评审完成就给出本版本安装包大小的预估值,产品和测试人员会针对研发负责人给出的预估值和实际值作出比较,并针对实际值与预估值有较大差距的情况,由开发人员给出问题原因。

(2)在整体研发过程中,设计人员给出的UI设计图根据需要优先做一次无损压缩,之后研发人员可根据项目情况,再做一次无损压缩,两次压缩之后能够降低一定量的资源文件的大小。目前安卓端一般会采用.9图片,能够有效减少图片等资源文件的大小。

2、针对资源文件的检测——避免过大和重复

重复文件的检测方式:首先根据文件头判断文件类型,确认文件类型是资源文件的,会通过大小和md5值进行资源文件是否重复的判断,之后将重复文件的列表输出,并且输出重复文件的占用大小。

对重复文件及大小的约定规则如下:

(1)重复文件的总占用大小超过0.1M时会发出告警;

(2)重复文件的项数不能有增加,历史重复需要在接下来的版本中进行不断删减。

(3)针对资源文件的大小的监控,需要与设计同学一起确定指标,将资源文件分成大中小三种级别,当出现大文件时,需要给出预警。

3、针对引入的第三方sdk的功能判断——避免sdk本身功能模块与非sdk有重复

在开发过程中需要对引入的第三方sdk的功能接口熟悉,并且需要了解sdk及非sdk模块是否存在功能的重复实现情况,是则需要在APP的非sdk的代码中做删除。

4、对代码的检查及优化:

(1)包括对重复功能的代码的检查:有可能在历史版本迭代积累的过程中,在整个研发过程中导致出现多份重复功能的代码,或者相似功能代码

(2)对废弃功能的代码检查:这里可以和测试及产品同学一起,确认版本功能以及case走查,以此来达到对历史代码的清理。 建议检查方式:可以通过代码覆盖率的方式,在执行case的过程中统计代码覆盖率,对未覆盖到的代码进行分析及进一步的处理。

5、对证书、log以及混淆的校验:

(1)针对打包的证书的校验:安卓端可通过证书的md5值进行验证;

(2)混淆可通过smali工具进行解压后生成的代码,优先对资源文件做校验,之后可以获取LaunchActivity的代码,对代码做规则判定以验证是否混淆;

(3)log的验证有些apk是通过一个文件记录开关,则可解压文件读取内容得到开关即可,若不满足此要求,则可通过自动运行app获取日志信息做校验。

6、持续优化:

以上几个指标需要加入到研发管理流程中,坚持N个版本下来,一定能够有比较好的效果。

安装包检查结果输出模板可见下方:

安装包常规检查

检查项

结果数据

大小 / 与上一版本对比

23.45MB/20.34MB

包名

com.xx.xx

名称

xx网

证书一致性

版本

7.3.0

内部版本号

160

min SDK

18

log是否关闭

是否混淆

重复文件大小

80.27KB

重复文件项数

53项

重复文件具体列表

File1

File2

res\drawable-xxhdpi-v4\xx.png

res\drawable-xxhdpi-v4\yy.png

res\raw\m_1.jpg

res\raw\m_2.jpg

res\drawable-xxhdpi-v4\a.png

res\drawable-xxhdpi-v4\b.png

res\drawable-hdpi-v4\bg.9.png

res\drawable-xhdpi-v4\normal.9.png

assets\gif\xiaolv\png\5.png

assets\gif\xiaolv\png\icon.png

专项测试——移动app安装包检测的更多相关文章

  1. Android App安装包瘦身计划

    Android App安装包瘦身计划 Android App安装包体积优化: 理由, 指标和可以采用的方法. 本文内容归纳如下图: 为什么要安装包瘦身 安装包需要瘦身吗? 不需要吗? 安装包要瘦身的主 ...

  2. IIS放置的APP安装包在浏览器无法打开

    无法打开的提示   操作步骤 1.将APP安装包放置到指定的文件夹中. 2.在IIS中MIME中添加MIME类型 扩展名:.apk MIME类型:application/vnd.android.pac ...

  3. 【Android端APP 安装包检查】安装包检查具体内容及实现方法

    一.安装包检查的具体包含内容有哪些? 1.安装包检查的一般内容包括: 安装包基本信息检查: 文件大小: xx MB 包名: com.xx 名称:  xx 本次安装包证书与外网证书对比一致性:是 版本号 ...

  4. 如何缩减手游app安装包的大小?

    包体过大对手游的影响更是诟病已久,有具体数据证明,游戏包体越大,在游戏运营推广过程中游戏用户的转化率就越低:反之,游戏包体越小,游戏用户的下载转化率就越高(如下图),所有的手机app.游戏在大版本更新 ...

  5. 手机app安装包apk/ipa放到网上无法下载原因及教程

    做好APP后,APP名为app.apk或app.ipa 上传到根目录后,生成二维码 但还是无法下载,哪按以下教程让服务器apache/iis/nginx支持.apk/ipa文件下载 windows i ...

  6. 6.移动端App安装包的测试用例

    安装 安装手册是否规范,是否简洁,是否通俗易懂. 安装手册是否齐全,正确,有改动时,文档是否同步更新 直接复制安装程序到电脑上,能否正常安装 按安装手册给出的步骤进行安装,安装是否正确 查看在安装过程 ...

  7. app测试之专项测试

    专项测试包含很多东西,安装.升级.卸载.性能.安全.网络.随机等等,这些都属于专项测试 一个app的正常到用户手里使用,功能是最基础的测试,专项测试测试主要的. 下面介绍一些常用的专项测试: 1.多任 ...

  8. 如何提取cocos iOS应用程序APP与游戏安装包里的资源与文件

    平时玩手机,看到iOS app中许多不错的图片素材的时候,有木有很心动,是不是想把其中的图片资源导出来使用,即可以练手,又可以提高自己的审美观0-0,增加app的颜值.当然,请不要作为商业用途.开发软 ...

  9. 关于提高webview里下载apk安装包成功率的研究

    移动互联网发展到当下,各种领域出现了一些大的app平台,这些app共同的特点就是拥有大量忠实活跃用户, 要知道,有用户就有money啊~ 于是乎其他不太知名的平台,开始在他们上面疯狂投放广告,做活动推 ...

随机推荐

  1. 机器学习进阶-直方图与傅里叶变换-图像直方图 1.cv2.calc(生成图像的像素频数分布(直方图))

    1. cv2.calc([img], [0], mask, [256], [0, 256])  # 用于生成图像的频数直方图 参数说明: [img]表示输入的图片, [0]表示第几个通道, mask表 ...

  2. APP-2-Hbuilder开发环境搭建

    1.Hbuilder下载 http://www.dcloud.io/hbuilderx.html 2.夜神模拟器下载 https://www.yeshen.com/ 3.chrome浏览器下载 htt ...

  3. ABAP-邮件发送

    *&---------------------------------------------------------------------* *& Report ZRICO_TES ...

  4. CSS 的 ID 和 Class 有什么区别,如何正确使用它们。

    css只用class来写并有专门的class通用和私有模块命名, id具有唯一性且优先级太高只作为js操作dom的挂钩全部不添加样式, 如果使用jq或zepto的话,操作的class类名一般也不加样式 ...

  5. Nginx反向代理时tomcat日志获取真实IP

    对于nginx+tomcat这种架构,如果后端tomcat配置保持默认,那么tomcat的访问日志里,记录的就是前端nginx的IP地址,而不是真实的访问IP.因此,需要对nginx.tomcat做如 ...

  6. 解决linux下访问https站点问题

    pfx转jks:(注:因jks要求密码长度不能小于6位,所以申请pfx证书时,密码长度最好不小于6位) keytool -importkeystore -v -srckeystore ***.pfx ...

  7. oc字符串与c字符串转换和拷贝

    // Helper method to create C string copy NSString* MakeNSString (const char* string) { if (string) { ...

  8. [PHP]Nginx与PHP的文件上传大小限制

    ---------------------------------------------------------------------------------------------------- ...

  9. platform 系统是windows还是liunx

    import platform # 判断当前代码运行的系统是windows还是liunx print(platform.architecture()) print(platform.platform( ...

  10. hive 排序 分组计数后排序 几种不同函数的效果

    [转至:http://blackproof.iteye.com/blog/2164260] 总结: 三个分析函数都是按照col1分组内从1开始排序 (假设4个数,第2和第3个数据相同)    row_ ...