模块化开发步骤 + ARouter的使用 + 结合mvp结构分模块(一)

(一)分模块步骤:

1、新建模块:

New Module,选择第一个Phone,表示可以独立运行的模块

取名为模块的名字,然后configure Activity的时候要注意Activity和Layout的名字都不能有重复。

 

 

比如这里创建一个叫做login的模块,完成之后就可以看到他是可以单独运行的。

 

 

2、做模块的配置:

我们把他们build.gradle统一的sdk版本号和是否可单独运行的声明放到统一的gradle.peoperties文件里面(注意:主模块是一定要能单独运行的,所以这个是否可单独运行这一声明是针对新建的模块的):

 

#最小SDK版本
MIN_SDK_VERSION = 14
#当前SDK版本
TAR_SDK_VERSION = 28
#Android使用的SDK版本
COMPILER_SDK_VERSION = 28

#各个模块是否能单独运行
MODULE_IS_APPLICATION = true
#我用一个字段做所有模块统一管理开关,开发者可根据自己的需求,分别给模块设立独立开关

 a、然后在所有build.gradle里面修改SDK值为引用gradle.peoperties里面的这些值(注意引用值的时候需要转类型,因为这里的值是String形式的)

android {
    compileSdkVersion COMPILER_SDK_VERSION.toInteger()
    defaultConfig {
        ······//这个地方是applicationId,需要根据是否能独立运行做更改,待会会讲到
        minSdkVersion MIN_SDK_VERSION.toInteger()
        targetSdkVersion TAR_SDK_VERSION.toInteger()
        ······

 

b、SDK改完了咱们改模块是否能单独运行的配置,能独立运行的话就用原来的application,不能独立运行,他就是一个library,我们在主模块以外的build.gradle最顶部那里改一下做if判断:

if (MODULE_IS_APPLICATION.toBoolean()){
    apply plugin: 'com.android.application'
}else {
    apply plugin: 'com.android.library'
}

c、上面遗留的applicationId问题这个地方咱也要做判断,能单独运行的时候才有applicationId,注意这个地方也是除了主模块以外的才需要改:

//单独运行才有这个applicationId
if(MODULE_IS_APPLICATION.toBoolean()){
    applicationId "com.xaehu.login"
}

d、AndroidManifest也是需要根据是否可单独运行做配置,如果可单独运行我们就用原来的,不可单独运行的时候我们需要执行另一个AndroidManifest,另一个AndroidManifest的配置待会会说到。当然,这一步也是针对主模块以外的模块:

android {
    ······
    sourceSets{
        main{
            if(MODULE_IS_APPLICATION.toBoolean()){
                //执行原来的AndroidManifest
                manifest.srcFile 'src/main/AndroidManifest.xml'
            }else{
                //执行不可单独运行配置的另一个AndroidManifest
                manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
            }
        }
    }
    ······
}

所以abcd四步结合起来的login模块的build.gradle修改的配置如下:

if (LOGIN_IS_APPLICATION.toBoolean()){
    apply plugin: 'com.android.application'
}else {
    apply plugin: 'com.android.library'
}
android {
    compileSdkVersion COMPILER_SDK_VERSION.toInteger()
    defaultConfig {
        if(LOGIN_IS_APPLICATION.toBoolean()){
            applicationId "com.xaehu.login"
        }
        minSdkVersion MIN_SDK_VERSION.toInteger()
        targetSdkVersion TAR_SDK_VERSION.toInteger()
        ······
    }
    ······
    sourceSets{
        main{
            if(LOGIN_IS_APPLICATION.toBoolean()){
                manifest.srcFile 'src/main/AndroidManifest.xml'
            }else{
                manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
            }
        }
    }
}

 

细心的同学就已经发现了,d那一步中,另一个AndroidManifest就在main下面创建一个manifest文件,再在里面创建一个新的AndroidManifest.xml文件,复制原来的AndroidManifest过来改,去掉application的属性和activity内层的元素:(这一步也是主模块以外

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xaehu.login">
    <application>
        <activity android:name=".LoginActivity">
        </activity>
    </application>
</manifest>

分布大概就是这样子:

这里需要说一下,原AndroidManifest里该有的权限都不能少,因为他有单独运行的时候,也是需要这些权限。比如联网权限

 

 

然后就是主模块的判断了,如果登录模块不可单独运行,那他就是library,我们就把它引入进来:

dependencies {
    ······
    if(!LOGIN_IS_APPLICATION.toBoolean()){
        implementation project(':login')
    }
}

 

模块化开发步骤 + ARouter的使用 + 结合mvp结构分模块(一) 

模块化开发步骤 + ARouter的使用 + 结合mvp结构分模块(二)

模块化开发步骤 + ARouter的使用 + 结合mvp结构分模块(三)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值