Le fichier APK n'existe pas sur le disque

224

Lorsque j'essaie l'application de débogage sur Android Studio, cette sortie de journal donne:

Le fichier APK /Users/MyApplicationName/app/build/outputs/apk/app-debug.apk n'existe pas sur le disque.

J'ai redémarré Android Studio, mais je ne peux pas résoudre ce problème. Comment puis-je le résoudre ? Je vous remercie

sorunluadam
la source
9
Comment puis-je le résoudre ? compiler une apk
Tim
1
@TimCastelijns Je me demande en fait si Android Studio n'est pas assez intelligent pour inclure la tâche apk create debug dans la tâche d'application deb. Gradle devrait être fait pour cela.
Trilarion
1
@Trilarion Par défaut, AS exécute la tâche assembleDebug de gradle qui compile une apk de débogage. Quelque chose semble mal ici, qui nécessite une compilation manuelle
Tim
2
L'ajout de Gradle Make-Aware a résolu ce problème pour moi. stackoverflow.com/a/25871525/1712417
Iammesol
2
Essayez d'ajouter "Gradle Make-Aware" stackoverflow.com/questions/18256177/…
Andy Cheng

Réponses:

463

Cliquez sur cette option pour résoudre l'erreur:

Exécuter: Affichage> Fenêtres d'outils> Gradle> [projet]> Tâches> build> build

指尖 上 的 Android
la source
6
Les caractères spéciaux dans le nom du répertoire de votre projet lèveront également cette erreur.
NP
50
Cela n'a pas fonctionné du tout pour moi. Je conseillerais des réponses qui expliquent pourquoi ils sont censés fonctionner plutôt que de simplement dire au lecteur quoi faire, afin qu'ils puissent comprendre / éviter / résoudre ces erreurs plus tard.
person27
3
Pourriez-vous expliquer ce que cela fait exactement et pourquoi ce problème s'est produit?
Hamidreza Sahraei
btw Les "caractères spéciaux" incluent également des chiffres. C'est ridicule, gaspillé des tonnes de temps à ce sujet. facepalm :)
alexr101
5
Ce bouton n'existe pas sur la dernière version d'Android Studio, mais je pense que c'est l'option "Sync Project With Gradle Files", qui a fonctionné pour moi.
nasch
208

Si vous rencontrez ce problème après la mise à jour vers Android Studio V 3.1, essayez ce qui suit.

J'étais confronté à ce même problème lorsque j'ai mis à jour vers Android Studio 3.1. Toutes les autres solutions que j'ai trouvées ici étaient assez manuelles car il faut nettoyer et reconstruire à chaque fois, ce n'est pas bon du tout. Mais grâce à la réponse d' Iman Marashi ici, j'ai pu le résoudre.

Allez dans Exécuter -> Modifier les configurations ...

Assurez-vous que vous disposez d'un "Gradle-aware Make" dans la section Avant le lancement:

Configurations d'exécution / débogage

Pour l'ajouter, cliquez sur le signe + et sélectionnez Gradle-aware Make et une fenêtre apparaîtra, laissez simplement le champ de texte vide et cliquez sur OK et OK .

Sept
la source
13
Il s'agit du correctif de la récente mise à jour 3.1. Pour moi, le premier symptôme de ce problème était l'APK ne "répondant" pas aux modifications du code. Il est maintenant clair pour moi que le nouvel APK ne se construit pas du tout correctement.
David Gay
Cette réponse peut résoudre pour moi. J'ai mis à jour 3.1 et j'obtiens cette erreur.
ZarNi Myo Sett Win
Votre père vous sauve la vie.
Joel Libby
HOU LA LA! Vous méritez 1000 votes pour cela! Android Studio mérite 1000 votes vers le bas!
1QuickQuestion
Merci, c'est certainement la bonne réponse et devrait être celle acceptée
Petar Marijanovic
68

Dans mon cas, l'exécution de "Sync Project with Gradle Files" a aidé. Ni le redémarrage d'Andoid Studio ni la suppression du cache n'ont fait quoi que ce soit.

