Android  App  Bundle

(google play 商店发布应用的话,可自行深入了解下,这里不做介绍)

http://mp.weixin.qq.com/s?__biz=MzAwODY4OTk2Mg==&mid=2652047353&idx=1&sn=c17ce6762ef7beeb42024fcb08552d3d&chksm=808ca7bcb7fb2eaae30a72a2f7bfb5a9c741e79ba9624a4b897a7b4d7aa22ee720294bf7a6c8&mpshare=1&scene=23&srcid=0105Thyn3mqxe89JHD3wNSrf#rd

作为开发者,

希望确保用户尽可能活动最佳体验,并确保自己的应用尽可能在所有设备上运行。

希望尽可能多的用户安装自己的应用。

希望他们持续使用自己的应用。

不希望用户因为自己无法控制的原因卸载自己的应用。

难以忽视的“大”问题:

   应用的体积越来越大。

自2012年以来,应用体积平均增长了5倍。

原因:

  • 开发者希望为应用添加炫酷功能和新内容,以确保用户留存/回归并保持业务增长。
  • 设备性能越来越好,希望把一些闪亮的新功能利用起来。
  • 设备生态系统更加多样化,开发者为了能让自己的项目,在大屏幕和小屏幕上、不同种类的CPU上流畅运行,进行复制应用中的代码和资源等。

Google Play 上的应用大小与其安装转化率呈负相关关系。这意味着随着应用变大,其安装率会下降。

原因:

  • 许多用户的设备上没有足够的可用空间。
  • 用户可能在使用存储空间一般的入门级设备。
  • 即使拥有高端是河北的用户而言,他们的照片、视频和其他媒体文件的品质也在逐渐提升,从而占据了越来越大的空间,设备上的可用空间正在逐渐紧缩。
  • 用户也不希望一边用着昂贵的流量套餐,一边等待大型应用去慢慢连接网络。

较大体积应用的安装率会下降,应用大小是推动卸载的主要动力。

  当尝试安装应用时,手机发出警告,需要卸载部分不经常使用的应用,释放空间来安装新应用?用户通常会卸载体积最大的应用和游戏。

  

  针对上述问题,开发者能采用的解决方案很有限。

    可以在单个版本中为每个设备配置构建多个APK。但当想要针对不同屏幕尺寸和CPU架构进行优化,同时针对32位和64位时,情况就会失控---最终可能为每个版本构建数百个APK。 大多数开发者不会这样子做。

  许多人只是将所有内容都放在一个“胖胖的”APK中,最终导致用户设备上存在这大量未使用过的内容。

  而且,即使使用多重APK,也无法针对语言进行优化。即使用户只需要一种或两种语言,您也必须在每个APK中包含针对每个设备的所有翻译字符串,这样会浪费更多空间。

  总结上述问题:开发者的困境显而易见了:

  增加应用的体积,但可能导致较低的转换率和较高的卸载风险;

  使用多重APK,会降低版本迭代效率并导致疲惫不堪,还可能花费大量的时间权衡不同的功能之间的取舍,以避免增加应用体积。

  

 使用 Android  App  Bundle  的开发者的APK大小平均比之前采用的“完整APK”小 3.5%

  (“完整APK”是指一个APK包含了Android App Bundle 支持的所有设备配置和语言所需的一切)。

    Android App  Bundle 的另一个重要创新是模块化设计。意味着可以向应用添加模块,包含能够按需加载其他应用功能。

  应用变大的一个重要原因:功能的增长。

  现可以无需在安装时增加应用的大小,添加更多功能。

  使用动态功能也是在Android 上动态加载代码的安全做法,因为动态功能模块的扫描和检查方式与Google Play Protect扫描和检查应用本身的方式相同。

  

适用动态功能进行编码的功能:

  • 安装时不需要的大型功能:可以按需加载这些功能,或者告诉Google Play 推迟安装它们,即在后台安装它们。可以通过这种方式加载高达100MB的功能。在发布时,不属于核心应用体验范畴的高级功能或附加组件很适合这样处理,例如:付费高级功能、个性化选项、AR功能等。
  • 针对特定受众群体的功能 :并不是每个受众群体添加的功能,可以将其作为动态功能进行创建。例如:商业应用可以隔离动态功能模块中的销售功能,只有购买功能在安装时才会分发给每个用户。 需要销售功能的小部分用户群体(销售人员)可以在需要时下载和访问这个功能。     一些开发者还在探索动态功能,避免为仅仅是略有不同的用户群体提供为数过多的不同应用变体。
  • 很少使用的功能:例如:应用包含一次性身份验证或信用卡扫描功能,那么能根据用户需要加载此功能,并在使用后立即将其卸载,就可以有效避免增加应用体积。还可以避免占用应用生命周期内未使用的空间。

Android App Bundle  通过动态功能实现应用的高度配置化,还支持免安装应用(Instant Apps)。

Android App Bundle的介绍

限制

  • 仅限于通过 Google Play 发布的应用,(Google进一步巩固自身生态)
  • 需要加入到 Google 的 beta program enroll your app in app signing by Google Play in the Play Console
  • 最低支持版本Android 5.0 (API level 21)
  • 低于Android 5.0 (API level 21) 的版本GooglePlay会优化Size,但不支持动态交付。

