模块创建

一般来说,我们用三方库都是在build文件里面去写网络仓库的。

但有时候,也需要做成本地模块。就像下面这样。

image-20230529131932326

image-20230529131712566

模块引入

image-20230529132317170

image-20230529132401507

image-20230529132554482

等同于这样:

image-20230529132706224

然后 MainActivity 里面就可以用 super-java 里面的类和方法

common.gradle

app模块和super-java模块都有自己的build.gradle文件。

但里面很多东西是相同的,如果要更改还要一个个打开改。

所以提取封装出来成一个公共的 common.gradle 这样一些目标 sdk 什么的只用直接改 common.gradle 就可以了。

项目根目录创建 common.gradle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//通用配置文件
//把这个项目下各个模块的 build.gradle 文件相同重复的放在这里。
//方便同意管理。

android {
//编译版本,旧版项目是compileSdkVersion
//有些旧版本,还需要配置buildToolsVersion
compileSdk rootProject.ext.targetSdk

defaultConfig {
//最小版本,低于该版本的手机无法运行,和安装
//旧版项目是minSdkVersion
minSdk rootProject.ext.miniSdk

//目标版本,可以理解为是基于那个版本开发
//例如:基于31,那么就可以使用31版本里面的新特性
//如果基于20,那就只能使用20里面的特性,但最终也可以安装到31版本的手机
//旧版项目是targetSdkVersion
targetSdk rootProject.ext.targetSdk

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

//每个Andoid项目都会带的一些 dependencies
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}

然后 项目下的 TestAndroid 加一个:

1
2
3
4
5
6
7
8
9
10
11
/*
扩展配置:相当于定义给gradle文件用的常量

*/
ext {
//目标版本
targetSdk = 33

//最低版本
miniSdk = 24
}

其他gradle引入common.gradle

1
2
//引入上层目录的 common.gradle 文件内容
apply from: '../common.gradle'

然后其他 gradle 文件中如果有和 common.gradle 文件相同的,那就会重写那个属性。

总结

通过上面的两大步骤配置,我们就把多个模块直接的公众配置集中到了一起方便管理。

以后还有别的模块,就只用在他们的build.gradle文件里面引入common.gradle

然后删除自己重复的。

而且以后想改app的目标版本什么的就只要在项目的build.gradle文件中改一下就可以了。

这样就做到了高复用。