android 模块化开发
在偏外包的公司做APK开发,很多时候,一个版本的代码复制来复制去,资源文件等复制过程中会很混乱。所以就提出,能不能模块化,通过module的方式进行模块化开发。
使用module的原因,代码可修改性强,又可以根据需求,进行模块集成。
module模块化开发很简单,前提是拥有扎实的Android开发技术。
首先,提出两个概念。以菜单为模型,进行说明。我们把一个菜单分成诺干个1级菜单,那么这诺干个1级菜单就是同级别的逻辑,这些1级菜单,我习惯叫横向逻辑,或者并行逻辑。如果这个菜单,1级-->2级-->3级,我习惯称之为纵向,或者串行逻辑。
由此,根据这一概念,对业务逻辑进行划分。Android除基础主界面外,其他界面,基本都是由一个按钮或其他控件,进行点击,逐层进入,也就是上述的纵向逻辑。由此可见,可以把自己的app分成很多的纵向逻辑,那么,每一个纵向逻辑都可以做成一个单独的module。
以上就把APP的业务进行了分割,并模块化。执行代码的时候,用APP引用众多module就可以实现集成。module的模式与集成相似。可以把module看成一个父类,而引用他的module看成子类。顾,数据传递时,要注意关系,父类是无法使用子类方法的。如需要,可以尝试provide,或者AIDL,或者receiver。
模块开发中遇到的情况:
BaseModule父类的重要性。Android stdio中,如果掌握不好jar包,会造成jar重复的错误。(这里有个问题,楼主也没有想明白。但实践了。多个module同时引用同一个jar包,会有jar冲突的错误。但是多个module同时引用lib缺不会有问题。)如果多个module都需要引用同一JAR,可以把jar包放在BaseModule中,使其他module引用BaseModule来实现调用jar。
module引用方向
module的引用,基本上可以随便引用,唯一不可能循环引用,例:A-->B,B-->A,此时就会报错。所以,分割module时,注意业务不能循环。而对于代码而言,无论是intent的传值跳转,还是onResult都是可以使用的,并不会因为模块化影响这些语法。
弊端,因为每个module都会有一个gradle,所以Android studio跑起来很慢,可以升级gradle和studio版本,争取快一点。另一点,做版本控制的时候,一定要注意忽略事件。楼主有一次就忘记了,整整3G的文件,git都不让传。。。。OOM了!
附加忽略文章:http://www.jianshu.com/p/c5bd723c2b3c