最初的样子
当我们在AndroidStudio中新建一个module后,它的目录结构应该如下图所示:
这里我们再看一下它自带的build.gradle文件
plugins {
id 'com.android.library'
}
android {
compileSdkVersion 33
buildToolsVersion "33.0.2"
defaultConfig {
minSdkVersion 28
targetSdkVersion 33
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.10.0'
}
看完gradle文件内容,我们打开右侧的gradle操作面板
我们发现对应的gradle里面没有任何Task,这里的原因是compileSdkVersion为33,而我本地的 Android SDK 版本为30二者不匹配。gradle找到33的环境,所以没有任何Task。
将module打包成aar
这里直接点击build,即可将对应的bundle打包成aar文件,如图所示。
将AAR推送到maven仓库
我们发现没有推送的Task
这里我们先引入maven-publish的插件,同时引入打包源码的Task,最后加入afterEvaluate用来上传到maven仓库,这里我们只上传到本地仓库。如果有远端仓库,可以配上远端仓库的信息。
plugins {
id 'com.android.library'
id 'maven-publish'
}
//打包源码的task
task sourceJar(type: Jar) {
archiveClassifier.set('sources')
from android.sourceSets.main.java.srcDirs
}
afterEvaluate {
publishing {
publications {
// 这里的debug名字是自己起的
debug(MavenPublication) {
groupId="com.example.base"
version="1.0.0-SNAPSHOT"
artifactId="test_build_aar"
// 这里除了有debug 还有release
from components.debug
// 运行任务,把源码打进去
artifact sourceJar
}
}
// 添加仓库地址
repositories {
// 本地仓库
mavenLocal()
// 当上传到远端仓库
// maven {
// url("")
// credentials {
// username = ""
// password = ""
// }
// }
}
}
}
这里我们成功将AAR包,推送到本地maven仓库,可以在dependencies导入使用。如果有用请点赞,欢迎大家在评论区交流。