Android 插件化内功修炼

本文总结了理解Android插件化技术所需的关键知识点,包括App打包流程、安装流程、Activity生命周期管理及Dex加载机制等内容,有助于深入理解插件化框架的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在将APP项目插件化时,遇到bug容易一头雾水。其实要想理解插件化技术,首先需要了解Android系统的底层实现。下面是我自己总结学习插件化的知识点。弄懂以下几点,应该对网上各种插件化的框架原理明白个7788了。ps.(Android插件化发展历史,这里有一份插件框架的发展历史小结,感兴趣可以看一下)


第一点:App打包的流程。一次打包操作中途到底经历了什么?资源打包、dex生成、签名等每一步都如何执行?具体过程可以参考Android项目构建流程


第二点:App的安装流程。安装App的这段代码在什么地方?App下载到本地之后,放到哪个目录下?然后会生成哪些文件?如何下载一个增量包?从本地具体哪个位置取出这个包?包的具体命名规则是什么?等等等。。。理解安装过程有助于理解插件化的框架流程和热修复的原理。


第三点:Activity注册和生命周期问题。 系统启动Activity,是如何实例化并控制其生命周期的?了解这点是为了弄明白插件框架如何控制Activity的生命周期做铺垫。


第四点是其它讲解Android插件化文章最常提到的,也是插件化框架的重点。


第四点:Dex如何加载和资源冲突解决。插件框架如何把Dex中的类加载到内存?我们需要了解各种Classloader。资源加载冲突怎么解决?这个问题有好几种解决方案。一种是是重写Context的getAsset、getResource之类的方法,偷换概念,让插件读取插件里的资源,但缺点就是宿主和插件的资源id会冲突,需要重写AAPT。另一种是重写AMS中保存的插件列表,从而让宿主和插件分别去加载各自的资源而不会冲突。第三种方法,就是打包后,执行一个脚本,修改生成包中资源id。Small框架就是用的第三种解决办法。


以上就是弄懂插件框架需要的内功修炼,其实安卓插件化从2012年崭露头角,到2015年爆发到现在技术已经趋近成熟,各大公司的项目代码需要插件化的应该早已搭建好自己的框架。工作中也许只需要学会使用公司框架,维护自己模块的代码即可。不过如果对插件化更深层的技术感兴趣,可以按照本文提到的四点,逐一学习,会对理解插件化原理有很大帮助。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值