Apk переименовывается с помощью плагина Gradle v4.10.1 - PullRequest
0 голосов
/ 15 января 2019

Сегодня я обновил свою Android Studio до версии 3.3, которая шла с плагином Gradle версии 4.10.1.

Ранее мой build.gradle переименовывал мои apk с этим кодом в следующую структуру:

app-{buildType[release|debug]}-{flavor[prod|stage]}-{versionName[1.2.4]-{versionCode[43]}.apk

приложение-релиз-прод-1.1.4-45.apk .

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        outputFileName = output.outputFile.name.replace(".apk", "-${variant.versionName}-${variant.versionCode}.apk").replace("-unsigned", "")
    }
}

Но я получил эту ошибку после обновления.

ПРЕДУПРЕЖДЕНИЕ: API 'optionOutput.getPackageApplication ()' устарел и был заменен на 'option.getPackageApplicationProvider ()'. Он будет удален в конце 2019 года. Для получения дополнительной информации см. https://d.android.com/r/tools/task-configuration-avoidance. Чтобы определить, что вызывает optionOutput.getPackageApplication (), используйте -Pandroid.debug.obsoleteApi = true в командной строке для отображения трассировки стека. Затронутые модули: приложение

Проблема в файле output.outputFile.name, поскольку вы не можете получить доступ к выходным данным этой версии плагина.

Пока я пробовал этот подход без успеха.

applicationVariants.all { variant ->
    variant.flavors*.name.all { flavor ->
        outputFileName = "${flavor}-${variant.buildType.name}-${variant.versionName}-${variant.versionCode}.apk".replace("-unsigned", "")
    }
}

Есть идеи?

Спасибо

Ответы [ 3 ]

0 голосов
/ 16 января 2019

для переименования ароматов вы можете сделать это так

  productFlavors {
        production {
            applicationId "com.example.production"
        }

        staging {
            applicationId "com.example.production.staging"

        }

        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                if(variant.productFlavors[0].name.equals("staging")){
                    output.outputFile = new File(output.outputFile.parent,
                            output.outputFile.name.replace("app-staging-release",  "test"));

                }else{
                    output.outputFile = new File(output.outputFile.parent,
                            output.outputFile.name.replace("app-production-release",  "production"));
                }

            }
        }
    }
0 голосов
/ 29 января 2019

Можете ли вы попробовать ниже.

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        outputFileName = outputFileName.replace(".apk", "-${variant.versionName}-${variant.versionCode}.apk").replace("-unsigned", "")
    }
}
0 голосов
/ 15 января 2019

Вы можете сделать это так:

defaultConfig {
    ...

    project.ext.set("archivesBaseName", applicationId + "_V" + versionName + "("+versionCode+")_" + new Date().format('dd-MM mm'));

}
...