android独立模块开发,Android在模块化开发中如何使各个模块(module)单独运行

在模块化开发中如何使各个模块(module)单独运行

在组件化还发中,为了提高开发效率,避免不必要的编译事件浪费,就不得不使单个业务模块独立运行。那如何实现呢?

Android中有源集的概念,源集很好的解决了这类需求问题:有关源集的问题可自行搜索及看我之前的文章。在这里我们用到了源集重定向。

步骤一:

在gradle.properties文件中创建一个变量runModule,如下:

#控制运行哪个模块(1:运行app模块 2:运行dataaccount模块)

runModule=2

步骤二:

在原来的app module(原始的程序入口module)中修改插件:

if (Integer.valueOf(runModule) == 1) {

apply plugin: 'com.android.application'

} else {

apply plugin: 'com.android.library'

}

接下来修改applicationId,如下:

defaultConfig {

if (Integer.valueOf(runModule) == 1) {//当为运行module时才有applicationId属性(可以做到不同module的app能在手机上共存)

applicationId "com.muheda.dataaccount"

}

minSdkVersion 21

targetSdkVersion 28

versionCode 1

versionName "1.0"

multiDexEnabled true

}

这一步的最后就是修改源集,如下:

android {

if (Integer.valueOf(runModule) != 1) {

sourceSets {

// main源集(source set)的闭包配置。

main {

//每个源集只能有一个AndroidManifest.xml清单文件,

//默认情况下,main源集的清单文件在src/main/ 目录中。

manifest.srcFile 'src/other/AndroidManifest.xml'

}

}

}

}

b84584f4f00a86c4a206bda8eb47ff04.png

说明:如上图所示,这里的源集重定向用的是相对路径,因为你要配置的文件是build.gradle,以build.gradle为基准AndroidMainfest.xml的路劲就是src/other/AndroidManifest.xml。

注意在lib中要去掉默认的启动activity如下图:

1a5b37afbab948f309fff47ccc280f3b.png

删除选项框中的代码即可

步骤三:

配置其他Module的build.gradle文件,配置方法和步骤二类似

首先配置插件:

if (Integer.valueOf(runModule) == 2) {

apply plugin: 'com.android.application'

} else {

apply plugin: 'com.android.library'

}

然后配置applicationId

defaultConfig {

if (Integer.valueOf(runModule) == 2) {

applicationId "com.muheda.data"

}

minSdkVersion 17

targetSdkVersion 28

versionCode 1

versionName "1.0"

multiDexEnabled true

}

最后配置源集:

android {

if (Integer.valueOf(runModule) == 2) {

sourceSets {

main {

// 变更Java 的源文件夹,默认的文件夹 = 'src/main/java'.

java.srcDirs = ['src/other/java']

//如果像以下方式一样,列出来多个文件夹,那么Gradle使用所有的这些文件夹来加载资源,

//并赋予这些文件夹相同的优先级。如果不同的文件夹中定义了相同的资源,那么会产生资源合并错误。

//默认的资源文件夹是 'src/main/res'.

res.srcDirs = ['src/other/res']

//每个源集只能有一个AndroidManifest.xml清单文件,

//默认情况下,main源集的清单文件在src/main/ 目录中。

manifest.srcFile 'src/other/AndroidManifest.xml'

}

}

}

}

到此为止大功告成,总体来说配置过程不是很麻烦。接下来只要修改gradle.properties文件中runModule的值就可以自由切换了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值