前言: 从个人经历来说的话,从事APP开发这么多年来,所接触的APP的体积变得越来越大,业务的也变得越来越复杂,总来来说只有一句话:这是一个APP臃肿的时代!所以为了告别APP臃肿的时代,让我们进入一个U盘时代,每个业务模块都是一个具备独立运行的U盘,插在哪里都可以完美运行,这就是推进业务组件化的初衷也是一个美好的愿景. 业务组件化相关文章地址: Android业务组件化之现状分析与探讨 Android业务组件化之URL Scheme使用 Android业务组件化之子模块SubModule的拆分…
前言: 前面分析了APP的现状以及业务组件化的一些探讨(Android业务组件化之现状分析与探讨),以及通信的桥梁Scheme的使用(Android业务组件化之URL Scheme使用),今天重点来聊下子模块SubModule的拆分以及它们之间的路由Router实现.本篇涉及的相关知识比较多,阅读本篇之间需要大致了解一下Java的注解(Java学习之注解Annotation实现原理).Java的动态代理机制(Java设计模式之代理模式(Proxy))等.业务组件化是一个循序渐进的过程,一开始很难…
前言: 最近公司业务发展迅速,单一的项目工程不再适合公司发展需要,所以开始推进公司APP业务组件化,很荣幸自己能够牵头做这件事,经过研究实现组件化的通信方案通过URL Scheme,所以想着现在还是在预研阶段,很有必要先了解一下URL Scheme,看看是如何使用的?其实在之前做Hybrid混合编程的时候就接触过URL Scheme,总来的来说还不算陌生,今天就来回顾总结一下.业务组件化相关博客地址(Android业务组件化之现状分析与探讨) 业务组件化相关文章地址: Android业务组件化之…
前言: 公司的业务组件化推进的已经差不多三四个月的时间了,各个业务组件之间的解耦工作已经基本完成,各个业务组件以module的形式存在项目中,然后项目依赖本地的module,多少有点不太利于项目的并行开发维护了,本质原因就是如果是依赖本地的,必须要将依赖的module和主工程放在一个project里面,这就导致了每个project都需要配置这些依赖关系,如果是公司内多个工程依赖同一个公司内部的业务组件,业务组件有更新时,同步非常麻烦,但公司内部的业务组件不可能部署到公有maven服务器上,所以有…
前言: 最近公司业务发展迅速,单一的项目工程不再适合公司发展需要,所以开始推进公司APP业务组件化,很荣幸自己能够牵头做这件事,经过研究实现组件化的通信方案通过URL Scheme,所以想着现在还是在预研阶段,很有必要先了解一下URL Scheme,看看是如何使用的?其实在之前做Hybrid混合编程的时候就接触过URL Scheme,总来的来说还不算陌生,今天就来回顾总结一下.业务组件化相关博客地址(Android业务组件化之现状分析与探讨) 业务组件化相关文章地址: Android业务组件化之…
组件化并不是新话题,其实很早很早以前我们开始为项目解耦的时候就讨论过的.但那时候我们说的是功能组件化.比如很多公司都常见的,网络请求模块.登录注册模块单独拿出来,交给一个团队开发,而在用的时候只需要接入对应模块的功能就可以了. 百牛信息技术bainiu.ltd整理发布于博客园 今天我们来讨论一下业务组件化,拿出手机,打开淘宝或者大众点评来看看,里面的美食电影酒店外卖就是一个一个的业务.如果我们在一个项目里面去写的时候,总会出现或多或少的代码耦合,最典型的有时为了赶上线时间而先复制粘贴一段类似的代…
前言: 从个人经历来说的话,从事APP开发这么多年来,所接触的APP的体积变得越来越大,业务的也变得越来越复杂,总来来说只有一句话:这是一个APP臃肿的时代!所以为了告别APP臃肿的时代,让我们进入一个U盘时代,每个业务模块都是一个具备独立运行的盘,插在哪里都可以完美运行,这就是推进业务组件的初衷也是一个美好的愿景. 需求背景: 随着公司的快速发展,版本不断的迭代,业务变得也越来越复杂,业务模块的数量有可能还会继续增加,而且每个模块的代码也会越来越多,这样下去势必影响开发效率,增加项目的维护成本…
今年6月份开始,我开始负责对"得到app"的android代码进行组件化拆分,在动手之前我查阅了很多组件化或者模块化的文章,虽然有一些收获,但是很少有文章能够给出一个整体且有效的方案,大部分文章都只停留在组件单独调试的层面上,涉及组件之间的交互就很少了,更不用说组件生命周期.集成调试和代码边界这些最棘手的问题了.有感于此,我觉得很有必要设计一套完整的组件化方案,经过几周的思考,反复的推倒重建,终于形成了一个完整的思路,整理在我的第一篇文章中Android彻底组件化方案实践.这两个月以来…
Android随着业务的增多,而且后续新的需求的增加,代码的修改会变得非常频繁 然后最近在看组件化和模块化 公司的业务没有那么大,所以这种方式我并没有采取 但是还是需要了解下他的使用机制 还有优缺点之类的 虽然自己对组件化和模块化的差异也并不怎么清楚 相同点:组件化和模块化都是为了解决大化小的问题 都是为了解耦和重用 不同点:组件化侧重于业务解耦 模块化侧重于重用 模块化 模块化提倡用一个个能单独运行的module去实现每一个功能,然后在发布的时候再将其合在一起 组件化 组件就是将一个个功能拆分…
cp : https://www.csdn.net/article/2011-02-11/291667 摘要:超过一年以上.活跃开发的项目往往到后期陷入了一些共性的问题: 构建速度慢,往往生成一次最终输出产物需要一小时以上: 架构复杂:虽然说架构本身可以用类似于MVC/Service Bus之类的通用 超过一年以上.活跃开发的项目往往到后期陷入了一些共性的问题: 构建速度慢,往往生成一次最终输出产物需要一小时以上: 架构复杂:虽然说架构本身可以用类似于MVC/Service Bus之类的通用进行…
1.概述 最近越来越不想写代码了,特别是一些重复性的代码,比如由于每次启动一个 Activity,我们都会很习惯的在 Activity 中写下: public static void launch(Activity activity) { Intent intent = new Intent(); intent.setClass(activity, xxxActivity.class); activity.startActivity(); } 已经有两年Android开发经验的我掐指一算,好像有…
附:Android组件化和插件化开发 App组件化与业务拆分那些事 Android项目架构之业务组件化 Android组件化核心之路由实现 Android组件化开发实践…
问题 在已经开发过几个项目的童鞋,如果这时需要重新开发一个新项目,是否需要自己重新搭建框架呢,还是从老项目中拷贝粘贴? 我们是否可以封装一个底层的lib库,这个底层的公共基础库 包括了一些第三方库(如: okhttp, retrofit2, glide 等)的初始化及简单的封装和一些公共的base类.这样我们重新开发一个新项目只要依赖这个库就马上可以进行业务逻辑的开发了. 什么是组件化 组件化简单概括就是把一个功能完整的 App 或模块拆分成多个子模块, 每个子模块可以独立编译和运行, 也可以任…
Android组件化项目地址:Android组件化项目AndroidModulePattern Android组件化之终极方案地址:http://blog.csdn.net/guiying712/article/details/78057120 1为什么要项目组件化 2如何组件化 3组件化实施流程 1组件模式和集成模式的转换 2组件之间AndroidManifest合并问题 3全局Context的获取及组件数据初始化 4library依赖问题 5组件之间调用和通信 6组件之间资源名冲突 4组件化…
Android应用组件化各个组件页面之间要实现跳转使用路由是一个很好的选择.本文将实现一个比较轻量级的路由组件,主要涉及以下知识: Annotation (声明路由目标信息) AnnotationProcessor (处理注解) JavaPoet (生成Java文件) UriMatcher (匹配Uri) 本文将使用Java注解来实现一个简单的路由组件,主要从这几方面来讲解: 注解定义与使用 注解跳转服务 使用AnnotationProcessor处理注解.生成文件 Uri的匹配 安全参数 注解…
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 组件化 得到 DDComponent JIMU 模块 插件 MD 目录 目录DDComponent 组件化介绍浅谈Android组件化什么是组件化为什么要"彻底组件化"?组件化过程中要注意的问题iOS 和 Android 的组件化有何区别?组件化后的具体成果Android彻底组件…
一.背景 随着项目逐渐扩展,业务功能越来越多,代码量越来越多,开发人员数量也越来越多.此过程中,你是否有过以下烦恼? 项目模块多且复杂,编译一次要5分钟甚至10分钟?太慢不能忍? 改了一行代码 或只调了一点UI,就要run整个项目,再忍受一次10分钟? 合代码经常发生冲突?很烦? 被人偷偷改了自己模块的代码?很不爽? 做一个需求,发现还要去改动很多别人模块的代码? 别的模块已实现的类似功能,自己要用只能去复制一份代码再改改? "这个不是我负责的,我不管",代码责任范围不明确? 只做了一…
前言 什么是组件化? 最初的目的是代码重用,功能相对单一或者独立.在整个系统的代码层次上位于最底层,被其他代码所依赖,所以说组件化是纵向分层. 为什么要使用组件化? 当我们的项目越做越大的时候,有时间就很难去维护,有时候让我们去改点东西,根本实现不了,与其让我们修修改改,还不如自己重新去写代码. 其实无论是大项目也好,或者是中小型项目也好,如果去使用组件化进行开发,那会使你很难割舍,因为它能在你开发中带来很多的便利,包括一些功能解耦和和一些功能的复用. 组件化的好处 组件,既可以作为librar…
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化. 下面是最近在行业内几个大神的博客辩论对战,具体资料如下: 2016.03.10 蘑菇街App的组件化之路 2016.03.13 iOS应用架构谈 组件化方案 2016.03.14 蘑菇街App的组件化之路·续 2016.03.…
上一篇<企业 SOA 设计(1)–ESB 设计>中,写到我们的 SOA 设计分为两个层面来进行:一个是系统间的 SOA 设计,主要通过 ESB 来完成:另一方面则是单个应用系统内部的 SOA 设计,本篇将会就后者进行详细说明. 平台整体结构 在产品开发过程中,为了达到业务级别的较大粒度重用,我们需要把纵向把业务进行拆分,以业务组件的形式进行开发,并最终把多个开发完成的业务组件进行组合,形成最终的软件产品. 按照组件化开发的产品,是基于一个公共的产品开发平台来建立的.由平台来提供所有的底层设施.…
一.大神博客研读 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好的让拆分出去的业务工程能够独立运行,必须进行组件拆分并且实现组件服务化. 下面是最近在行业内几个大神的博客辩论对战,具体资料如下: 2016.03.10 蘑菇街App的组件化之路 2016.03.13 iOS应用架构谈 组件化方案 2016.03.14 蘑菇街App的组件化之路·续…
原文 前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高.为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构.更换适合业务的架构,是为了后期能更好的维护项目. 但是用户依旧不满意,继续对开发人员提出了更多更高的要求,不仅需要高质量的用户体验,还要求快速迭代,最好一天出一个新功能,而且用户还要求不更新就能体验到新功能.为了满足用户需求,于是开发人员就用H5,ReactNative,Weex等技术对已有的项目进行改造.项…
在目前移动互联网时代,每个 APP 就是流量入口,与过去 PC Web 浏览器时代不同的是,APP 的体验与迭代速度影响着用户的粘性,这同时也对从事移动开发人员提出更高要求,进而移动端框架也层出不穷. 上图显示的是传统的服务端架构和客户端 App 架构对比.传统的服务端架构中最底下是一个 OS,一般是 Linux,最上面服务端的业务,而中间有非常多的层次可以在架构上,按照我们的意愿搭建中间的各个层次的衔接环节,使得架构具有足够的灵活性和扩展性.但是到了 App 就会面对一个完全不同的现状,App…
Android组件化项目地址:Android组件化项目AndroidModulePattern Fragment或View如何支持组件化 如何管理组件 Fragment或View如何支持组件化 距离 Android组件化方案 发布已经半年有余,虽说这个方案已经能够解决一些项目的需求,但是依然不够完美.很多开发者也在博客和GitHub中留言甚至发邮件问我,Fragment怎么办? 目前市面上APP的风格还是类似于微信界面的比较多,好几个Fragment摆在主界面中,然后点击NavigationBa…
如今移动app市场已经是百花齐放,其中有不乏有很多大型公司.巨型公司都是通过app创业发展起来的:app类型更加丰富,有电子商务.有视频.有社交.有工具等等,基本上涵盖了各行各业每个角落,为了更加具有竞争力app不仅功能上有创性,内容也更加多元化,更加饱满,所以出现了巨大的工程.这些工程代码不停添加如果没有一个好的架构所有代码将会强耦合在一起,功能直接也会有很多依赖,那么就会出现很多问题:例如: 1.修改功能困难,牵一发动全身.很多地方如果api写的不好,封装不优雅,那么就会出现改一个地方需要改…
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 CC:Component Caller,一个android组件化开发框架, 已开源,github地址:https://github.com/luckybilly/CC 本文主要讲解框架实现原理,如果只是想了解一下如何使用,可直接到github上查看README文档. 想了解如何用CC实现立即开始组件化开发,并渐进式地改造自己的项目,戳这里 前言 首先说明一下,本文将讲述的组件化与业内的插件化(如:Atlas, RePlugin…
前言 组件化和插件化已经提出了很久了,到现在也是比较稳定的一种架构方案了,在三年前,组件化和插件提出来没多久,前公司就已经在项目中使用了,只是当时还只是菜鸟,没有资格参与到架构的建设中,只是在大佬搭好的架构中写一些业务代码.当时的做法基本上也和现在网上流行的大多数使用的方案是一致的. 最近花了半个月的时间自己从0到一的设计了一个完全组件化的架构的demo,当然里面有些使用的技术可能不是最合适的,但是我觉得对于要开始实现组价化或者学习组件多多少少都会有一些参考的价值.在搭建架构的前期,也参考了很多…
http://www.cnblogs.com/android-blogs/p/5703355.html 什么是组件化和插件化? 组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件合并统一成一个apk,这就是组件化开发.插件化开发和组件化开发略有不用,插件化开发时将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模块都是一个apk(组件化的每个模块是个lib),最终…
Android Small插件化框架源码分析 目录 概述 Small如何使用 插件加载流程 待改进的地方 一.概述 Small是一个写得非常简洁的插件化框架,工程源码位置:https://github.com/wequick/Small 插件化的方案,说到底要解决的核心问题只有三个: 1.1 插件类的加载 这个问题的解决和其它插件化框架的解决方法差不多.Android的类是由DexClassLoader加载的,通过反射可以将插件包动态加载进去.Small的gradle插件生成的是.so包,在初始…
Android 组件化/模块化之路——在展示层搭建MVP结构 什么是MVP Model–View–Presenter (MVP) 源于 Model–View–Controller (MVC) 的结构设计模式,它是用于展示层(Presentation)的结构. MVP 中的 Presenter 是 “中间人”角色,它的功能是在 Model–View–Presenter 三者中起到连接和协作的作用.程序中的大部分的逻辑都应该在 Presenter 中实现. Model 定义了数据的访问接口.例如之前…