成本

  • 需要升级到Android Studio 3.2修改工程以便支持App Bundle格式
  • 集成Play Core Library

作者:修塔寻千里
链接:https://www.jianshu.com/p/3754d4e7f4e5
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  

学习Android App Bundle的使用:需要在Google Play 应用商店提交应用。注册Google开发者账号:25美元。
https://www.jianshu.com/p/e40e78a279b7

Android App Bundle != APK
Android App Bundle 与 APK 有一些相似之处,但它们是截然不同的,且用于不同的目的。

  • APP Bundle(应用束)纯粹是为了上传设计的文件,用户无法直接安装和使用它。它是一个zip文件,Google Play 从中生成优化的APK并将其提供给设备进行安装。
  • 应用束包含用于帮助工具生成 APK 的元数据文件 (这些元数据文件最终不会出现在 APK 中),此外还拥有严格的验证标准。

从 APK 切换到应用束是一个无缝过程。如果您使用 Android Studio 3.2 及更高版本,那么您只需点击几下即可生成已签名的应用束,将其上传到 Play Store,即可让用户开始享受更小尺寸 APK 所带来的便利。由于您的代码库没有重大变化,因此您无需担心会有什么问题发生。Android App Bundle 的早期采用者已经发现,动态交付显著减小了他们的应用体积。一些开发者甚至可以将他们的 APK 大小减半

--------------------- 
作者:ltym2014 
来源:CSDN 
原文:https://blog.csdn.net/ltym2014/article/details/83154361 
版权声明:本文为博主原创文章,转载请附上博文链接!

Android 查阅博客1_app优化_1大小的更多相关文章

  1. Android 查阅博客2_APT

    https://mp.weixin.qq.com/s/3zrAzOUGpovRRbuYnce3uw APT(Annotation Processing Tool) 即注解处理器,是一种注解处理工具,用 ...

  2. 记录android开发博客

    1.一国外android开发博客,值得关注 https://blog.stylingandroid.com/page/2/ 2.一个app设计博客,很赞 http://androidniceties. ...

  3. 【新版】Android技术博客精华汇总

    [新版]Android技术博客精华汇总(原文链接内持续更新) http://www.apkbus.com/thread-313856-1-1.html Kotlin Kotlin学习资料汇总 http ...

  4. Hexo博客主题优化

    Hexo博客主题优化 添加背景图 在 themes/*/source/css/_custom/custom.styl 中添加如下代码: body{ background:url(/images/bg. ...

  5. 最近忙科研立项 & 对博客的优化

    最近一直在忙科研立项.... 立项书 & 答辩 ... 接下来,将对博客进行优化... (1) 依据书来学习的[需要大量截图],将用微软的 OneNote 写笔记,然后打包成pdf,上传到我的 ...

  6. 值得订阅的Android 开发者博客

    链接:http://www.zhihu.com/question/19788650/answer/60771437来源:知乎 Google 官方[Android Developers Blog](An ...

  7. android fragment 博客 学习记录

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和 ...

  8. 【转】android fragment 博客 学习

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37970961 自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fra ...

  9. Android相关 博客收藏

    #1 Android 网络编程 参考博客 :http://blog.csdn.net/kieven2008/article/details/8210737 #2 Could not find com. ...

随机推荐

  1. java基础(7)集合与泛型

    第一部分:Collection集合 1 collection集合概述 集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map. C ...

  2. TX锁处理

    实际处理后,在测试环境中模拟还原TX锁,及处理. 本篇博客目录: 1.TX锁模拟实际环境 2.登陆数据库,查询相关信息 3.确认锁源头,kill进程释放资源 一.TX锁模拟 sess_1 SQL> ...

  3. 【leetcode】441. Arranging Coins

    problem 441. Arranging Coins solution1: class Solution { public: int arrangeCoins(int n) { ; ; while ...

  4. jquery绑定回车事件

    //回车事件绑定 $(".left-content").keyup(function(event){ var theEvent = event || window.event; v ...

  5. python 不同进程间通信

    from multiprocessing import Process,Queue import os def f (qq): qq.put([42,None,'hello']) #将列表传入队列qq ...

  6. hibernate---级联保存、级联删除

    直接上菜: dept.hbm.xml:关键点标蓝色这部分,inverse表示放弃维护外键关系,cascade就不用说了 <hibernate-mapping package="com. ...

  7. SQLServer调WebService & 错误解决:请求格式无法识别

    (sqlServer 2008 + VS2010) 首先,对服务器进行配置. sp_configure ; GO RECONFIGURE; GO sp_configure ; GO RECONFIGU ...

  8. c++11 function_typetraits备忘

    function traits. 获取函数或成员函数的返回类型,参数类型,参数长度,类类型. 函数参数列表推断基于typelist:http://www.cnblogs.com/flytrace/p/ ...

  9. Lepus监控之Oracle配置

    1.安装cx_Oracle a.官网下载客户端组件包 oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpmoracle-instantclien ...

  10. day44前端开发1之html基础

    web前端开发1一.前端三剑客之html 1.为标记语言,是非编程语言 2.自身不具备逻辑,遇到负责重复操作只能全部手写(Ctrl+C > V) 3.组成:标签, 指令, 实体 标签:由< ...