1、描述:
以电商项目为例 ,项目ModuleA依赖于功能业务ModuleB,业务ModuleB又依赖于核心ModuleC。依赖关系如图所示:
2、步骤操作:
2.1. File ——->Project Structure——->Module A(你的module工程)
2.2. 在右边的页签上点击Dependencies,点击右边的“+”添加要导入的工程Module B(这里选择你要导入的module),如图:

3、验证导入成功:
先查看Module A的build.gradle中的文件来确认导入是否成功,通常导入成功在
build.gradle中的dependencies中会有compile project(‘:module B’)的字样,如果没有则代表导入不成功。
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':latte-core')
}
3.1、确认导入成功,编译通常会报如下错误:
unspecified on project autolayouttest resolves to an APK archive which is not supported as a compilation dependency XXX等,原因是因为被依赖的ModuleB的此时还是一个Application,从Module B的build.gradle文件里面可以看到:
apply plugin: 'com.android.application'
所以这里要将application改成依赖库的属性,具体如下:
apply plugin: 'com.android.library''
3.2、 继续编译,然后继续报错:Error:Library projects cannot set applicationId. applicationId is set to ‘package_name’ in default config 。因为被依赖的库Module B,此时是作为一个库存在的,而ModuleB的applicationId是仍然存在的:
defaultConfig {
applicationId "comi.example.liy.latte"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
作为一个库不允许设置applicationId,需要将builde.gradle — android — defaultConfig中的applicationId删除:
defaultConfig {
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
这时,Module工程的相互依赖导入基本完成,最关键的是,这样比单独导出jar包来用稍微方便点。
网友评论