Android动态加载学习笔记(一)
2024-10-14 18:20:11
前言
上周五DPAndroid小分队就第二阶段分享内容进行了讨论,结果形成了三个主题:性能优化、动态加载、内核远离。我选择的是第二项——动态加载。在目前的Android开发中,这一部分知识还是比较流行的,很大一部分原因是65k方法数的限制。国内各大IT公司的app开发者或多或少都遇到过这个老大难问题,并且各辟蹊径,公布了各自的应对方法。选这个议题,第一在于有价值(大型IT公司的Android开发一定会不可避免地在这个问题上纠结过,小型公司/开发者也许不在意,较高的门槛剔除了很多初级的无用信息);第二在于可执行(正是由于这一问题的广泛性与不可避免性,众人八仙过海各显神通,形成多种解决方案,方便参考与学习);第三在于可量化(最终一定会产出一个Demo,最好的结果是直接应用到DPApp上,为诸多开发兄弟提供便利)。
目标
- 掌握Android编译、加载的基本原理;
- 关键技术点在于Dex拆分,编译/运行时资源文件的定位与加载;
- 具体到执行,要分析两到三个优秀的开源动态加载项目(携程、360);
- 产出一个Demo
原理简述
这个议题下,主要是四个知识点:1.Dex拆分;2.热修复;3.动态加载;4.增量更新。其中,Dex拆分是基础,动态加载基于Dex拆分进行,热修复提供了无需在市场中更新apk来修复bug的技术,是最后一根救命稻草,增量更新减少了更新时需要下载的数据量,也可以优化用户体验。
资料汇总
携程 DymamicAPK
奇虎360 DroidPlugin
微信
QQ空间
美团
手机淘宝
天猫技术
大点评 by屠大师
其它一些资料
- 知乎:怎么将 Android 程序做成插件化的形式?
- Android架构思考:没有完美的架构,只有合适的架构
- 利用DexClassLoader实现Android插件化,从而支持动态加载
- 优酷视频: Android插件化及动态部署—ATLAS
- Android应用开发编译框架流程与IDE及Gradle概要
- https://github.com/bunnyblue/ACDD
- https://github.com/dodola/HotFix
最新文章
- Texstudio中文乱码问题
- 第 25 章 CSS3 过渡效果
- backbone模型层浅析
- mysql management note
- 《Java数据结构与算法》笔记-CH4-5不带计数字段的循环队列
- 通过java发送http请求
- JVM参数配置大全
- MVVM架构~knockoutjs系列之表单添加(验证)与列表操作源码开放
- hdu 5311 Hidden String(find,substr)
- 第17章 使用PHP和MySQL实现身份验证
- bug工具
- C#调用TSC条码打印机打印条码
- 了解 Spring Boot AutoConfiguration
- Spring Boot实战之数据库操作
- Entity Framework入门教程(10)---离线场景保存和删除实体/实体图集
- 这篇文章主要介绍了Citrix XenServer 6.1 安装图解教程
- java操作redis集群配置[可配置密码]和工具类(比较好用)
- linux 测试网络url命令
- 转的,具体 https://www.cnblogs.com/icyJ/p/FreeShare.html
- 基于SSH框架的在线考勤系统开发的质量属性
热门文章
- 获取url的html值
- 周末发现一个BUG,时有时无,一出程序就崩溃,郁闷了好久,终于跟出来来了,记之,提醒自己今后一定规范编写,只要规范,绝对不会出问题
- Java 第十周学习总结
- 细说php一些常见的知识点
- ajax 选项卡
- TableView分割线从顶端开始
- Ftp类
- websphere性能调优之dump命令
- js的一点
- Could not load type from string value 'DALMSSQL.DBSessionFactory,DALMSSQL'.