Bartek
la source
1
Merci. Cela m'aide aussi. Ni redémarrer Andoid Studio ni vider le cache n'a aidé.
ivan.panasiuk
A fait l'affaire pour moi après avoir changé le script de dénomination qui se trouve dans un fichier distinct de mon normal build.gradle, donc Android Studio n'a pas automatiquement détecté le changement et ne m'a pas invité à synchroniser.
Magnus W
Telle est la vraie réponse.
Azizbekian
3
File -> Sync Project with Gradle Files stackoverflow.com/a/19932896/2527204
Marlon
A eu ce problème en essayant d'exécuter un test unitaire. Il demandait un appareil pour exécuter un test unitaire.
Sergio
34

Si vous voulez simplement connaître la conclusion, veuillez passer à la dernière section. Merci.

Habituellement, lorsque le projet de construction échoue, quelques astuces courantes que vous pouvez essayer:

  • Build -> Clean Project
  • Vérifier les variantes de construction
  • Redémarrez Android Studio (comme vous l'avez mentionné)

Mais pour être plus spécifique à votre problème - quand Android Studio n'a pas pu trouver le fichier APK sur le disque. Cela signifie qu'Android Studio a effectivement réussi à créer le projet et a également généré l'APK, mais pour une raison quelconque, Android Studio n'est pas en mesure de trouver le fichier.

Dans ce cas, veuillez vérifier le répertoire imprimé conformément au journal. C'est utile.

Par exemple:

Avec Android Studio 2.0 Preview (build 143.2443734).

  1. Extraire un commit spécifique (pour qu'il soit détaché de head): git checkout [commit_hash]
  2. Exécuter le projet
  3. Android Studio indique: Le fichier APK / Users / MyApplicationName / app / build / outputs / apk / app-debug-HEAD.apk n'existe pas sur le disque
  4. Allez dans le répertoire, il y a un fichier nommé: app-debug- (HEAD.apk (avec une parenthèse supplémentaire)
  5. Exécutez git branch

    * (TETE détachée à 1a2bfff)

Donc, ici, vous pouvez voir, en raison de l'erreur de mon script de construction gradle , que le nom de fichier est en quelque sorte faux.

L'exemple ci-dessus est juste un scénario qui pourrait conduire au même problème, mais pas nécessairement être la même cause racine que la vôtre.

En conséquence, je vous recommande fortement de vérifier le répertoire (pour trouver la différence) et de vérifier votre script build.gradle (vous pouvez changer le nom de l'apk ici, quelque chose comme ci-dessous):

applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def newFileName = "whatever you want to name it";
            def apk = output.outputFile;
            output.outputFile = new File(apk.parentFile, newFileName);
        }
    }
Jing Li
la source
2
Mon problème était que j'ajoutais la version de l'application dans le nom de l'APK mais la version de l'application a le format xyz et le "." (point) dans la dénomination était à l'origine des erreurs. N'oubliez donc pas d'autres points que celui avant apk :)
DraganescuValentin
20

Assurez-vous que vous n'avez pas d' apostrophe ou & sur votre chemin

Rim Gazzah
la source
Le «&» était ce qui m'empêchait de compiler. Merci @Rim Gazzeh
Marka A
19

Assurez-vous qu'il existe des configurations de prise en compte de la notation dans l' exécution / le débogage >> avant la section de lancement :

Comme cette image

Iman Marashi
la source
17

J'ai été témoin d'un problème similaire généralement lorsque je change de branche git. Pour moi, arrêter Android Studio rm -rfv ~/Library/Caches/AndroidStudio*et redémarrer Android Studio est le ticket.

user213493
la source
Mon problème similaire a été résolu par cette méthode. Je renomme les fichiers apk dans la version gradle pour ajouter le numéro de version au fichier, en essayant de déboguer mon activité principale essayait d'exécuter le mauvais nom de fichier apk (numéro de version précédent). Je ne sais pas quand cela a commencé, mais cela fonctionnait bien jusqu'à ce que ce ne soit pas le cas.
David
Cache studio Android c'est un très gros problème!
GeekHades
C'est. J'ai juste (encore) incrémenté mon numéro de build, cela change le nom du fichier apk, encore une fois j'ai ce problème.
David
13

Dans Android Studio 3.1.1, sélectionnez Fichier | Projet de synchronisation avec des fichiers Gradle.

Dans Android Studio 3, sélectionnez Fichier | Synchroniser.

Exécutez à nouveau votre projet.

l'amour en direct
la source
Dans Studio v3.1.1, Fichier -> Projet de synchronisation avec des fichiers Gradle. et vous êtes prêt à partir
Napolean
Ensuite, dans un champ de la barre d'outils supérieure (avec des icônes), à côté de l'icône du marteau, vous devez retourner «app» en arrière, dans la liste déroulante de configuration
CodeToLife
11

L'année est 2018. La version d'Android Studio est 3.2.0 alpha3 et nous avons toujours ce problème. Comme rien de ce qui précède n'a fonctionné pour moi, voici mes 2 cents:

Chaque fois que cela se produit, je génère juste l'apk à partir de la ligne de commande:

gradlew assembleDebug

METTRE À JOUR

Supprimer le dossier .AndroidStudio[version]et perdre toutes vos préférences et caches ... semble résoudre le problème

Androiderson
la source
1
mais cela ne fonctionne que pour un build? si vous apportez d'autres modifications et appuyez sur le bouton "jouer", cela pousse simplement l'ancien apk et ne reconstruit pas pour les modifications. Si ennuyeux, wtf pensaient-ils
behelit
7

Dans mon cas, j'utilisais un caractère spécial dans le chemin du fichier de mon application. J'ai fermé le studio Android et supprimé le « caractère de mon chemin de fichier app. Tout a bien fonctionné lorsque j'ai rouvert le projet.

Code immortel
la source
Oui, idéalement, Android Studio devrait être suffisamment intelligent pour empêcher les utilisateurs d'utiliser des caractères spéciaux dans leur chemin de fichier. Ou mieux j'aurais dû suivre les bonnes pratiques de programmation moi-même :)
Code Immortel
6

J'ai résolu la construction d'un apk en utilisant l'option Build de la fenêtre supérieure et Build APK. Pas besoin de faire quelque chose de bizarre.

Mun0n
la source
6

Pour les utilisateurs comme Unix (Linux / MacOs X), au lieu de supprimer ~ / .gradle / caches /, en ligne de commande:

$ cd path_to_you_project
$ touch build.gradle

Demandez ensuite à Android Studio de créer l'APK, il réinitialisera le cache gradle lui-même.

Jean-Marc Delafont
la source
5

Mon problème est que j'ajoutais le numéro de version à l'APK. Changer le numéro de version et resynchroniser Gradle a résolu le problème pour moi.

def appendVersionNameVersionCode(variant, defaultConfig) {
    variant.outputs.each { output ->
        if (output.zipAlign) {
            def file = output.outputFile
            def removeApp = file.name.replace("app-", "")
            def removeType = removeApp.replace("-release", "")
            def fileName = removeType.replace(".apk", "." + defaultConfig.versionName + ".apk")
            output.outputFile = new File(file.parent, fileName)
        }

        def file = output.packageApplication.outputFile
        def removeApp = file.name.replace("app-", "")
        def removeType = removeApp.replace("-release", "")
        def fileName = removeType.replace(".apk", "." + defaultConfig.versionName + ".apk")
        output.packageApplication.outputFile = new File(file.parent, fileName)
    }
}
Lou Morda
la source
Avez-vous appelé appendVersionNameVersionCode dans gradle lui-même?
Dhrupal
3

Build ---> Build APK (s) et assurez-vous que cela fonctionne

Kadir altınok
la source
2

Fichier -> Invalider les caches / redémarrer

dvrm
la source
2

Si vous avez essayé toutes les réponses ci-dessus et que cela n'a pas fonctionné, essayez de désactiver la fonction "Instant Run". Celui-ci m'a aidé après toutes les tentatives.

Fichier -> Paramètres -> Build, Execution, Deployment -> Instant Run -> Décochez la case là

AnZ
la source
2

J'ai également eu ce problème, après avoir nettoyé la version. Pour moi, la solution était de synchroniser le gradle et cela a fonctionné pour moi.

u_pendra
la source
2

Dans mon cas, le problème était que la configuration de débogage devenait invalide d'une manière ou d' une autre, même si le nom, la classe ou le package de la méthode de test n'avait pas changé.

J'ai supprimé les configurations de Run-> Edit Configurations, ici:

entrez la description de l'image ici

Le studio Android en créera automatiquement un nouveau.

MiguelSlv
la source
Ensuite, vous devez cliquer sur le projet File / Re-Import Gradle. Cela recréera la configuration d'exécution supprimée.
Juan Ignacio Barisich
1

Face au même problème avec Gradle 1.5

J'ai dû nettoyer les fichiers de build:

Build -> Clean project

Et créez un APK pour forcer la compilation et la synchronisation complètes des fichiers Gradle:

Build -> Build APK

Je ne sais toujours pas pourquoi ni comment c'est arrivé.

Simon PA
la source
1

si vous utilisez Linux, essayez de définir l'autorisation d'écriture dans le dossier app / build.

Catalin Clabescu
la source
1

J'ai eu le même problème. c'était dû à un faux nom sur le chemin. il y avait un caractère spécial dans le chemin comme celui-ci: C: \ User \ My App \ Projekte-Tablet & Handy j'ai supprimé le caractère "&" et cela a bien fonctionné.

Orientos
la source
1

Mon problème était d'inclure des minutes dans le nom de fichier - il cherchait appname_debug_0.9.0.1_170214_2216.apk lorsque le fichier généré était appname_debug_0.9.0.1_170214_2217.apk, le code de nom de fichier de sortie (attrapé d'ailleurs) était clairement appelé de deux points différents dans la construction.

applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def project = "appname"
            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('yyMMdd_HHmm')

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

            output.outputFile = new File(output.outputFile.parent, newApkName)
        }
    }
Ian Spencer
la source
d'où vient ce bloc?
Nerius Jok
C'était à partir d'un autre thread d'échange de pile de la première fois que je configurais le projet (et je n'avais que très peu d'idée de ce que je faisais - rien n'y changeait). Comme cette partie de Gradle a été modifiée plusieurs fois, il s'agit probablement d'un code obsolète.
Ian Spencer
1

Le problème pour moi était que d'une manière ou d'une autre, il ne pouvait vraiment pas trouver l'apk, alors que l'apk existait.

The APK file /Users/Paul/AndroidStudioProjects/android-tv-launcher/ui/build/outputs/apk/nameofapk.apk does not exist on disk.
Error while Installing APK

Tout ce que j'avais à faire, c'était faire un clic droit sur le chemin relatif apk-copy, et juste

adb install -r <paste of relative path>

Et l'apk a été installé et bon pour aller. Ce problème s'est produit sur OSX pour moi.

Boldijar Paul
la source
1

Résolu en mai 2018 avec le nouveau Android Studio 3.1. Supprimez les répertoires .gradle, .idea et build dans votre dossier d'application. Essayez ensuite de l'exécuter à nouveau et vous ne verrez pas l'erreur.

