如何在Android Studio中生成apks后运行Gradle任务?

时间:2014-12-31 00:10:43

标签: gradle android-studio android-gradle

以下任务(在app的模块的build.gradle中)似乎总是在生成apk之前运行:

android.applicationVariants.all { variant ->
    if (variant.buildType.name == 'release') {
            def releaseBuildTask = tasks.create(name: "debug") {
            println("....................  test   ..............................")
        }
        releaseBuildTask.mustRunAfter variant.assemble
    }
}

在生成apks之后,是否有人可以提供有关如何运行任务的提示?

3 个答案:

答案 0 :(得分:10)

  

Android任务通常在" afterEvaluate"相。   从gradle 2.2开始,这些任务还包括" assembleDebug"和   " assembleRelease&#34 ;.要访问此类任务,用户需要使用   afterEvaluate closure:

     

afterEvaluate { assembleDebug.dependsOn someTask }

来源:https://code.google.com/p/android/issues/detail?id=219732#c32

答案 1 :(得分:8)

尝试在app/build.gradle

中添加此内容
assembleDebug.doLast {
    android.applicationVariants.all { variant ->
        if (variant.buildType.name == 'release') {
            def releaseBuildTask = tasks.create(name: "debug") {
                println("....................  test   ..............................")
            }
            releaseBuildTask.mustRunAfter variant.assemble
        }
    }
    println "build finished"
}

调用build命令并指定任务assembleDebug

./gradlew assembleDebug

答案 2 :(得分:7)

我找到了一个有效的解决方案,可以在构建完成时自动将发布APK复制到项目根目录中。

    android {
        ...
        task copyReleaseApk(type: Copy) {
            from 'build/outputs/apk'
            into '..' // Into the project root, one level above the app folder
            include '**/*release.apk'
        }

        afterEvaluate {
            packageRelease.finalizedBy(copyReleaseApk)
        }
}