GitHub地址:https://github.com/linliangliang/TestHttp
module可以打包成jar文件和aar文件,
.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。
.aar:包含所有资源,class以及res资源文件全部包含。
我们下面只介绍导出jar文件。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmLwMDNxADOzATM0ETMxgTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
如图:app module是主modul,用来测试导出的jar文件是否可用的。baseprolib module是新建的module,用来生成jar包的,在baseprolib中封装android常用到的功能类,如LogUtil类,ToastUtil类等,这些工具类可以用在所有项目中,所有打包出来。
baseprolib的build.gradle文件设置
apply plugin: 'com.android.library'
//apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
//applicationId "com.zhengyuan.baseprolib"
minSdkVersion 15
targetSdkVersion 26
versionCode 101
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
task makeJar(type: Copy) {
//删除存在的
delete 'build/libs/utillib.jar'
//设置拷贝的文件
from('build/intermediates/bundles/release/')
//打进jar包后的文件目录
into('build/libs/')
//将classes.jar放入build/libs/目录下
//include ,exclude参数来设置过滤
//(我们只关心classes.jar这个文件)
include('classes.jar')
//重命名
rename('classes.jar', 'utillib.jar')
}
makeJar.dependsOn(build)
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:0.5'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'
}
apply plugin: 'com.android.application'改成apply plugin: 'com.android.library'
去掉:applicationId "com.zhengyuan.baseprolib"
然后写好工具类
然后rebuild project后可以在baseprolib->build->intermediates->bundles中可以看见一个class.jar文件
为了方便,我们对其重命名并改变一下生成的路径,可以看到在module的build.gradle中有一段
task makeJar(type: Copy) {
//删除存在的
delete 'build/libs/utillib.jar'
//设置拷贝的文件
from('build/intermediates/bundles/release/')
//打进jar包后的文件目录
into('build/libs/')
//将classes.jar放入build/libs/目录下
//include ,exclude参数来设置过滤
//(我们只关心classes.jar这个文件)
include('classes.jar')
//重命名
rename('classes.jar', 'utillib.jar')
}
makeJar.dependsOn(build)
这段代码就是重命名,改生成路径的task。但是这段代码不能直接起作用需要,需要在Teminal中输入“gradlew makeJar”执行一些
第一次编译会比较久,需要下载一些东西,我第一次操作报错了,原因是有些东西需要翻 qiang下载。第二次也执行失败,原因是第一次下了一半有缓存,将c盘->user->username->.gralde->caches->moudles-2文件夹删除了。搭上梯子后重新执行。
Teminal执行成功后可以在build/libs/中看见utillib.jar,这个就是打包出来的jar文件。
为了在app module中使用这个jar文件中的类,需要将生成的utillib.jar拷贝到app module的lib文件夹下面,然后在app module的build.gradle中的依赖中添加
Implementation project (':utillib.jar')
即可使用jar包中封装的类