为了账号安全,请及时绑定邮箱和手机立即绑定

关于Android插件化的细枝末节

标签:
Android

最近一直在做插件化相关的工作。现在最常见的方案就是来自阿里的 Atlas 和 360 的 DroidPlugin 了。按照我的理解,对于当前的大多数应用来讲,可能 Atlas 会更适合一些,因为它允许插件与宿主之间,甚至是插件之间可以有互动;而 DroidPlugin 的思想会更先进,可想象空间更大一些,理论上它可以启动任何一个第三方应用,比如虚拟化,可参照物就是 LBE 的平行空间。Atlas 并没有开源,DroidPlugin 已开源,我们现在采用的方案是基于 Atlas 的,有兴趣的可以看看 ACDD ,核心思想都是一样。

不管是插件化,还是热补丁,现在的方案都比较多,相应方案在 GitHub 上也都能找得到 demo ,Google 一下,也有不少文章,然而停留在 demo 和文章介绍阶段,始终与实际的生产开发有较大的距离,尤其是大部分文章还只是纸上谈兵,写文章的十之七八恐怕都没有真正的在自己的应用里实践过,而插件化最困难的部分就是实践过程中遇到各种细节和适配问题,还有对当前开发模式的影响也是怎么都绕不过去的问题。下面我大致列一下我们在实践过程中遇到的一些问题。

  1. 插件怎么去引用宿主里的类?

  2. 插件怎么去引用宿主的资源?

  3. 插件化要给每个插件进行资源分段,该如何进行资源分段?

  4. 为了让业务的同学更容易接受,怎么处理宿主的类和资源?

  5. 在引用宿主的资源的时候,默认可用的 context 在插件化里是否依然可用?

  6. 不同的资源类型,引用和处理方式是否相同?

  7. 插件之间共用的一些类,是放在宿主里,还是在插件里开放出接口,该怎么样去考量?

  8. 插件如何去开放接口,让其他插件引用?

  9. 插件开放出了接口,其他插件又该怎样去引用?

  10. 不同的插件都要引用同一个类和同一个资源,类和资源重复了该怎么办?

  11. 加载各个插件时,怎么样知道各个插件的信息?

  12. 插件版本该如何去管理?

  13. 怎样实现 debug 和 release 开发的宿主和插件打包?

  14. 应用启动时要加载那么多插件,怎么加速第一次启动?

  15. 插件引用的宿主的类和资源发生改变,难道每次都要去每个插件里手动修改吗?

  16. 四大组件的免注册是怎么回事?

  17. 四大组件免注册了,是否还需要合并每个插件的 AndroidManifest ?

  18. 在不允许手动拷贝的情况下,如何合并各个插件的 AndroidManifest ?

  19. 宿主的方法数超过 65535 了,该怎么办?

  20. 混淆问题怎么去处理?

  21. 适配,还是适配。

实际操作中,因为对开发的影响是不可避免的,多亏了有 gradle ,通过定制 gradle 脚本,插件,甚至是 SDK 组件,很多事情我们可以做到自动化,当然,凡事有利就有弊,在这个过程中,会发现相当多的正常开发遇不到的 gradle 的『bug』,因此,假如 gradle 玩不转,会有很多麻烦。目前大致能想到的就这么多,以后有想到了再补充吧。

原文链接:http://www.apkbus.com/blog-705730-61698.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消