加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

爱奇艺开源 Qigsaw,基于 Android App Bundle 的动态化框架

发布时间:2019-07-05 15:13:08 所属栏目:业界 来源:佚名
导读:近日爱奇艺宣布开源基于Android App Bundle的动态化框架Qigsaw。以下是其官方在演讲中对项目的介绍。 我们于2019年6月26号正式开源Qigsaw。 Qigsaw是爱奇艺自主研发的动态化框架,其核心优势如下: 利用Android App Bundle开发套件,极速开发体验。 支持An

在2018年上半年,我们就进行动态组件化方案的调研。起初方案是基于Instant App方案实现,当整体功能基本实现后,Google于2018年Google IO大会上推出Android App Bundle。在调研Android App Bundle之后,我们发现Android App Bundle完全符合最初的需求。

依据我们最初设计初衷和Android App Bundle特点,总结出Qigsaw应满足以下核心特点。

  1. 利用Android App Bundle开发套件,体验原生极速开发体验。
  2. 少量私有Api访问,保证框架稳定性。
  3. 如果您的应用有出海需求,可无缝切换至Android App Bundle方案。

关于私有Api访问应该是大家比较关心的,最近一段时间某大厂开源了号称零反射插件化框架,但是通过阅读其源码,我们发现它还是做了PathClassLoader的parent ClassLoader反射替换。另外它也调用了Resources构造方法创建Resources实例,虽然这样做并没有任何私有Api访问,但是通过查看Resources构造方法源码,我们可知该方法属于过时方法,且注释写明第三方应用不应该创建Resources实例。

  1. /** 
  2.   * Create a new Resources object on top of an existing set of assets in an 
  3.   * AssetManager. 
  4.   * 
  5.   * @deprecated Resources should not be constructed by apps. 
  6.   * See {@link android.content.Context#createConfigurationContext(Configuration)}. 
  7.   * 
  8.   * @param assets Previously created AssetManager. 
  9.   * @param metrics Current display metrics to consider when 
  10.   *                selecting/computing resource values. 
  11.   * @param config Desired device configuration to consider when 
  12.   *               selecting/computing resource values (optional). 
  13.   */ 
  14.  @Deprecated 
  15.  public Resources(AssetManager assets, DisplayMetrics metrics, Configuration config) { 
  16.      this(null); 
  17.      mResourcesImpl = new ResourcesImpl(assets, metrics, config, new DisplayAdjustments()); 
  18.  } 

所以插件化框架不应该仅仅以是否零反射为目标,我们应该从开发流程及产品形态选取合适方案,助力开发效率。

Qigsaw开发体验

在开发阶段,开发者使用Android App Bundle原生开发套件即可开发调试Split APKs。

爱奇艺开源 Qigsaw,基于 Android App Bundle 的动态化框架

Android App Bundle为dynamic feature提供全新插件com.android.dynamic-feature,它的编译产物是.apk文件。当您的项目编译完成后,Android Studio通过命令adb install-multiple命令将base apk和split apks安装至您的手机。如果您的开发手机系统版本低于5.0,则会依据当前手机设备组装成一个完整apk文件安装至该手机。

vivo手机不支持split APKs功能,因此在开发过程中请选取其他手机。或者使用Qigsaw打包插件提供的qigsawAssemble${variantName}命令

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读