我是一个 gradle 白痴,但即使在阅读了 90 分钟的 gradle 文档和堆栈之后,我也无法让它发挥作用。
我有一个构建调试或发布 AAR 文件的 gradle 文件,我只需要将最终构建复制到目标目录。
这是我的 build.gradle
gradle.startParameter.showStacktrace = org.gradle.api.logging.configuration.ShowStacktrace.ALWAYS
buildscript {
repositories {
maven { url "https://maven.google.com" }
maven { url "https://jitpack.io" }
jcenter()
google()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.0"
classpath 'com.google.gms:google-services:4.3.4'
}
}
allprojects {
repositories {
maven { url "https://jitpack.io" }
google()
jcenter()
}
tasks.withType(JavaCompile) {
//options.compilerArgs << "-Xlint:deprecation"
}
}
apply plugin: 'com.android.library'
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "1.0"
ndk {
moduleName "foo"
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
setProperty("archivesBaseName", "foo");
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
ndk {
//abiFilters 'armeabi-v7a', 'arm64-v8a'
abiFilters 'arm64-v8a'
}
}
debug {
jniDebuggable true
ndk {
//abiFilters 'armeabi-v7a', 'arm64-v8a'
abiFilters 'arm64-v8a'
}
}
}
externalNativeBuild {
ndkBuild {
path 'jni/Android.mk'
}
}
}
dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
}
// make the pre[Release|Debug]Build tasks depend on zipGui task
tasks.whenTaskAdded { Task theTask ->
//
// Do something for each task as its added. For example:
// print theTask.name
//
}
afterEvaluate
{
//
// Do something after all the tasks have been added
//
// Get the start parameter. We use this to decide if its a debug/release build
String taskReqStr = gradle.getStartParameter().getTaskRequests().toString();
if(taskReqStr.contains("assembleDebug"))
{
// do debug things here
println ""
println ""
println "BUILDING FOR **DEBUG**"
println ""
tasks.preDebugBuild.dependsOn doPackCert
tasks.doLast copyAAR
}
else
{
// do release things here
println ""
println ""
println "> Build :BUILDING FOR **RELEASE**"
println ""
tasks.preReleaseBuild.dependsOn doPackCert
}
}
task doPackCert(type: Copy) {
from("$projectDir/../../../../install")
into("$projectDir/res/raw/")
include 'ca.pem'
doFirst {
println "==================== copying CA cert into assets"
}
}
task copyAAR {
copy {
from 'build/outputs/aar'
into '../../../lib/'
include '*.aar'
//rename { String fileName ->
// fileName.replace("foo-debug.aar", "foo.aar")
//}
//rename { String fileName ->
// fileName.replace("foo-release.aar", "foo.aar")
//}
}
}
build.finalizedBy(copyAAR)