Gerardo Suarez
la source
1

Synchroniser, nettoyer, reconstruire et invalider le cache et redémarrer

Aucun d'eux ne travaillait pour moi.

J'ai supprimé les fichiers APK et output.json dans le dossier de publication et le dossier de débogage, puis j'ai essayé de synchroniser, de nettoyer et de créer, puis cela a bien fonctionné.

GiridharaSPK
la source
0

Je modifie le fichier build.gradle une petite information, et cliquez sur "Synchroniser maintenant", ok.

凤 清 云
la source
0

Supprimez le répertoire ~ / .gradle / caches /. Vous pouvez le faire lorsque Android Studio est ouvert. (Référez-vous à l'installation d'un nom de package incorrect). Appuyez sur l'icône "Synchroniser le projet avec les fichiers Gradle" sur Android Studio Exécutez le projet et le chemin d'accès à distance sera correct.

Reportez-vous à la réponse @ Android Studio obtient un nom de package incorrect lors de l'exécution de .apk

masque
la source
0

Assurez-vous que dans le chemin généré dans vos journaux -dans votre cas:

/Users/MyApplicationName/app/build/outputs/apk/app-debug.apk

le dossier "sorties" a en effet un dossier "apk".

C'était mon problème, s'il n'est pas là, vous devrez exécuter la tâche "assembleRelease" en gradle en suivant la capture d'écran ci-dessous;

Étapes à suivre pour exécuter l'assemblage gradleRelease Ensuite, le dossier sera généré.

Amgad
la source
0

Rien ci-dessus ne m'a aidé, mais je l'ai compris en passant à une autre saveur dans le panneau Outils de construction, puis en revenant à la version requise.

Dmytro Karataiev
la source
0

modifiez le fichier: build.gradle (répertoire de l'application). en fait: vous ne devez pas modifier ce fichier, uniquement par celui-ci pour obtenir des conseils de synchronisation, puis synchroniser le projet.

兰 坡 阳
la source