Android Studio 模块编译打包出jar
更新日期: 2023-11-23
- 2023-11-23 合并jar的方法
- 2023-10-17 创建文档
开发环境
- Android Studio Electric Eel | 2022.1.1 Patch 2
Android Studio 模块打包出jar
除了打包成aar,Android Studio也可以打包出jar。
需要我们在gradle中新增一个打jar包任务(task)
以下是模块完整的gradle
| plugins {
id 'com.android.library'
}
android {
namespace 'com.rustfisher.rustfisherlib'
compileSdk 33
defaultConfig {
minSdk 19
targetSdk 33
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
consumerProguardFiles "consumer-rules.pro"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lint {
baseline = file("lint-baseline.xml")
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.0.0'
testImplementation 'junit:junit:4.13.2'
// androidTestImplementation 'androidx.test.ext:junit:1.1.1'
// androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
}
task makeJar(type: Copy) {
//删除存在的
delete 'build/libs/rustfisherlib.jar'
//设置拷贝的文件
from('build/intermediates/aar_main_jar/release/')
//打进jar包后的文件目录
into('build/libs/')
//将classes.jar放入build/libs/目录下
//include ,exclude参数来设置过滤
include('classes.jar')
//重命名
rename ('classes.jar', 'rustfisherlib.jar')
}
makeJar.dependsOn(build)
|
gradle相关方法说明
1、Task 类型:(type: Copy) 表示继承 Copy 这个类
2、from 和 into 是复制文件使用的方法
执行这个gradle任务即可看到效果。
执行gradle任务
可以在Android Studio右边的Gradle栏目里找到makeJar这个任务。
一般在 libName -> Tasks -> other -> makeJar
执行过一次后,在顶部任务栏中能找到这个任务
合并jar包
再makeJar基础上,再添加一个任务。把模块里的第三方jar包合并进去。
| task makeJar(type: Copy) {
//删除存在的
delete 'build/libs/output1-sdk.jar'
//设置拷贝的文件
from('build/intermediates/aar_main_jar/release/')
//打进jar包后的文件目录
into('build/libs/')
//include ,exclude参数来设置过滤
include('classes.jar')
//重命名
rename ('classes.jar', 'output1-sdk.jar')
}
makeJar.dependsOn(build)
task mergeJar(type: Jar, dependsOn: ['compileReleaseJavaWithJavac']) { // task buildJar(type: Jar, dependsOn: ['build'])
delete 'build/libs/all-in1-sdk.jar'
//导出的jar文件的名称
archiveName = "all-in1-sdk.jar"
//需打包的资源所在的路径集
// from('build/intermediates/aar_main_jar/release/')
from (project.zipTree('build/libs/output1-sdk.jar')) //
from (project.zipTree('libs/other1-sdk.jar')) //第三方jar包
from (project.zipTree('libs/other2-sdk.jar')) //第三方jar包
destinationDir = file('build/libs') // //导出的jar文件的存放目录(未指定则默认存放在build/libs下)
}
mergeJar.dependsOn(makeJar, build)
|
上面用了过时的属性 destinationDir archiveName
参考
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~
📖AndroidTutorial
📚AndroidTutorial
🙋反馈问题
🔥最近更新
🍪投喂作者
Ads