web-dev-qa-db-fra.com

android studio: release apk n'est pas signé

* J'ai reformulé le message depuis le premier post *

Lorsque j'essaie d'exécuter une version apk récemment générée, le message d'erreur "l'apk de votre variante actuellement sélectionnée ... n'est pas signée". Ceci est dans le popup Edit Configuration. Voici mes étapes:

  1. Dans l'onglet Variantes de construction, sélectionnez "release"
  2. Dans le menu, choisissez Build -> Generate Signed APK
  3. Dans la fenêtre contextuelle, remplissez les champs pour le magasin de clés et les mots de passe.
  4. Dans le deuxième panneau, changez le dossier de destination en ...\app\build\sorties\apk (voir remarque * ci-dessous)
  5. Observez la notification en haut à droite du studio: APK (s) généré (s).
  6. Dans le menu, cliquez sur Exécuter -> Exécuter l'application.
  7. Je reçois un message "Modifier la configuration" avec l'erreur "L'apk de votre variante actuellement sélectionnée ... n'est pas signé.

Alors, pourquoi cette erreur? L'APK généré semble être valide. Je l'ai posté avec succès sur l'Android Store (test alpha uniquement) et vérifié que les vidages de pile sont obfusqués. 

Ce que je ne peux pas faire, c'est le télécharger (étape 6 ci-dessus) sur mon appareil. Je suppose que ça va puisque je peux très bien télécharger la version de débogage.

(*) Android Studio définit par défaut la sortie de la version apk dans un répertoire plus élevé, probablement plus pratique. Cependant, je trouve plus difficile de gérer la cohérence des fichiers générés quand ils sont dispersés, je préfère donc tous les apks générés au même endroit.

9
Peri Hartman

Définir la configuration de la signature dans la structure du projet.

  1. Fichier -> Structure du projet ...
  2. Sélectionnez Modules/app (ou un autre module)
  3. Cliquez sur l'onglet Signature et remplissez.
    Alias ​​de clé et Mot de passe de clé vient en premier. Pas le même ordre dans la boîte de dialogue "Générer l'APK signé".
  4. Cliquez sur l'onglet Types de construction et sélectionnez la version.
    Sélectionnez "config" dans la liste déroulante Signing config.
  5. Cliquez sur OK pour fermer la structure du projet.
  6. Exécuter -> Exécuter l'application

Run (ou Debug) app semble utiliser des apks construits avec "Buiild -> Build APK". Donc, nous devrions définir la configuration de la signature si les variantes de construction du module d'application sont "release".

14
Toris

Allez dans File\Project Structure

 Signing Tab

 Flavor Tab

 Build Type

Terminé! ;)

13
Badamchi Davoud

Essayez d'ajouter ceci dans votre fichier de construction:

buildTypes {
release {
        signingConfig signingConfigs.release
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
    }
    debug {
        minifyEnabled false
    }
}
0

First, Créez un fichier de clés s'il n'y en a pas. 

  1. Cliquez sur Construiredans le menu déroulant
  2. Sélectionnez Générer signé APK
  3. Cliquez Next
  4. Cliquez sur Créer un nouveau magasin de clés
  5. Remplissez le formulaire pour chemin du magasin de clés, alias, mot de passepour le magasin de clés et alias, au moins un champ dans la zone de certificat.
  6. Cliquez OK
  7. Un fichier de magasin de clés doit être créé dans le chemin du magasin de clés spécifié.

Secondemet à jour le fichier fichier de génération de version de l'applicationen quelque chose comme celui-ci pour inclure la configuration de signature).

Android {
    signingConfigs {
        config {
            keyAlias 'mykeyalias'
            keyPassword 'Android'
            storeFile file('/Users/yourname/path/to/the/Android/project/folder/Android_project_folder_name/app/debug.keystore')
            storePassword 'Android'
        }
    }
    buildTypes {
        debug {
            applicationIdSuffix = ".debug"
            versionNameSuffix "-debug"
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
    }
}

Third, générez et exécutez l'application, c'est fait.

0
s-hunter

J'ai eu le même problème s'est avéré j'ai mal configuré la propriété signingConfigs

Plus précisément, je pensais que je n'avais pas de mot de passe pour la clé où je l'avais définie. Après avoir ajouté les informations manquantes, cela a fonctionné.

signingConfigs {
        config {
            keyAlias 'key0'
            storeFile file('C:/Users/xxx/xxx/keystore/xxx.jks')
            storePassword '123'
            keyPassword '123' // this was missing
        }
    }
0
pseudozach

Dans https://developer.Android.com/studio/publish/app-signing#secure-shared-keystore il est écrit que vous ne devez pas conserver les informations d'identification dans build.gradle et VCS. Créez donc un fichier de configuration de signature (Build> Generate Signed APK ...), puis faites-le.

Créez un fichier nommé keystore.properties dans le répertoire racine de votre projet . Ce fichier doit contenir vos informations de signature, comme suit: :

storePassword=myStorePassword
keyPassword=mykeyPassword
keyAlias=myKeyAlias
storeFile=myStoreFileLocation

Dans le fichier build.gradle de votre module, ajoutez du code pour charger votre fichier keystore.properties avant le bloc Android {}.

// Create a variable called keystorePropertiesFile, and initialize it to your
// keystore.properties file, in the rootProject folder.
def keystorePropertiesFile = rootProject.file("keystore.properties")

// Initialize a new Properties() object called keystoreProperties.
def keystoreProperties = new Properties()

// Load your keystore.properties file into the keystoreProperties object.
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

Android {
    ...
}

Vous pouvez faire référence aux propriétés stockées dans keystoreProperties en utilisant la syntaxe keystoreProperties['propertyName']. Modifiez le bloc signingConfigs Du fichier build.gradle de votre module pour faire référence aux informations de signature Stockées dans keystoreProperties en utilisant cette syntaxe.

Android {
    signingConfigs {
        config {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }
    ...
}

Facultativement, dans build.gradle, vous pouvez ajouter:

buildTypes {
    release {
        ...
        signingConfig signingConfigs.config
    }
}

Maintenant, vous pouvez faire un apk signé. N'oubliez pas d'exclure keystore.properties de VCS.

0
CoolMind