1.gradle task
Groovy
// ===== 导出 Fat JAR =====
tasks.register('exportFatJar', Jar) {
archiveFileName = "oplib.jar"
file("release/oplib.jar").delete()
destinationDirectory = file("release/")
// 1. 打包自己写的 class
from('build/intermediates/javac/release/classes/')
// 2. 打包依赖 jar
/*from {
configurations.releaseRuntimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}*/
// 2. 指定要打包的依赖 JAR
from {
files(
'libs/converter-gson-2.5.0.jar',
//'libs/glide-3.8.0.jar',
'libs/picasso-2.5.2.jar',
// 'libs/room-runtime-2.0.0.jar',
// 'libs/room-common-2.0.0.jar',
// 'libs/collection-1.0.0.jar',
'libs/gson-2.8.2.jar',
'libs/okhttp-3.12.0.jar',
'libs/okio-1.15.0.jar',
'libs/retrofit-2.5.0.jar'
).collect { zipTree(it) }
}
// 3. 包含资源
from('src/main/resources/')
// 4. 排除不必要文件
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA'
exclude '**/R.class', '**/R$*.class', '**/BuildConfig.class'
exclude 'module-info.class'
exclude '**/*.kotlin_metadata'
exclude '**/*.kotlin_module'
exclude 'META-INF/**'
}
2.自动执行
Groovy
android{
// --- 关键:配置自动执行 ---
// 当你在 Android Studio 点击 Build 或执行 assembleRelease 时,会自动触发
tasks.whenTaskAdded { task ->
// 挂载到 bundleReleaseAar(打包 AAR 的核心任务)
if (task.name == 'bundleReleaseAar') {
task.finalizedBy exportFatJar
}
// 或者挂载到总编译任务
if (task.name == 'assembleRelease') {
task.finalizedBy exportFatJar
}
}
}