O arquivo APK não existe no disco

224

Quando estou tentando o aplicativo de depuração no Android Studio, essa saída de log é exibida:

O arquivo APK /Users/MyApplicationName/app/build/outputs/apk/app-debug.apk não existe no disco.

Reiniciei o Android Studio, mas não consigo resolver esse problema. Como posso resolver isso? Obrigado

sorunluadam
fonte
9
Como posso resolver isso? compilar um apk
Tim
1
@TimCastelijns Na verdade, eu me pergunto se o Android Studio não é inteligente o suficiente para incluir a tarefa apk de criação de depuração na tarefa do aplicativo deb. Gradle deve ser feito para isso.
Trilionio
1
@Trilarion Por padrão, o AS executa a tarefa assembleDebug do gradle, que compila um apk de depuração. Algo parece errado aqui, o que requer compilação Manual
Tim
2
Adicionar o Gradle Make-Aware corrigiu esse problema para mim. stackoverflow.com/a/25871525/1712417
Iammesol
2
Tente adicionar "Gradle Make-Aware" stackoverflow.com/questions/18256177/…
Andy Cheng

Respostas:

463

Clique nesta opção para resolver o erro:

Executar: Exibir> Janelas de Ferramentas> Gradle> [projeto]> Tarefas> compilar> compilar

Android 上 的 Android
fonte
6
Caracteres especiais no nome do diretório do projeto também geram esse erro.
NP
50
Isso não funcionou para mim. Aconselho respostas que expliquem por que eles devem funcionar, em vez de apenas dizer ao leitor o que fazer, para que eles possam entender / evitar / resolver esses erros posteriormente.
person27
3
Você explicaria o que exatamente isso faz e por que esse problema aconteceu?
Hamidreza Sahraei
entre "caracteres especiais" também incluem números. É ridículo, perdeu muito tempo com isso. facepalm :)
alexr101
5
Esse botão não existe na versão mais recente do Android Studio, mas acredito que seja a opção "Sincronizar projeto com arquivos Gradle", que funcionou para mim.
Nasch
208

Se você enfrentar esse problema após a atualização para o Android Studio V 3.1, tente o abaixo.

Eu estava enfrentando esse mesmo problema quando atualizei para o Android Studio 3.1. Todas as outras soluções que encontrei aqui eram bastante manuais, porque você precisa limpar e reconstruir todas as vezes, o que não é bom. Mas, graças à resposta de Iman Marashi , consegui resolvê-lo.

Vá para Executar -> Editar configurações ...

Certifique-se de ter uma "Marca com reconhecimento de gradiente" na seção Antes do lançamento:

Configurações de execução / depuração

Para adicioná-lo, clique no sinal + e selecione Marca sensível ao gradiente e um pop-up será exibido, deixe o campo de texto vazio e clique em OK e OK .

Sete
fonte
13
Essa é a correção para a atualização 3.1 recente. Para mim, o primeiro sintoma desse problema foi o APK não "responder" às alterações no código. Agora está claro para mim que o novo APK não estava sendo construído corretamente.
David Gay
Esta resposta pode resolver para mim. Atualizei 3.1 e recebo este erro.
ZarNi Myo Sett vence
Seu senhor é um salva-vidas.
Joel Libby
UAU! Você merece 1000 votos a esse respeito! O Android Studio merece 1000 votos negativos!
1QuickQuestion
Obrigado, esta é definitivamente a resposta certa e deve ser a mais aceita
Petar Marijanovic
68

No meu caso, a execução do "Sync Project with Gradle Files" ajudou. Nem reiniciar o Andoid Studio nem limpar o cache fizeram nada.

Bartek
fonte
1
Obrigado. Isso também me ajuda. Nem reiniciar o Andoid Studio nem limpar o cache não ajudaram.
Ivan.panasiuk 23/06
Fiz o truque depois de alterar o script de nomenclatura que está em um arquivo separado do meu normal build.gradle, para que o Android Studio não percebesse a alteração automaticamente e me pedisse para sincronizar.
Magnus W
Esta é a verdadeira resposta.
precisa saber é o seguinte
3
File -> Sync Project with Gradle Files stackoverflow.com/a/19932896/2527204
Marlon
Teve este problema ao tentar executar um teste de unidade. Ele estava pedindo um dispositivo para executar um teste de unidade.
Sergio
34

Se você apenas quer saber a conclusão, vá para a última seção. Obrigado.

Geralmente, quando o projeto de construção falha, alguns truques comuns que você pode tentar:

  • Construir -> Limpar Projeto
  • Verificar variantes de compilação
  • Reinicie o Android Studio (como você mencionou)

Mas, para ser mais específico ao seu problema, quando o Android Studio não conseguiu encontrar o arquivo APK no disco. Isso significa que o Android Studio realmente construiu o projeto com sucesso e também gerou o APK; no entanto, por algum motivo, o Android Studio não consegue encontrar o arquivo.

