1

両方のフレーバーを同時にビルドし、APK の名前を変更してから別のフォルダーにコピーする Android プロジェクト用のカスタム Gradle タスクを作成しようとしています。

問題は、最初のタスクとほぼ同じこのタスクの別のバージョンがあり、あるタスクを実行すると、他のタスクの一部も実行されることです。

これが私の最初のタスクです:

task buildWithVersion(type: GradleBuild) {
    delete "$buildDir/outputs/apk"
    delete "$buildDir/outputs/verionapks"
    tasks = ['assembleMyAppDebug', 'assembleMyAppRelease']
    android.applicationVariants.all { variant ->
        variant.outputs.all { output ->
            outputFileName = "${variant.name}_${variant.versionName}.apk"
        }
    }
    doLast {
        copy {
            from "$buildDir/outputs/apk"
            into "$buildDir/outputs/verionapks"
            include '**/release/*.apk'
        }
    }
}

そして、2番目のもの:

task buildWithoutVersion(type: GradleBuild) {
        delete "$buildDir/outputs/apk"
        delete "$buildDir/outputs/noneverionapks"
        tasks = ['assembleMyAppDebug', 'assembleMyAppRelease']
        android.applicationVariants.all { variant ->
            variant.outputs.all { output ->
                outputFileName = "${variant.name}.apk"
            }
        }
        doLast {
            copy {
                from "$buildDir/outputs/apk"
                into "$buildDir/outputs/noneverionapks"
                include '**/release/*.apk'
            }
        }
    }

これには2つの別々のタスクが必要ですが、最初のタスクを実行すると、2番目のタスクが実行されたかのようにapkの名前が変更されるため、apkの名前はこの形式「${variant.name}.apk」に変更されます。最初のタスクで欲しかったフォーマットの。(2 番目のタスクは、アプリの build.gradle ファイルの最初のタスクの後です)

android.applicationVariants.all ループは、呼び出すときにタスク内で実行したいだけなのに、毎回実行されるように見えます。どうしてこれなの?また、特定のタスクが実行されたときにのみこれを実行することは可能ですか?

4

0 に答える 0