app-release-unsigned.apk n'est pas signé

199

J'ai téléchargé le fichier zip d'une application Android sur github et j'essaye de l'exécuter, mais je reçois une boîte de dialogue avec ce message

app-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.

J'utilise Android Studio. Qu'est-ce que je suis supposé faire?

andrew
la source

Réponses:

438

Si quelqu'un souhaite déboguer la version de la version à l'aide d'Android Studio, procédez comme suit:

  1. Réglez la variante de construction sur le mode de libération.

entrez la description de l'image ici

  1. Cliquez avec le bouton droit sur l' application dans le volet de navigation de gauche, cliquez sur Ouvrir les paramètres du module .

  2. Accédez à l'onglet Signature. Ajoutez une configuration de signature et remplissez les informations. Sélectionnez également votre trousseau.

entrez la description de l'image ici

  1. Accédez à l' onglet Type de build . Sélectionnez le mode de libération et définissez:

-Débuggable à vrai .

-Signer Config à la config . (Celui que vous venez de créer).

entrez la description de l'image ici

Synchronisez votre gradle. Prendre plaisir!

NightFury
la source
3
Devrions-nous définir Debuggable sur false lors de la génération effective de l'APK de sortie pour prod? ou le studio le fera-t-il seul?
Ishaan Garg
7
@IshaanGarg Vous devez définir debuggable sur false lors de la sortie de l'
apk
1
On pourrait penser que ce serait par défaut le premier créé, se demander pourquoi il ne le fait pas ... peut-être que ce serait mauvais pour certains de signer des paquets qu'ils ne voulaient pas signer ... mais merci, mec, j'ai oublié de définir le type de construction " Signing Config "et jusqu'à la capture d'écran, je ne me souvenais pas
CrandellWS
14
il n'y a PAS BESOIN de définir Debuggable sur true (sauf si cela est vraiment prévu).
computingfreak
4
Vous devez cependant savoir qu'après avoir défini une configuration sur le type de build, toutes vos informations de clés (y compris les mots de passe) apparaîtront dans le fichier gradle ...
Jacob.B
95

Assurez-vous que la variante de build est définie pour déboguer (et non pas sortir ) dans Android Studio (vérifiez le panneau des variantes de build ).

S'il est défini sur débogage, il doit automatiquement signer l'application avec le magasin de clés de débogage généré automatiquement, sans modifier les scripts de génération.

Cependant, vous devrez créer et configurer un fichier de clés spécifique pour publication.

Documentation officielle, couvrant les modes de débogage et de publication: https://developer.android.com/tools/publishing/app-signing.html

Stéphane
la source
53

Signez toujours votre build en utilisant votre script DSL build.gradle comme ceci:

    android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
}

Si vous voulez comprendre un peu plus le système de construction Gradle associé à Android Studio, rendez-vous sur:

Guide de l'utilisateur du plugin Gradle

Martin Revert
la source
Mais pourquoi dois-je faire ça? Sur le guide, ils disent "Par défaut, il existe une configuration de débogage qui est configurée pour utiliser un magasin de clés de débogage, avec un mot de passe connu et une clé par défaut avec un mot de passe connu.". Je n'ai aucun problème avec d'autres applications.
andrew
Si votre mot de passe est correct et que debug.keystore est accessible, je ne sais pas. Les problèmes habituels que j'ai vus dans le passé avec ce sont les autorisations de fichier ou les autorisations de répertoire. Peut-être que le projet que vous avez téléchargé conserve les fichiers locaux d'Android Studio qui pointent vers un autre magasin de clés de débogage que le vôtre. Dans tous les cas, votre journal Gradle doit afficher l'erreur de chemin d'accès, veuillez inclure ce journal pour plus d'aide.
Martin Revert
Hmmm, ça ne marche pas non plus pour moi. Aucune erreur gradle, mais toujours l'erreur de signature (et elle est dirigée vers mon fichier de clés).
Brian Knoblauch
Salut Brian! Pourriez-vous essayer de supprimer votre debug.keystore? Ensuite, démarrez un nouveau projet factice et un nouveau magasin de clés doit être généré. Après cela, rouvrez votre projet réel et essayez. C'est la seule chose que je puisse recommander si autre chose commentée avant échoue.
Martin Revert
1
Ne se debug.keystoretrouve pas dans le .androiddossier? Vous voudrez peut-être donner un chemin complet à moins que vous ne l'ayez déplacé dans votre projet
Gokhan Arik
36

J'ai réussi à déboguer l'APK signé, suivez cette procédure: -

  1. Choisissez la version "release" dans la barre d'outils "Build Variant"
  2. Dans le Build.gradlepour le module défini debuggable truepour le type de version de version
  3. Allez dans Fichier-> Structure du projet-> sous l'onglet signature, remplissez toutes les informations-> Sous l'onglet Flavors-> Choisissez la configuration de signature Vous venez de créer
  4. Définissez les points d'arrêt
  5. Exécutez l'application en mode débogage
Mohammad Khan
la source
Ne travaille pas pour moi. J'ai mis debuggable true pour la variante de mise en scène, mais je dois quand même signer l'apk avant de construire.
Nishant Tanwar du
18

Si quelqu'un souhaite déboguer et publier une variante de build distincte à l'aide d'Android Studio 3.5, suivez les étapes ci-dessous: 1. Définissez la variante de build en mode de release.

Construire une variante

  1. Allez dans Fichier >> Structure du projet
  2. Sélectionnez les modules, puis la configuration de la signature
  3. Cliquez sur l'icône Plus sous Signing Config

