Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.android.build.VariantOutput
- initscript {
- repositories {
- google()
- mavenCentral()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.2.2'
- }
- }
- gradle.allprojects { project ->
- project.plugins.withId("com.android.application") {
- android {
- applicationVariants.all { variant ->
- def variantSlug = variant.name.capitalize()
- // использую deprecated апи, т.к. вижу что ты используешь его в оригинальной пасте, для совместимости
- // в 7.0 AGP такое уже не прокатит и надо будет писать по-новому
- variant.outputs.all { output ->
- if (output.outputType == VariantOutput.MAIN) {
- def copyTask = tasks.register("copy${variantSlug}Apks", Copy) {
- from(output.getOutputFile())
- // здесь можно еще дополнительно применить какой нужно ренейм
- // https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Copy.html
- // подставь сюда любой путь. который тебе удобно
- into(project.rootDir)
- // так связываем с таской, которая продюсит apk
- // это не совсем правильный (legacy way)
- // правильно будет сразу в from() передать нужный artifactProvider,
- // но этот API сейчас между 4.1 4.2 7.0 AGP сильно шатают
- // см https://android-developers.googleblog.com/2020/12/announcing-android-gradle-plugin.html
- dependsOn(variant.getPackageApplicationProvider())
- }
- // вот так ассембл таска узнает что нужно перед окончанием еще выполнить copy
- variant.getAssembleProvider().configure {
- dependsOn(copyTask)
- }
- }
- }
- }
- }
- }
- }
- // я для тестов положил в ~/.gradle/init.d/copyApks.gradle
- // проверяется запуском любой assemble таски на проекте
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement