Как отключить суффикс buildType gradle по умолчанию (-release, -debug) - PullRequest
0 голосов
/ 27 февраля 2020

Я перенес конфигурации стороннего инструмента gradle.build, поэтому он использует android плагин gradle 3.5.3 и gradle 5.4.1.

Сборка идет гладко, но когда я пытаюсь создать архив .aab, все сломалось, потому что цепочка инструментов ожидает, что выходной файл .aab будет иметь имя MyApplicationId.aab, но новый gradle по умолчанию будет выходной MyApplicationId-release.aab с суффиксом buildType, которого там не было.

Я пытался найти решение, но документация о вариантах продукта в основном касается добавления суффикса. Как предотвратить добавление суффикса "-release" по умолчанию? В конфигурационных файлах Grach набора инструментов не было никаких блоков вкуса продукта.

1 Ответ

0 голосов
/ 03 марта 2020

Я понял, что мне нужно создавать собственные задачи после прочтения других вопросов и ответов: Как изменить сгенерированное имя файла для комплектов приложений с Gradle?

Переименование applicationVariants.outputs 'outputFileName делает не работает, потому что это для .apks.

Я использую Gradle 5.4.1, поэтому моя ссылка на синтаксис задачи копирования здесь .

Я не совсем понимаю откуда взялась строка имени «app.aab», поэтому я определил свою собственную строку имени aabFile, чтобы она соответствовала выводу моей цепочки инструментов.

Меня не волнует исходный файл, поэтому он не удаляется другой задачей удаления.

Также мой набор инструментов, похоже, удаляет неизвестные переменные, окруженные "$ {}", поэтому мне пришлось Обходите $ {buildDir} и $ {flav}, опуская скобки и используя конкатенацию для правильного разграничения.

    tasks.whenTaskAdded { task ->
    if (task.name.startsWith("bundle")) { // e.g: buildRelease
        def renameTaskName = "rename${task.name.capitalize()}Aab" // renameBundleReleaseAab
        def flavorSuffix = task.name.substring("bundle".length()).uncapitalize() // "release"
        tasks.create(renameTaskName, Copy) {
            def path = "$buildDir/outputs/bundle/" + "$flavorSuffix/"
            def aabFile = "${android.defaultConfig.applicationId}-" + "$flavorSuffix" + ".aab"
            from(path) {
                include aabFile
                rename aabFile, "${android.defaultConfig.applicationId}.aab"
            }
            into path
        }

        task.finalizedBy(renameTaskName)
    }
}

Как сказал первоначальный ответ: это добавит больше задач, чем необходимо, но эти задачи будут пропущены, поскольку они не соответствуют ни одной папке. например,

Задача: app: renameBundleReleaseResourcesAab NO-SOURCE

...