bet356体育在线

发现好久没更新博客了

  split apks是Android 5.0开始提供多apk构建机制,借助split apks可以将一个apk基于ABI和屏幕密度两个维度拆分城多个apk,这样可以有效减少apk体积。当用户下载应用程序安装包时,只会包含对应平台的so和资源。因为需要google play支持,所以国内就没戏了。针对不同cpu架构问题,国内应用开发商大部分都会将so文件只放在armabi目录下,如此做虽然可以有效减少包体积,但可能带来性能问题。

  安装应用程序时,首先安装base apk,然后安装split apks。为了解splite apks运作原理,我们还是结合源码做简要分析。因为splite apks是Android 5.0开始支持,所以我们以5.0版本开始分析。

  针对split apks的不足,Google今年在其I/O大会上推出AAB,AAB提供动态安装apk功能,这样可以进一步减少apk体积,首先来看张图。

  Dynamic feature APKs: 这些apks包括代码和资源,当app首次安装时,它们不会被安装,在用户需要使用该feature功能时才会被加载。

  在创建dynamic_feature时,有两个选项是默认勾选的,当然我们也可以更改其状态。

  Enable on-demand: 是否支持按需下载模式。如果不支持,那么该feature则在安装app时被安装。

  在示例中,有四个feature,通过module名很清楚这些feature是举例介绍如何访问代码、资源、so等。

  如上图,当选择Build Bundle(s)时,在主工程build目录下回生成bundle.aab文件,该文件是压缩格式文件,因此将其解压分析。

  从aab文件内容,可知其包含base和feature的代码、资源、so等,同时还有BundleConfig.pb这一配置文件,该配置文件是google play用于拆分apk。如果我们需要在google play上支持动态发布,只需要上传aab文件即可,后续工作交给google play完成。

  另外需要注意的是,如果app运行在4.4及以下设备,则用户下载的将是完成的apk文件,不支持任何split apks特性。

  上图是AAB文档提供的一张关于aab文件结构图,蓝色方框区域就是configuration apks支持的配置项。

  关于Play Core Library具体如何使用,大家看下文档,本文主要讲解一些原理性知识点。

  主工程模块app,首先分析MainActivity.kt文件。该类是用kotlin编写,如果没有接触过不要紧,大体上还是能看懂。

  因为Play Core Library非对外暴露接口都是混淆过的,因此就不直接附源码分析。但通过追踪分析源码可知,获取已安装模块的核心过程是:

  在示例中,每当我们需要启动dynamic feature模块时,都要判断该模块是否安装。如果没有安装,则启动下载,Play Core Library提供了比较完善的下载状态回调,比如下载进度,下载失败原因等等。

  通过粗略分析这些混淆源码可知,下载与安装on-demand模块均是通过ipc交由google play完成。

  Android App Bundles的出现,相当是官方提供的一套动态化框架,所有的on-demand模块也会被google play审核,这对用户来说是非常有利的。

  最后,欢迎大家加入我们的知识星球,这期是到2019年3月10日结束,所以越早加入越好,现在加入的球友快1000人了,到1000人时将大幅提价(还有最后几十个名额了),所以快上车!

  1.简介   新的应用发布格式AndroidAppBundle是一种更有效的方式来构建和发布您的应用。AndroidAppBundle让您可以更轻松地以更小的应用程序大小提供出色的体验,从而支持当今各...博文来自:听海的博客

  热文导读 点击标题阅读金九银十跳槽季如何进阶找到合适满意的工作?要么干,要么辞职,千万别混“我在公司待了6年,清退我却只花了6分钟”作者:Dotry链接:ht......博文来自:Java和Android架构

  GooglePlay商店中的大型应用程序和游戏的下载率普遍较低,这是因为用户担心会使用设备上过多的存储空间,耗尽他们的数据流量,而且在网速缓慢的时候进行下载会等待更长时间。AndroidAppBund...博文来自:weixin_33728268的博客

  AndroidAppBundle是Google最新推出的Apk动态打包,动态组件化的技术,通过一个.aab结尾的bundle文件组装一个apk来为你的设备安装。 通俗理解就是,Appbudle就是把A...博文来自:的博客

  预备知识了解android基本开发 了解android四大组件基本原理 了解ClassLoader相关知识看完本文可以达到什么程度了解插件化常见的实现原理阅读前准备工作cloneCommonTec项目...博文来自:cpongo8

  对于Android用户来说,出现恶意软件似乎是一件很常见的事情,Google也一直在用各种措施和他们进行斗争。最新的恶意软件FalseGuide又被发现以软件广告的形式感染了数百万Android用户。...博文来自:weixin_34416649的博客

  【流程篇】:第一步:创建Google账户(即通俗意义上的Gmai),Google账户链接地址:博文来自:维斯特洛(Westeros)大陆

  VirtualAPK插件框架简单使用如感觉排版看着不舒服,可移步【APP插件化/组件化框架分析】。最近一段时间在研究插件化和组件化实现方案,今天也算整理一下笔记记录一下,记得之前讲述过一篇关于组件化的...博文来自:初来乍到

  携程AndroidApp的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验。本文将详细介绍Android平台插件式开发和动态加载技术的原理和实现...博文来自:weixin_34409703的博客

  1.  现实状况1.             随着公司的发展,app应用会越来越多,这对推广和集成都非常不利。(支付宝、qq游戏)2.             程序功能升级方面,往往会因为一个模块的增...博文来自:技术积累_分享

  题记写这篇关于Replugin插件化框架的分析,旨在引导读者去快速的了解RePlugin的大概实现原理,文中会抛出需要了解的知识点,并明确的指出大致的流程,指引你去更快速的理解它,避免走过多弯路。因为...博文来自:hesong的专栏

  如有转载,请声明出处:时之沙: (来自时之沙的csdn博客)概述:       随着应用的不断迭代。应用的体积不断增大,项目越来越臃肿,...博文来自:weixin_33978044的博客

  AndroidAppBundles是Android推出的一种新的App开发,编译和发布机制。本文会根据官网的介绍,结合自己的一些理解,来阐述AndroidAppBundles的相关概念和开发流程。...博文来自:ccpat的专栏

  问题来源使用WebView加载url时,在6.0以下使用android自带原生WebView时无法满足现有的需求,部分js加载失败,导致页面无法显示。百度到两种解决方式:腾讯TBScrosswalkT...博文来自:singleton

  ClassLoader介绍: 上一篇文章我们分析了DynamicLoadApk的实现原理,它采用的是一种代理机制,用Prox...博文来自:林哥的博客

  1.什么是插件化开发首先我们先来看看通过插件化开发后的APP是什么样的效果。这里就用最典型的插件化APP360手机卫士来演示。可以看到,打开应用后在切换到工具箱中有很多功能,我的工具中先是有8个自带的...博文来自:Fu

  Goolge官方的Android框架源码见:GitHub工程;毋庸置疑,官方给出的框架示例应该是最标准也最具有普适性的。本文根据工程中的示例,画出了各个框架的架构图,以方便快速学习和了解。1。常见的M...博文来自:chwnpp2的专栏

  原文地址:如今移动app市场已经是百花齐放,其中有不乏有很多大型公司、巨型公司都是通过ap...博文来自:一航jason

  翻开csdn,浏览了一下文章列表,发现好久没更新博客了。忽然觉得自己最近又TM邪恶了。。大家可以想一个问题:假设我们App首页有个Icon,用来根据不同的节日播放不同主题的音乐,例如:圣诞节,需要把I...博文来自:Songlcy

  DynamicLoadApk应该算是Android插件化诸多框架中资历比较老的一个了。它的项目地址在:dynamic-load-apk。该项目运行之后的效果是,使用Gradle编译出插件包和宿主包,都...博文来自:WngShhng 的博客

  github地址:使用文档:一.新建宿主工程(和普通工程一样)...博文来自:疯狂D乌牛的博客

  来看看现有插件化框架的对比。目录:MulitDex引起的问题 插件化需要解决的问题与方案 插件化实现方案分析对比1.MulitDex引起的问题在应用安装到手机上的时候dex文件的安装是复杂的,有可能会...博文来自:u014294681的博客

分享: