插件化库VirtualAPK详解

本文详细介绍了Android插件化技术,重点讲解了VirtualAPK的接入步骤、插件开发注意事项以及使用过程中可能遇到的问题。VirtualAPK是一个成熟的插件化框架,适用于动态加载和组件化开发,它允许在运行时加载和执行插件APK的代码和资源,以实现灵活的更新和扩展功能。
摘要由CSDN通过智能技术生成

前篇文章《Android组件化和插件化开发》主要介绍了Android组件化和插件化的架构特点、两者的对比分析以及推荐了学习组件化的相关文章,本编主要介绍下目前插件化开源库的使用情况,以及着重介绍下VirtualAPK库,供大家参考。

插件化的技术背景

插件化主要就是利用动态加载技术

通过服务器配置一些参数,Android APP获取这些参数再做出相应的逻辑,这是常有的事,比如现在大部分APP都有一个启动页面,如果到了一些重要的节日,APP的服务器会配置一些与时节相关的图片,APP启动时候再把原有的启动图换成这些新的图片,这样就能提高用户的体验了。

再则,早期个人开发者在安卓市场上发布应用的时候,如果应用里包含有广告,那么有可能会审核不通过,那么就通过在服务器配置一个开关,审核应用的时候先把开关关闭,这样应用就不会显示广告了;安卓市场审核通过后,再把服务器的广告开关给打开,以这样的手段规避市场的审核。所以现在安卓市场开始扫描APK里面的Manifest甚至dex文件,查看开发者的APK包里是否有广告的代码,如果有就有可能审核不通过。通过服务器怕配置开关参数的方法行不通了,开发者们开始想,“既然这样,能不能先不要在APK写广告的代码,在用户运行APP的时候,再从服务器下载广告的代码运行,再实现广告呢?”。答案是肯定的,这就是动态加载。

在程序运行的时候,加载一些程序自身原本不存在的可执行文件并运行这些文件里的代码逻辑。

看起来就像是应用从服务器下载了一些代码,然后再执行这些代码!

使用动态加载技术,一般来说会使得Android开发工作变得更加复杂,这种开发方式不是官方推荐的,不是目前主流的Android开发方式,Github 和 StackOverflow 上面外国的开发者也对此不是很感兴趣,外国相关的教程更是少得可怜,目前只有在大天朝才有比较深入的研究和应用,特别是一些SDK组件项目和 BAT家族的项目上,Github上的相关开源项目基本是国人在维护。

动态加载的大致过程就是

  • 把可执行文件(.so/dex/jar/apk)拷贝到应用APP内部存储;
  • 加载可执行文件;
  • 调用具体的方法执行业务逻辑;

几个主流插件化开源框架的对比

特性 DynamicLoadApk DynamicAPK Small DroidPlugin VirtualAPK
支持四大组件 只支持Activity 只支持Activity 只支持Activity 全支持 全支持
组件无需在宿主 manifest中预注册 ×
插件依赖宿主 ×
支持PendingIntent × × ×
Android特性支持 大部分 大部分 大部分 几乎全部 几乎全部
兼容性适配 一般 一般 中等
插件构建 部署aapt Gradle插件 Gradle插件

阿里的atlas:Atlas 是伴随着手机淘宝不断发展而衍生出来的一个运行于 Android 系统上的插件化框架,也可以叫动态组件化框架,主要提供了解耦化、组件化、动态性的支持。是目前比较成熟的方案&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值