Nesse caso, verifique o diretório impresso de acordo com o log. É útil.

Por exemplo:

Com o Android Studio 2.0 Preview (compilação 143.2443734).

  1. Fazer checkout para um commit específico (para que ele seja desanexado do head): git checkout [commit_hash]
  2. Executar projeto
  3. O Android Studio informa: O arquivo APK / Users / MyApplicationName / app / build / outputs / apk / app-debug-HEAD.apk não existe no disco
  4. Vá para o diretório, existe um arquivo chamado: app-debug- (HEAD.apk (com parênteses extras)
  5. Executar ramificação git

    * (HEAD destacado em 1a2bfff)

Então, aqui você pode ver, devido ao erro do meu script de compilação gradle , a nomeação de arquivos está de alguma forma errada.

O exemplo acima é apenas um cenário que pode levar ao mesmo problema, mas não é necessário ter a mesma causa raiz que a sua.

Como resultado, eu recomendo fortemente que você verifique o diretório (para encontrar a diferença) e o script build.gradle (você pode alterar o nome do apk, algo como abaixo):

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
fonte
2
Meu problema foi que eu estava adicionando a versão do aplicativo no nome do APK, mas a versão do aplicativo tem o formato xyz e o "." (ponto) na nomeação estava causando os erros. Então lembre-se há outros pontos, mas o anterior apk :)
DraganescuValentin
20

Certifique-se de não ter apóstrofo ou & no seu caminho

Rim Gazzah
fonte
O '&' era o que estava me impedindo de compilar. Obrigado @Rim Gazzeh
Marka A
19

Certifique-se de que haja a seção Reconhecer classificação em Configurações de execução / depuração >> antes da seção de inicialização :

Como esta imagem

Iman Marashi
fonte
17

Testemunhei um problema semelhante geralmente quando estou alternando ramos git. Para mim, desligar o Android Studio rm -rfv ~/Library/Caches/AndroidStudio*e reiniciar o Android Studio é o bilhete.

user213493
fonte
Meu problema semelhante foi resolvido por esse método. Renomeio os arquivos apk na compilação gradle para anexar o número da versão ao arquivo, tentando depurar. Minha atividade principal era tentar executar o nome do arquivo apk errado (número da versão anterior). Não tenho certeza quando isso começou, mas estava funcionando bem até que não.
David
Cache do estúdio Android é um problema muito grande!
GeekHades
Isto é. Acabei (de novo) incrementar meu número de compilação, isso altera o nome do arquivo apk, e novamente tenho esse problema.
David
13

No Android Studio 3.1.1, selecione Arquivo | Sincronizar projeto com arquivos Gradle.

No Android Studio 3, selecione Arquivo | Sincronizar.

Em seguida, execute seu projeto novamente.

amor ao vivo
fonte
No Studio v3.1.1, Arquivo -> Sincronizar projeto com arquivos Gradle. e você é bom para ir
Napoleão
Em seguida, em um campo em barra de ferramentas superior (com icones), no próximo de martelo ícone você tem que voltar 'app' para trás, em suspenso configuração
CodeToLife
11

O ano é 2018. A versão do Android Studio é 3.2.0 alpha3 e ainda temos esse problema. Como nenhuma das opções acima funcionou para mim, aqui estão meus 2 centavos:

Toda vez que isso acontece, eu apenas gero o apk na linha de comando:

gradlew assembleDebug

ATUALIZAR

Excluir a pasta .AndroidStudio[version]e perder todas as suas preferências e caches ... parece resolver o problema

Androiderson
fonte
1
mas isso só funciona para uma compilação? se você fizer outras alterações e pressionar o botão "reproduzir", ele apenas pressiona o apk antigo e não é reconstruído para as alterações. Tão chato, wtf eles estavam pensando
behelit
7

No meu caso, eu estava usando um caractere especial no caminho do arquivo do aplicativo. Fechei o Android Studio e removi o caractere ' do caminho do arquivo do aplicativo. Tudo funcionou bem quando reabri o projeto.

Código imortal
fonte
Sim, idealmente, o Android Studio deve ser inteligente o suficiente para impedir que os usuários usem caracteres especiais no caminho do arquivo. Ou melhor, eu deveria ter seguido as boas práticas de programação eu mesmo :)
CÓDIGO IMORTAL
6

Resolvi criar um apk usando a opção Compilar na janela superior e Compilar APK. Não há necessidade de fazer algo estranho.

Mun0n
fonte
6

Para usuários do tipo Unix (Linux / MacOs X), em vez de remover ~ / .gradle / caches /, na linha de comando, faça:

$ cd path_to_you_project
$ touch build.gradle

Em seguida, peça ao Android Studio para criar o APK; ele redefinirá o cache do gradle.

Jean-Marc Delafont
fonte
5

Meu problema é que eu estava anexando o número da versão ao APK. Alterar o número da versão e sincronizar novamente o Gradle corrigiu o problema para mim.

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
fonte
Você chamou appendVersionNameVersionCode na própria gradle?
Dhrupal
3

Crie ---> Crie APK (s) e verifique se ele funciona

Kadir altınok
fonte
2

Arquivo -> invalidar caches / reiniciar

dvrm
fonte
2

Se você tentou todas as respostas acima e não funcionou, tente desativar o recurso "Instant Run". Este me ajudou depois de todas as tentativas.

Arquivo -> Configurações -> Compilação, Execução, Implantação -> Execução Instantânea -> Desmarque a caixa de seleção

AnZ
fonte
2

Eu também tive esse problema, depois de limpar a compilação. Para mim, a solução foi apenas sincronizar o gradle e funcionou para mim.

u_pendra
fonte
2

No meu caso, o problema foi que a configuração da depuração se tornou inválida de alguma forma, mesmo que o nome do método de teste, classe ou pacote não tenha sido alterado.

Excluí as configurações de Executar-> Editar configurações, aqui:

insira a descrição da imagem aqui

O estúdio Android criará um novo automaticamente.

MiguelSlv
fonte
Então você precisa clicar no arquivo / Reimportar o projeto Gradle. Isso recriará a configuração de execução excluída.
Juan Ignacio Barisich 19/07/19
1

Enfrentou o mesmo problema com o gradle 1.5

Eu tive que limpar os arquivos de compilação:

Construir -> Projeto limpo

E crie um APK para forçar a compilação e a sincronização completas dos arquivos gradle:

Construir -> Construir APK

Ainda não sei por que ou como aconteceu.

Simon PA
fonte
1

se você estiver usando Linux, tente configurar a permissão de gravação na pasta app / build.

Catalin Clabescu
fonte
1

Eu tive o mesmo problema. foi devido ao nome falso no caminho. havia um caractere especial no caminho como este: C: \ Usuário \ Meu aplicativo \ Projekte-Tablet & Handy Excluí o caractere "&" e funcionou bem.

Orientos
fonte
1

Meu problema foi incluir minutos no nome do arquivo - ele procurou appname_debug_0.9.0.1_170214_2216.apk quando o arquivo gerado foi appname_debug_0.9.0.1_170214_2217.apk, de modo que o código do nome do arquivo de saída (capturado de outro lugar) estava claramente sendo chamado de dois pontos diferentes na construção.

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
fonte
de onde é esse bloco?
Nerius Jok
Era de algum outro encadeamento de troca de pilhas desde quando eu estava configurando o projeto (e tinha muito pouca ideia do que estava fazendo - nada mudou lá). Como essa parte do Gradle foi alterada algumas vezes, é provável que o código esteja obsoleto agora.
Ian Spencer
1

O problema para mim foi que, de alguma forma, ele realmente não conseguiu encontrar o apk, enquanto o apk existe.

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

Tudo o que eu precisava fazer era clicar com o botão direito do mouse no caminho relativo da cópia apk e apenas

adb install -r <paste of relative path>

E o apk foi instalado e pronto. Esse problema aconteceu no OSX para mim.

Boldijar Paul
fonte
1

Resolvido em maio de 2018 com o novo Android Studio 3.1. Exclua o .gradle, .idea e crie diretórios dentro da pasta do aplicativo. Em seguida, tente executá-lo novamente e você não verá o erro.

Gerardo Suarez
fonte
1

Sincronizar, limpar, reconstruir e invalidar cache e reiniciar

Nenhum deles funcionou para mim.

Excluí os arquivos APK e output.json na pasta de lançamento e na pasta de depuração e tentei sincronizar, limpar e criar, e funcionou bem.

GiridharaSPK
fonte
0

Eu mudo o arquivo build.gradle uma pequena informação e clique em "Sincronizar agora", apenas ok.

凤 清 云
fonte
0

Remova o diretório ~ / .gradle / caches /. Não há problema em fazer isso enquanto o Android Studio está aberto. (Consulte pm instalando o nome do pacote incorreto) Pressione o ícone "Sincronizar projeto com arquivos Gradle" no Android Studio Execute o projeto e o caminho remoto estará correto.

Consulte a resposta @ Android Studio com o nome do pacote errado ao executar o .apk

mascarar
fonte
0

Certifique-se de que, no caminho gerado em seus logs, no seu caso:

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

A pasta "outputs" realmente tem uma pasta "apk".

Esse foi o meu problema, se não estiver lá, você precisará executar a tarefa "assembleRelease" gradle seguindo a captura de tela abaixo;

Etapas para executar a tarefa assembleRelease gradle Em seguida, a pasta será gerada.

Amgad
fonte
0

Nada acima me ajudou, mas eu descobri isso mudando para outro sabor no painel Ferramentas de Construção e depois voltando para o necessário.

Dmytro Karataiev
fonte
0

modifique o arquivo: build.gradle (diretório do aplicativo). de fato: você não deve alterar esse arquivo, apenas para obter dicas de sincronização e depois sincronizar o projeto.

兰 坡 阳
fonte