“app-release.apk”如何更改此默认生成的 apk 名称

新手上路,请多包涵

每当我在 Android Studio 中生成一个签名的 apk 时,默认情况下它给出的名称为 app-release.apk …

我们可以做任何设置,以便它应该提示并询问我需要分配给 apk 的名称(它在 eclipse 中的方式)

我所做的是 - 在生成后重命名 apk。这不会给出任何错误,但是否有任何真正的方法,以便我可以对设置进行任何更改以获得提示。

笔记::

在生成 apk android studio 时提示我选择位置(仅)在此处输入图像描述

原文由 Prabs 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

是的,我们可以改变它,但需要更多的关注

看这个

现在将其添加到项目的 build.gradle 中,同时确保您已检查项目的 构建变体,如 release or Debug 所以在这里我将构建变体设置为 release 但你可以也选择调试。

     buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                signingConfig getSigningConfig()
                applicationVariants.all { variant ->
                    variant.outputs.each { output ->
                        def date = new Date();
                        def formattedDate = date.format('yyyyMMddHHmmss')
                        output.outputFile = new File(output.outputFile.parent,
                                output.outputFile.name.replace("-release", "-" + formattedDate)
    //for Debug use output.outputFile = new File(output.outputFile.parent,
   //                             output.outputFile.name.replace("-debug", "-" + formattedDate)
                        )
                    }
                }
            }
        }

你可以像这样用不同的方法来做

 defaultConfig {
        applicationId "com.myapp.status"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        setProperty("archivesBaseName", "COMU-$versionName")
    }

在 build.gradle 中使用 Set 属性方法 并且不要忘记在运行项目之前同步 gradle 希望它能解决你的问题:)

谷歌更新最近添加了一种处理此问题的新方法 您现在可以根据风格或变体输出重命名您 构建

新插件打破了使用变体 API 来操作变体输出的问题。它仍然适用于简单的任务,例如在构建期间更改 APK 名称,如下所示:

 // If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

重命名 .aab 包 David Medenjak 很好地回答了这个问题

tasks.whenTaskAdded { task ->
    if (task.name.startsWith("bundle")) {
        def renameTaskName = "rename${task.name.capitalize()}Aab"
        def flavor = task.name.substring("bundle".length()).uncapitalize()
        tasks.create(renameTaskName, Copy) {
            def path = "${buildDir}/outputs/bundle/${flavor}/"
            from(path)
            include "app.aab"
            destinationDir file("${buildDir}/outputs/renamedBundle/")
            rename "app.aab", "${flavor}.aab"
        }

        task.finalizedBy(renameTaskName)
    }
//@credit to David Medenjak for this block of code
}

是否需要以上代码

我在最新版本的 android studio 3.3.1 中观察到的

.aab 包的重命名是由前面的代码完成的,根本不需要任何任务重命名。

希望对大家有所帮助。 :)

原文由 Abhishek Chaubey 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用最新的 android gradle 插件 ( 3.0 ) 可能会出现错误:

无法设置只读属性“outputFile”的值

根据 迁移指南,我们现在应该使用以下方法:

 applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${applicationName}_${variant.buildType.name}_${defaultConfig.versionName}.apk"
    }
}

注意这里的 2 主要变化:

  1. all 现在用于代替 each 迭代变量输出。
  2. outputFileName 使用属性而不是改变文件引用。

原文由 Johnny Doe 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题