Android架构思考:没有完美的架构,只有合适的架构

app发展到一定规模,就面临方法数超过65535的问题,前路怎么走,是像美团或者微信那样拆分成多个dex还是像淘宝,携程那样拆成多个bundle,怎么向前走?

没有完美的架构,只有合适的架构。但是类似电商业务的app还是比较适合做多bundle方案,因为一个app中包含很多业务,而且业务都在快速迭代,除了核心链路,业务之间没有直接联系,这些业务都是由各个小团队负责,拆分成多bundle以后,加快了编译速度和启动速度,还可以做懒加载,按需加载,动态部署,做多bundle方案需要团队对app启动过程,Activity如何加载,Resource资源加载,DexClassloader,OSGI等有详细的了解,而且还需要对打包工具定制,需要详细了解Android app打包流畅。这方面目前目前有两个方案:

1.携程最近开源的:https://github.com/CtripMobile/DynamicAPK 实现简单,不负责,代码数量也不多,还包括了打包工具。

2.另外一个类似手淘Atlas架构的:https://github.com/bunnyblue/ACDD,比携程的复杂,功能更强,支持so库,Proxy等。

腾讯系的App都是采用多dex方案,没有在那边上班过,不知道原因,但是对比手淘的更新频率和微信的更新频率,也能理解为什么他们采用了多dex方案。多dex方案在实践中也是需要去了解上述多bundle方案的一些Android底层技术,Google有一个官方的多dex支持方案,但是在具体实施过程中会碰到一些问题,可以参考美团和微信的方案,他们在这方面有较多的实践:

美团:http://tech.meituan.com/mt-android-auto-split-dex.html

微信:http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207151651&idx=1&sn=9eab282711f4eb2b4daf2fbae5a5ca9a&3rd=MzA3MDU4NTYzMw==&scene=6#rd

QQ空间终端团队还有一个针对多dex方案的热补丁技术:http://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731290eef12ad0d17f39d4a&scene=0#wechat_redirect

多dex热补丁项目:https://github.com/dodola/HotFix

时间: 2024-12-13 21:20:43

Android架构思考:没有完美的架构,只有合适的架构的相关文章

2020Android又凉了?来看看Android的发展-谈一下当下最合适的架构

前言 前前后后经历过大项目.小项目,跨平台,小程序,Nodejs服务等等,目前在做的Rom开发,定制各种手机中的奇葩需求,从应用层到Framework层,再到C++层,再到驱动,最终到Linux,研究过java虚拟机,虽然没研究过ART或者老牌的Dalvik虚拟机,但原理都差不多,并不影响我对android有一个全局的认识,今天我们的主题是架构,其实对架构的理解一定要宏观一点,大到手机操作系统架构,小到代码逻辑设计的架构,一句老话讲的好,也代表了我对架构的整体理解:没有最好的架构,只有最合适的架

小钢的架构思考:架构设计

原创文章,转载请注明:转载自Keegan小钢并标明原文链接:http://keeganlee.me/post/architecture/20160621微信订阅号:keeganlee_me写于2016-06-21 小钢的架构思考:什么是架构小钢的架构思考:架构规划小钢的架构思考:架构设计 最近一个多月因为忙于工作上的项目重构,所以文章一直没能更新.现在,重构终于暂时告一段落,于是,赶紧抽时间把文章写完更新发布.下面进入正文. 当架构规划的结果,整理出一堆不同优先级的需求,尤其是质量需求之后,接下

Re:从0开始的微服务架构:(一)重识微服务架构--转

原文地址:http://www.infoq.com/cn/articles/micro-service-architecture-from-zero?utm_source=infoq&utm_medium=popular_widget&utm_campaign=popular_content_list&utm_content=homepage 导语 虽然已经红了很久,但是“微服务架构”正变得越来越重要,也将继续火下去. 各个公司与技术人员都在分享微服务架构的相关知识与实践经验,但我

从0开始的微服务架构:(一)重识微服务架构

导语 虽然已经红了很久,但是"微服务架构"正变得越来越重要,也将继续火下去. 各个公司与技术人员都在分享微服务架构的相关知识与实践经验,但我们发现,目前网上的这些相关文章中,要么上来就是很有借鉴意义的干货,要么就是以高端的专业术语来讲述何为微服务架构.就是没有一个做到成熟地将技术传播出来,同时完美地照顾"初入微服务领域人员",从0开始,采用通俗易懂的语言去讲解微服务架构的系列. 所以,我们邀请青柳云的苏槐与InfoQ一起共建微服务架构专题"Re:从0开始的

读《大型网站技术架构-核心原理与技术分析》有感之一 架构师领导艺术

总有一些书,让你一看就停不下来,看完之后热血沸腾,激动不已,犹如醍醐灌顶,如饮甘霖. 有些事,自己领悟三五年,不如别人三五句话点得通透. 本来,开篇应该是介绍技术的,但是我决定将技术的放在后面讲,开篇先讲领导艺术.就算你是架构师,事情做的再漂亮,然而失去人心,那么最终的结果也是失败的. 架构师职责简介: 架构师是软件开发组织中一个比较特殊的角色,除了架构设计,软件开发等技术类工作,通常还需要承担一些管理职能:规划产品路线.估算人力资源和时间资源.安排人员职责分工.确定计划里程碑点.指导工程师工作

王概凯-架构漫谈之你理清技术、业务和架构之间的关系了吗

本文是漫谈架构专栏的第九篇,作者 Kevin 以钻木取火为切入点,深入介绍了技术.业务和架构之间的关系.正如作者所说,技术总是在人类解决对业务的要求不断提高的情况下产生,目的也是为了获取更大更好的利益. 某天和朋友吃饭正好聊到这个话题.作为架构师或者做技术的人,在开发软件时, 我们基本上就是在扮演上帝的角色:我们不但要创建出一个个的程序,还要让这些程序能够脱离我们在硬件上独立运行,以便为这个程序所服务的群体提供服务.当这个程序出现问题甚至 bug 的时候,我们还得扮演牧师的角色去修复这些问题.这

《大型网站技术架构》读书笔记三:大型网站核心架构要素

一.性能—响应时间决定用户 (1)浏览器端: ①浏览器缓存: ②使用页面压缩: PS:Gzip压缩效率非常高,通常可以达到70%的压缩率,也就是说,如果你的网页有30K,压缩之后就变成了9K左右.想要启用Gzip压缩,提高浏览速度,可以浏览这篇文章:http://www.chinaz.com/web/2012/1017/278682.shtml ③合理布局页面: CSS:把样式表置于顶部:避免使用CSS表达式(expression_r):使用外部JavaScript和CSS:削减JavaScri

Android设备标识-没有完美的解决方案-只有取舍

本文链接    http://blog.csdn.net/xiaodongrush/article/details/28864845 1.  几种常用的设备标识码 IMEI,Sim卡序列号,Wifi模块Mac地址,Android_ID TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); String imei = telephonyMana

第五部分 架构篇 第十四章 MongoDB Replica Sets 架构(自动故障转移/读写分离实践)

说明:该篇内容部分来自红丸编写的MongoDB实战文章. 1.简介 MongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余,多机器中同一时刻只有一台是用于写操作,正是由于这个情况,为了MongoDB提供了数据一致性的保障,担当primary角色的服务能把读操作分发给Slave(详情请看前两篇关于Replica Set成员组成和理解). MongoDB高可用分为两种: Master-Slave主从复制:只需要在某一个服务启动时加上-master参数,而另外一个服务加上-slave与-so