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


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


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 .


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.


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

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


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


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.


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.


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


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.


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.


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.


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

Você chamou appendVersionNameVersionCode na própria gradle?
— Dhrupal


2

Arquivo -> invalidar caches / reiniciar


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


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.


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.


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.


1

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


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.


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

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.


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.


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.


0

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


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


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.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.