如何简单地将最终构建的 AAR 复制到目标目录并重命名?

时间:2021-01-13 23:55:12

标签: gradle

我是一个 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)

1 个答案:

答案 0 :(得分:0)

build.gradle

dwTextLength

Copied files

相关问题