Signature de la configuration

  1. Sélectionnez la section de version et fournissez les informations de votre application, puis appliquez et OK.

se connecter

  1. Accédez au niveau de votre application build.gradleet changez votre buildTypes> "version" comme ci-dessous Capture d'écran.

final

Exécutez ensuite votre projet. Codage heureux.

Shohel Rana
la source
D'où obtenez-vous le fichier .jks?
Marc Alexander
@MarcAlexander ici, aucun code .jks ne génère de capture d'écran. Vous pouvez générer un fichier .jks à partir de l'éditeur de studio Android.
Shohel Rana
13

signatureConfigs doit être avant buildTypes

signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
NickUnuchek
la source
12

si vous souhaitez exécuter l'application en mode débogage

1) Regardez en bas à gauche, au-dessus des favoris, il y a des variantes de construction

2) Cliquez sur Build Variants. Cliquez sur release et choisissez debug

cela fonctionne parfaitement !!!

Samir Mangroliya
la source
9

Le projet d'application que vous avez téléchargé peut inclure une information signée dans le fichier de build.gradle. Si vous avez vu des codes comme ceux-ci:

buildTypes {
    debug {
        signingConfig signingConfigs.release
    }
    release {
        signingConfig signingConfigs.release
    }
}

vous pouvez les supprimer et réessayer.

Alex Tam
la source
8

Pour gradle Kotlin dsl

signingConfigs {
    create("releaseConfig") {
        storeFile = file("your keystore file path")
        storePassword = "storePassword"
        keyAlias = "keyAlias"
        keyPassword = "keyPassword"
    }
}
buildTypes {
    getByName("release") {
        signingConfig = signingConfigs.getByName("releaseConfig")
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
    }
}
Evgenii Vorobei
la source
6

Pour des raisons de sécurité, vous ne pouvez pas installer un apk non signé sur Android. Donc, si vous n'avez que l'apk non signé: vous devez le signer. Voici comment procéder: lien

Notez que vous pouvez signer l'apk avec un certificat auto-signé.

Une alternative peut être soit:

  • pour télécharger l'apk signé si disponible.
  • pour télécharger les sources, compilez-les (avec Android-Studio ou gradle ou ...). Il produira plusieurs apks et l'un d'eux sera signé avec votre clé de débogage (et vous pourrez donc l'installer)
ben75
la source
1
Je ne suis pas sûr de comprendre. J'ai téléchargé le zip du code de l'application et j'essaye de le compiler avec Android Studio ...
andrew
vous devez donc compiler une version signée. Habituellement, la version signée est construite en même temps et se trouve dans le même répertoire que la version non signée.
ben75
Si je génère un apk signé, cela fonctionne, mais je ne peux pas le faire à chaque fois que je dois tester l'application. Il me manque quelque chose ici, je veux juste essayer l'application comme je le fais avec mes propres applications ...
andrew
5

Mon problème a été résolu en changeant la variante de construction comme suggéré par Stéphane, si quelqu'un avait du mal à trouver les "variantes de construction" comme je l'ai fait ici, c'est une capture d'écran où vous pouvez la trouver.

entrez la description de l'image ici

yehyatt
la source
1
Je rencontre des problèmes après avoir modifié la variante de construction de Debug à Release
Parth Patel
2

Dans la barre de fenêtre d'outils, sélectionnez Build Variants Change Build Variant from Release to Debug

Bhaskar Vaddadi
la source
2

Comment j'ai résolu cela

Cette erreur se produit car vous avez défini vos variantes de génération en mode de publication. réglez-le en mode construction et réexécutez le projet.

Si vous souhaitez exécuter en mode de sortie, générez simplement un apk signé comme nous le faisons normalement lors de la sortie de l'application

Benja
la source
Je n'ai que les options "debug" et "release"?
Steve Smith
0

Ma solution a été de changer le nom de ma configuration de signature de "config" par défaut à "debug". Pour vérifier, je l'ai changé en un autre nom aléatoire et j'ai de nouveau l'erreur, puis je l'ai changé en "débogage" et l'erreur a disparu. Donc, même si cela semble artificiel et j'ai tendance à ne pas croire que c'est toute l'histoire, essayez cette solution.

elliptique1
la source
0

j'affiche également ce problème, et mon code ci-dessous

        storeFile file(properties.getProperty("filepath"))
        storePassword properties.getProperty("keypassword")
        keyAlias properties.getProperty("keyAlias")
        keyPassword properties.getProperty("keypassword")

la raison est une erreur de nom de propriété, ce doit être un mot de passe clé et non un mot de passe clé

xmliu
la source
0

Ce qui a finalement fonctionné pour moi, et je ne sais pas pourquoi, c'est:

  • Je suis allé à LastPass (le service que j'utilise pour conserver tous mes mots de passe)
  • Sélectionnez mon mot de passe en plaçant le curseur sur le mot de passe et en double-cliquant
  • Une fois sélectionné, j'appuie sur cmd C pour copier
  • Je suis allé à l'étude Android et au cmd V pour coller

Remarquez que j'ai essayé de copier plusieurs fois en sélectionnant le mot de passe en cliquant à la fin du mot de passe et en sélectionnant le mot de passe en déplaçant la souris.

C'est étrange mais cela n'a fonctionné qu'en double-cliquant en haut du mot de passe pour le copier.

J'ai également utilisé la méthode Open Module Settings> Signing ... expliquée par @NightFury dans ce post.

Rudy Espadas
la source
0

l'ajout de lignes de code ci-dessous dans le fichier build.gradel a fonctionné pour moi, ajoutez-les sous le bloc buildTypes ci-dessous, comme indiqué

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
Gareema
la source