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

bksxznpy  于 2023-10-19  发布在  Android
关注(0)|答案(4)|浏览(160)

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

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

有没有人能提供一个关于如何在apk生成后运行任务的提示?

34gzjxbg

34gzjxbg1#

Android任务通常在“afterEvaluate”阶段创建。从gradle 2.2开始,这些任务还包括“安装”和“安装发布”。要访问这样的任务,用户需要使用afterEvaluate闭包:
afterEvaluate { assembleDebug.dependsOn someTask }
来源:https://code.google.com/p/android/issues/detail?id=219732#c32

snvhrwxg

snvhrwxg2#

我找到了一个有效的解决方案,在构建完成时自动将发布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)
        }
}
f4t66c6m

f4t66c6m3#

试试把这个加到你身上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

evrscar2

evrscar24#

尝试将其添加到app/build.gradle中,然后在完成安装后,您可以将文件复制到指定的目录中。

project.tasks.configureEach { Task theTask ->
if (theTask.name == 'assembleRelease') {

    theTask.doLast {

        copy {
            from youInputPath // This can be the apk file path or mapping file path
            into youOutputPath
        }
        
    }
}

相关问题