Почему в файл .aab автоматически не добавляется -free-release или -pro-release.apk, когда я использую тот же build.gradle в Android Studio? - PullRequest
5 голосов
/ 04 июля 2019

Я использую следующий build.gradle для генерации файлов .apk, результат будет MagnifyingGlass-V1.01-free-release.apk для free edition и MagnifyingGlass-V1.01-pro-release.apk для pro редакция. -free-release или -pro-release автоматически добавляется к имени файла как суффикс в Android Studio 3.4.2.

Я пытаюсь использовать тот же build.gradleдля создания файлов .aab, я нахожу результат MagnifyingGlass-V1.01 для бесплатно и MagnifyingGlass-V1.01 для pro Есть же, почему? -free-release или -pro-release не добавляется к имени файла как суффикс автоматически в Android Studio 3.4.2.

Добавленный контент:

Я сгенерировал разные версии .apk и .aab, используя Android Studio, как Изображение 1 .

build.gradle

android {
    compileSdkVersion 28
    flavorDimensions "default"

    defaultConfig {
        applicationId "info.dodata.magnifyingglass"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 2
        versionName "1.02"
        archivesBaseName = "MagnifyingGlass-V" + versionName
    }

    productFlavors {
        free {
            applicationId "info.dodata.magnifyingglass"
        }

        pro {
            applicationId "info.dodata.magnifyingglass.pro"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            buildConfigField "boolean", "IsDebugMode", "false"
        }

        debug {
            buildConfigField "boolean", "IsDebugMode", "true"
        }
    }

}

Изображение 1 enter image description here

1 Ответ

1 голос
/ 21 июля 2019

Это происходит потому, что имя пакета применяется жестко (возможно, имеется соответствующий тикет, доступный на трекере проблем). Однажды оставил обходной путь здесь: Как изменить сгенерированное имя файла для Пакетов приложений с Gradle?

Этот подход также может быть использован для финализации этих ароматов, на основе названия их окончательного задания . Другая оптимизация заключается в использовании интеграции Apache Ant в сгенерированном пакете. По какой-то причине (неизвестно мне) Gradle не поддерживает операции перемещения (переименования) из коробки.

Эта конфигурация выглядит довольно бесполезной (и могут отсутствовать другие конфигурации):

buildConfigField "boolean", "IsDebugMode", "true"

потому что в Java это известно как BuildConfig.DEBUG; лучше заменить его на конфигурацию applicationIdSuffix ".debug" - и также добавить соответствующий applicationIdSuffix ".release" (что скорее звучит как ожидаемый результат); например:

buildTypes {
    release {
        applicationIdSuffix ".release"
        ...
    }

    debug {
        applicationIdSuffix ".debug"
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...