当我在Android Studio中使用相同的build.gradle时,为什么不自动为.aab文件添加-free-release或-pro-release.apk后缀?

Hel*_*oCW 5 gradle android-studio build.gradle

我用下面的build.gradle生成的apk文件,其结果将是的放大镜-V1.01-自由release.apk免费的放大镜-V1.01-PRO-release.apk版。-free-release-pro-release由Android Studio 3.4.2自动作为后缀添加到文件名中。

我尝试使用相同的build.gradle产生.aab文件,我发现结果的放大镜-V1.01免费的放大镜-V1.01,有相同的,为什么呢? Android Studio 3.4.2不会自动将-free-release-pro-release作为后缀添加到文件名中。

新增内容:

就像Image 1一样,我使用Android Studio生成了不同版本的.apk和.aab 。

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"
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

图片1 在此处输入图片说明

Mar*_*ler 2

这是因为捆绑包的名称被严格应用(问题跟踪器上可能有相关的票证)。一旦在这里留下了一个解决方法: How to Change the generated filename for App Bundles with Gradle?

此方法还可用于根据最终任务的名称来最终确定这些风格。另一种优化是在生成的包上使用Apache Ant 集成。由于某种原因(我不知道),Gradle 不支持开箱即用的移动(重命名)操作。

此配置看起来毫无用处(并且可能缺少其他配置):

buildConfigField "boolean", "IsDebugMode", "true"
Run Code Online (Sandbox Code Playgroud)

因为在 Java 中这被称为BuildConfig.DEBUG; 最好用配置替换它applicationIdSuffix ".debug"- 并添加相应的applicationIdSuffix ".release"(这听起来很像预期的结果);例如:

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

    debug {
        applicationIdSuffix ".debug"
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)