深井冰_01
深井冰_01
  • 发布:2015-12-25 21:00
  • 更新:2019-02-14 20:05
  • 阅读:41805

发行包体积优化指南

分类:HBuilder

为什么要减小发行包体积

熟悉App推广的同学都知道,包体积大小对App推广效果有很大的影响。一般而言,App体积越小,同样的推广手段可以达到的效果就越好。
我们与部分开发商沟通后发现,他们的包里存在大量优化空间,优化后平均包体积减少了一半!
所以优化包体积是非常值得好好做的事情。
此外,如果你的包里优化好,使用云打包也能会快一倍。。。

减小发行包体积的方法。

HBuilder里的发行包包含原生安装包和流应用两种类型。
优化包体积的有效的方式包括:
去除无效文件、去除不使用的原生模块、压缩图片、压缩js和css、优化代码。

一、在manifest.json中去除不必要的模块与SDK

此调整仅影响打包的app,不影响流应用体积。
5+Runtime对App及其集成的SDK编译实现了模块化管理,只有选择了需要的模块或SDK,发行为原生安装包时才会将对应的代码编译到最终App中。因此优化原生安装包体积时,一定要确认manifest.json中不包含未使用的模块和SDK
检查manifest.json中是否包含未使用的模块
打开manifest.json可视化视图,选择模块权限配置,检查已选模块中是否存在未使用到的模块


检查manifest.json中是否包含未使用的SDK
打开manifest.json可视化视图,选择SDK配置,检查已选模块中是否存在未使用到的模块

二、压缩图片

未优化的图片体积往往惊人,不仅包大,并且占用很高的内存。
当然图片优化是一种平衡,不应影响视觉体验。
常规图片压缩方案很多,这里再强调下应用图标(icon)及启动界面(splash)的图片优化。
发行为原生安装包时,请尽量不要使用过于复杂的应用图标和启动界面,配置这些信息前,使用图片压缩工具对图片进行压缩。
在Android apk包里需要包含数张分辨率的splash图,会极大增大包体积,可以使用.9.png,一张图解决多个分辨率的适配。

三、使用压缩后的js文件和css文件

框架js、css等较大的js、css文件尽量在提交时使用压缩文件。如mui框架使用mui.min.js和mui.min.css。
在uni-app里,发布时js、css会自动压缩,无需考虑。

四、去除不需要的文件

如果App开发时间越长,里面的废文件越多。有的废文件是忘记删除了、有的是不确认哪里还用过,不敢删。
HBuilder提供了工具帮你优化,包括页面引用关系管理工具、废文件清理工具、UNpackage配置。(注意HBuilderX无此功能)
在HBuilder的manifest里有页面引用关系来描述从入口页面起,相关页面引用资源的关系。你可以通过如下方式生成页面引用关系
1.扫描代码生成页面引用关系
打开manifest.json可视化界面,选择页面引用关系选项卡。点击页面顶部"扫描代码"链接,HBuilder即从入口界面开始扫描和计算页面使用的资源。注意:由于js写法过于灵活,自动扫描结果并非100%准确,需开发者人工确认。如下图

  1. 使用Android设备(或模拟器)真机运行自动生成页面引用关系(推荐
    打开manifest.json可视化界面,选择页面引用关系选项卡。插入Android设备(或打开Android模拟器)后,点击页面引用关系顶部的"使用Android设备或模拟器真机运行(推荐)"链接,在弹出的菜单中选择一个设备进行真机联调,确保每个页面和功能均点到后,HBuilder即可获取最正确的页面引用关系
  2. 手动调整
    打开manifest.json可视化界面,选择页面引用关系选项卡。选择左侧相关文件,手动维护该页面使用资源及可打开下级页面
    如何使用页面引用关系减小包体积
    1.打开manifest.json可视化界面,选择页面引用关系选项卡。选择左侧一个文件后,在右侧的其他资源列表中,带“?”角标的文件即为检测到的未被使用的资源,请人工确认该结果是否正确。如下图
  3. 发行为原生安装包时,如果HBuilder检测到目前项目含有未被使用的资源,会提示用户是否在打包时不提交这些资源。如下图

    点击上图链接打开如下界面

    勾选相关文件,点击“加入unpackage清单”按钮后,打包时将不再提交这些资源。
    关于unpackage的详情说明,可以参考http://ask.dcloud.net.cn/article/480
    3.发行为流应用时,如果HBuilder检测到目前项目含有疑似废文件,会提示用户是否在打包时不提交这些资源。如下图

    后续操作同步骤2
    通常,为达到秒开和流畅的使用体验,流应用对包的体积和首页使用资源有严格要求。发行流应用界面将显示流应用包体积(提交测试后才可以计算出)和首页大小如下图

    请特别留意,发行为流应用时尽量控制包大小在1M以内,首页资源在150k以内。

五、不会打包的目录

工程下.开头的目录,比如svn、git目录,以及unpackage目录,是不会被打包的。可以把一些不打包的、暂时又不想删的文件挪到unpackage目录里。
也可以不挪目录,在manifest的源码视图里配置unpackage节点,参阅如何配置unpackage的文件

3 关注 分享
木子喵 心然 Trust

要回复文章请先登录注册

DCloud_heavensoft

DCloud_heavensoft

回复 z***@qq.com :
http://ask.dcloud.net.cn/article/480 参考这里,在manifest的源码视图里把配到unpackage节点下的文件挪出来
2019-02-14 20:05
z***@qq.com

z***@qq.com

配置以后,项目白屏,怎么恢复
2019-02-14 19:14
3***@qq.com

3***@qq.com

文档不完整,有点乱,这个基本常用的配置,还需要找来找去的才查到;既要好技术,还要重视开发者的体验,一个好文档抵得过百万广告!
2018-12-19 22:35
My_Tags

My_Tags

扯蛋了,manifest.json配置文件页面引用全乱了,很多页面都没法链接了
2018-04-03 15:54
3***@qq.com

3***@qq.com

配置发现我的项目全乱了,怎么恢复啊
2018-03-02 17:02
深井冰_01

深井冰_01 (作者)

回复 木乃森 :
没懂
2016-01-21 19:51
木乃森

木乃森

很多文件是JS 引用的,结果被过滤了。不要检测发行优化。现在manifest.json整个项目体系都乱了。
2016-01-21 14:24
深井冰_01

深井冰_01 (作者)

.开头的文件或文件夹是自动过滤的,无需配置
2016-01-12 23:37
bugyak

bugyak

你好,请问如何忽略整个.git目录呢?
2016-01-12 00:25