Question "App-release.apk" comment changer le nom apk généré par défaut


Chaque fois que je génère un signé apk dans Android Studio, il donne par défaut le nom app-release.apk ...

Pouvons-nous faire des réglages pour que celui-ci demande et demande le nom qui doit être assigné à l'apk (comme pour l'éclipse)

Ce que je fais est - renommer l'apk après qu'il a généré. Cela ne génère aucune erreur, mais existe-t-il un moyen réel de modifier les paramètres pour obtenir une invite?

Remarque::

tout en générant apk android studio me donne une invite pour sélectionner l'emplacement (uniquement)enter image description here


84
2018-01-31 06:46


origine


Réponses:


Oui, nous pouvons changer cela mais avec plus d'attention

SeeThis

Maintenant ajoutez ceci dans votre build.gradle dans votre projet tout en vous assurant que vous avez vérifié la variante de construction de votre projet comme release or Debug  alors voici que j'ai défini ma variante de construction comme release mais vous pouvez également sélectionner Débogage.

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

Vous pouvez le faire avec une approche différente

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

Utilisation de la méthode de propriété Set dans build.gradle et n'oubliez pas de synchroniser la gradation avant d'exécuter les projets  J'espère que cela va résoudre votre problème :)

Une nouvelle approche pour gérer cela ajouté récemment par Google Update    Vous pouvez maintenant renommer votre version en fonction de la saveur ou de la sortie de la variante // La source ci-dessous provient de la documentation développeur android Pour plus de détails, suivez le lien de documentation ci-dessus
L'utilisation de l'API Variant pour manipuler les sorties de variantes est interrompue avec le nouveau plugin. Il fonctionne toujours pour des tâches simples, telles que la modification du nom de l'APK pendant la construction, comme indiqué ci-dessous:

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

86
2018-01-31 09:48



J'ai modifié la réponse de @Ahbhishek Chaubey pour changer le nom du fichier entier:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                project.ext { appName = 'MyAppName' }
                def formattedDate = new Date().format('yyyyMMddHHmmss')
                def newName = output.outputFile.name
                newName = newName.replace("app-", "$project.ext.appName-") //"MyAppName" -> I set my app variables in the root project
                newName = newName.replace("-release", "-release" + formattedDate)
                //noinspection GroovyAssignabilityCheck
                output.outputFile = new File(output.outputFile.parent, newName)
            }
        }
    }
    debug {
    }
}

Cela produit un nom de fichier comme: MyAppName-release20150519121617.apk


49
2018-05-19 17:25



Vous pourriez avoir l'erreur avec le dernier plugin android gradle (3.0):

Impossible de définir la valeur de la propriété en lecture seule 'outputFile'

Selon le guide de migration, nous devrions utiliser l'approche suivante maintenant:

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

Notez 2 changements principaux ici:

  1. all est utilisé maintenant au lieu de each itérer sur les variantes de sortie.
  2. outputFileName propriété est utilisée au lieu de muter une référence de fichier.

36
2017-09-03 21:50



(EDITED pour travailler avec Android Studio 3.0 et Gradle 4)

Je cherchais une option de renommage de nom de fichier apk plus complexe et j'ai écrit cette solution qui renomme l'apk avec les données suivantes:

  • saveur
  • type de construction
  • version
  • rendez-vous amoureux

Vous obtiendrez un apk comme celui-ci: myProject_dev_debug_1.3.6_131016_1047.apk.

Vous pouvez trouver la réponse complète ici. J'espère que cela aide!

Dans le build.gradle:

android {

    ...

    buildTypes {
        release {
            minifyEnabled true
            ...
        }
        debug {
            minifyEnabled false
        }
    }

    productFlavors {
        prod {
            applicationId "com.feraguiba.myproject"
            versionCode 3
            versionName "1.2.0"
        }
        dev {
            applicationId "com.feraguiba.myproject.dev"
            versionCode 15
            versionName "1.3.6"
        }
    }

    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def project = "myProject"
            def SEP = "_"
            def flavor = variant.productFlavors[0].name
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def version = variant.versionName
            def date = new Date();
            def formattedDate = date.format('ddMMyy_HHmm')

            def newApkName = project + SEP + flavor + SEP + buildType + SEP + version + SEP + formattedDate + ".apk"

            outputFileName = new File(newApkName)
        }
    }
}

24
2017-10-13 09:52



Voici un moyen beaucoup plus court:

defaultConfig {
    ...
    applicationId "com.blahblah.example"
    versionCode 1
    versionName "1.0"
    setProperty("archivesBaseName", applicationId + "-v" + versionCode + "(" + versionName + ")")
}

Il vous donne le nom com.blahblah.example-v1 (1.0) -debug.apk (en mode debug)

Android Studio ajoute versionNameSuffix par nom de type de construction par défaut, si vous voulez remplacer cela, procédez comme suit:

buildTypes {
    debug {
        ...
        versionNameSuffix "-MyNiceDebugModeName"
    }
    release {
        ...
    }
}

Sortie en mode débogage: com.blahblah.example-v1 (1.0) -MyNiceDebugModeName.apk


10
2017-11-01 06:54



Ne pas le renommer, mais peut-être que générer le nom correctement en premier lieu aiderait? Changer le nom apk avec Gradle


3
2018-01-31 09:32



J'ai écrit une solution plus universelle basée sur la réponse de @Fer.

Il devrait également fonctionner avec la configuration de type saveur et construction de applicationId, versionName, versionCode.

Dans le build.gradle:

android {
    ...
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def appId = variant.applicationId
            def versionName = variant.versionName
            def versionCode = variant.versionCode
            def flavorName = variant.flavorName // e. g. free
            def buildType = variant.buildType // e. g. debug
            def variantName = variant.name // e. g. freeDebug

            def apkName = appId + '_' + variantName + '_' + versionName + '_' + versionCode + '.apk';
            output.outputFile = new File(output.outputFile.parentFile, apkName)
        }
    }
}

Exemple apk name: com.example.app_freeDebug_1.0_1.apk

Pour plus d'informations sur variant voir variable ApkVariant et BaseVariant définition des interfaces.


2
2018-04-20 20:24



Commencez par renommer votre module app à i.e. SurveyApp

Deuxièmement, ajoutez ceci à votre projet de niveau supérieur (projet racine). Il travaille avec Gradle 3.0

//rename apk for all sub projects
subprojects {
    afterEvaluate { project ->
        if (project.hasProperty("android")) {
            android.applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${project.name}-${variant.name}-${variant.versionName}.apk"
                }
            }
        }
    }
}

1
2017-12-21 09:40