美文网首页
安卓模块化开发浅谈

安卓模块化开发浅谈

作者: 奋斗小青年Jerome | 来源:发表于2017-10-18 14:43 被阅读48次
模块化开发适合于大型项目中多人协同开发,每个人独立开发某个模块,单独测试,单独维护,最终以library或者aar或者module的形式被应用层module依赖
image.png

这是一张模块化开发的分层图片

module.png

命名建议:
1.底层:Library
2.中间层:Module + 业务或功能名字
3.上层:App + 项目名字
建议分层进行

  • 底层:包含基础库和底层库

    • 基础库:
      包含所有模块需要的依赖库,以及一些工具类,比如封装了的常用网络请求,封装图片处理fresco,数据库相关等,还包含所有模块需要的依赖库;
    • 底层库:
      主要是使用C/C++开发的跨平台的引擎或者库,以so的形式存在。例如:游戏引擎cocos2d
  • 中间层

    • 首先、分模块肯定要按照功能分,独立的一个功能,不能杂。比如、更新、登录、分享、播放,都可以。
    • 其次、我采取aar的形式作为模块的最小单位,为什么是aar不是jar,更不是library,因为jar不能带资源只能带java代码,library的话太容易被修改了,aar的好处是能带资源并且是编译好的,不能被修改。保证了模块的版本不会在被别人调用的时候随意修改,如果想修改就要联系做aar的人,让他去升级aar的版本。
      用android studio,打aar用maven;aar其实就是依赖,只不过之前的依赖都是存到了maven远程库里,自己用的话可以自己建和私有的maven库,太蛮烦的话可以直接用本地的aar文件做依赖。
  • 上层
    将所有的业务模块聚合在一起,加上配置,形成主应用,一个模块化做的好的应用,主应用应该很简单,并且非常的稳定。

模块化开发最容易出现的就是依赖冲突,以下是解决依赖冲突的一些建议

1.例如上面的项目,moduleA和moduleB都被app层依赖,而moduleA和moduleB都有如下资源

<resources>
    ...
    <string name="confim">点击确认</string>
    ...
</resources>

app层中引用

// app模块
<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="30dp"
    android:text="@string/confim"
    />

此时如果编译app,则app就会报资源名称冲突

解决办法比较容易,每个子模块给资源名添加前缀,具体做法是在每个子模块的build.gradle文件的android块内添加一行代码:resourcePrefix “资源名前缀”:

// moduleA模块的build.gradle文件
...
android {

    compileSdkVersion 25
    buildToolsVersion "25.0.3"

    resourcePrefix "module_A"

    ...

}
...
// moduleB模块的build.gradle文件
...
android {

    compileSdkVersion 25
    buildToolsVersion "25.0.3"

    resourcePrefix "module_B"

    ...

}
...

此时还不行,还需要我们手动去改一下资源名称,给前面加上前缀

// moduleA模块
<resources>
    ...
    <string name="moduleA">confim</string>
    ...
</resources>

// moduleB模块
<resources>
    ...
    <string name="moduleB">confim</string>
    ...
</resources>

2.重复依赖

Error:Module 'qsp_release:libLive:unspecified' depends on one or more Android Libraries but is a jar

1.方法一:
通过gradle配置
dependencies { provided fileTree(dir: 'libs', include: ['*.jar'])}
2.方式二:
右键module选择open module setting,选择要修改的module名,切换到dependencies页面,将要修改的jar的scope修改provided模式。

相关文章

  • 安卓模块化开发浅谈

    模块化开发适合于大型项目中多人协同开发,每个人独立开发某个模块,单独测试,单独维护,最终以library或者aar...

  • 浅谈Kotlin,安卓编程者须知

    浅谈Kotlin,安卓编程者须知 大家好,这一期呢,我们谈一下kotlin。Google在安卓开发环境中支持kot...

  • Android 模块化开发

    一、模块化浅谈 1. Android 模块化开发介绍; 模块化开发思路就是:单独开发每个模块,用集成的方式把他们组...

  • 安卓模块化开发

    先决条件 1.android开发工具,我用的是android studio2.maven私服,私服的搭建参照网上,...

  • 安卓自定义View-画圆

    效果图 代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开发工...

  • 安卓动画样例-圆环变多变少

    效果图 代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开发工...

  • 安卓开发零基础入门系列

    本文由安卓开发007出品 ## 1.1 安卓发展历程## 1.2 安卓开发前景展望## 1.3 安卓开发入门之安装...

  • Android Gson使用详解

    Android Gson使用详解(出处: 安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户)

  • 安卓动画样例-放大缩小

    效果图 实现代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开...

  • 浅谈安卓开发中context用到的装饰模式

    浅谈安卓开发中context用到的装饰模式 一、UML图 说明:Context类是最根部的抽象类,不实现具体的功能...

网友评论

      本文标题:安卓模块化开发浅谈

      本文链接:https://www.haomeiwen.com/subject/mtteuxtx.html