Файл APK не существует на диске


224

Когда я пытаюсь отладить приложение на Android Studio, выдает следующее:

Файл APK /Users/MyApplicationName/app/build/outputs/apk/app-debug.apk не существует на диске.

Я перезапустил Android Studio, но не могу решить эту проблему. Как я могу решить это? Спасибо


9
Как я могу решить это? скомпилировать apk
Тим

1
@TimCastelijns Я действительно задаюсь вопросом, не является ли Android Studio достаточно умным, чтобы включить задачу apk create debug в задачу приложения deb. Gradle должен быть сделан для этого.
Триларион

1
@Trilarion По умолчанию AS выполняет задачу сборки GradeDebug, которая компилирует отладочный apk. Что-то здесь не так, что требует ручной компиляции
Тим

2
Добавление Gradle Make-Aware устранило эту проблему для меня. stackoverflow.com/a/25871525/1712417
Iammesol

2
Попробуйте добавить «Gradle Make-Aware» stackoverflow.com/questions/18256177/…
Энди Ченг

Ответы:


463

Нажмите эту опцию, чтобы устранить ошибку:

Выполнить: View> Tool Windows> Gradle> [проект]> Задачи> build> build


6
Специальные символы в имени каталога вашего проекта также будут вызывать эту ошибку.
NP

50
Это не сработало для меня вообще. Я бы посоветовал ответы, которые объясняют, почему они должны работать, а не просто рассказывают читателю, что делать, чтобы они могли понять / избежать / исправить эти ошибки позже.
person27

3
Не могли бы вы объяснить, что именно это делает и почему возникла эта проблема?
Хамидреза Сахраэй

Кстати, «Специальные символы» также включают цифры. Это смешно, тратится впустую кучу времени на это. facepalm :)
alexr101

5
Этой кнопки нет в последней версии Android Studio, но я считаю, что это опция «Синхронизировать проект с файлами Gradle», которая сработала для меня.
нащ

208

Если вы столкнулись с этой проблемой после обновления до Android Studio V 3.1, попробуйте следующее.

Я столкнулся с этой же проблемой при обновлении до Android Studio 3.1. Все остальные решения, которые я нашел здесь, были довольно ручными, потому что вы должны чистить и восстанавливать каждый раз, что совсем нехорошо. Но благодаря ответу Имана Мараши здесь я смог его решить.

Перейти в Run -> Редактировать конфигурации ...

Убедитесь, что в разделе «Перед запуском» есть «Марка с поддержкой Gradle»:

Запуск / отладка конфигураций

Чтобы добавить его, нажмите знак « и выберите « Gradle -ware Make», и появится всплывающее окно, просто оставьте текстовое поле пустым и нажмите « OK» и « OK» .


13
Это исправление для последнего обновления 3.1. Для меня первым признаком этой проблемы было то, что APK не «реагирует» на изменения в коде. Теперь мне ясно, что новый APK не работал должным образом.
Дэвид Гей,

Этот ответ может решить для меня. Я обновил 3.1 и получил эту ошибку.
Зарни Мио Сетт Win

Вы сир, спасатель жизни.
Джоэл Либби,

ВОТ ЭТО ДА! Вы заслуживаете 1000 голосов за это! Android Studio заслуживает 1000 голосов вниз!
1QuickQuestion

Спасибо, это, безусловно, правильный ответ, и он должен быть принят
Petar Marijanovic

68

В моем случае помогло выполнение «Синхронизировать проект с файлами Gradle». Ни перезапуск Andoid Studio, ни очистка кеша ничего не сделали.


1
Спасибо. Мне тоже это помогает. Ни перезапуск Andoid Studio, ни очистка кэша не помогли.
ivan.panasiuk

Сделал свое дело для меня после изменения сценария именования, который находится в отдельном файле от моего обычного build.gradle, так что Android Studio не принял автоматически изменения и не предложил мне синхронизироваться.
Магнус W

Это настоящий ответ.
Азизбекян,

3
File -> Sync Project with Gradle Files stackoverflow.com/a/19932896/2527204
Марлон

Эта проблема пыталась запустить юнит-тест. Он просил устройство для запуска модульного теста.
Серхио

34

Если вы просто хотите узнать заключение, перейдите к последнему разделу. Спасибо.

Обычно, когда сборка проекта заканчивается неудачей, вы можете попробовать несколько распространенных приемов:

  • Построить -> Чистый проект
  • Проверьте варианты сборки
  • Перезапустите Android Studio (как вы упомянули)

Но чтобы быть более конкретным в вашей проблеме - когда Android Studio не может найти файл APK на диске. Это означает, что Android Studio фактически успешно построила проект, а также сгенерировала APK, однако по какой-то причине Android Studio не может найти файл.

В этом случае, пожалуйста, проверьте распечатанный каталог согласно журналу. Это полезно

Например:

С Android Studio 2.0 Preview (сборка 143.2443734).

  1. Checkout для определенного коммита (так, чтобы он оторвался от головы): git checkout [commit_hash]
  2. Запустить проект
  3. Android Studio сообщает: APK-файл / Users / MyApplicationName / app / build / output / apk / app-debug-HEAD.apk не существует на диске
  4. Перейдите в каталог, там есть файл с именем app-debug- (HEAD.apk (с дополнительными скобками)
  5. Запустите git branch

    * (ГОЛОВА отсоединена в 1a2bfff)

Итак, здесь вы можете видеть, что из-за ошибки моего скрипта сборки имени , именование файлов как-то неверно.

Приведенный выше пример - это всего лишь один сценарий, который может привести к той же проблеме, но не обязательно должен быть той же основной причиной, что и ваша.

В результате я настоятельно рекомендую вам проверить каталог (чтобы найти разницу) и проверить ваш скрипт build.gradle (вы можете изменить имя apk там, как показано ниже):

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
Моя проблема заключалась в том, что я добавлял версию приложения в имя APK, но версия приложения имеет формат xyz и символ "." (точка) в именовании было причиной ошибок. Так что не запомните никаких других точек, кроме той, что перед apk :)
DraganescuValentin

20

Убедитесь, что у вас нет апострофа или & на вашем пути


'&' Было то, что мешало мне компилировать. Спасибо @Rim Gazzeh
Марка

19

Убедитесь, что в настройках Run / Debugging >> есть настройка Grade -ware Make в разделе >> перед запуском :

Как это изображение


17

Обычно я был свидетелем подобной проблемы, когда переключал git-ветки. Для меня закрытие Android Studio rm -rfv ~/Library/Caches/AndroidStudio*и перезапуск Android Studio - это билет.


Моя похожая проблема была решена этим методом. Я переименовываю apk-файлы в сборке gradle, чтобы добавить номер версии к файлу, пытаясь отладить свою основную деятельность - пытаться запустить неправильное имя apk-файла (предыдущий номер версии). Не уверен, когда это началось, но все работало нормально, пока не вышло.
Дэвид

Android студия кеша это очень большая проблема!
GeekHades

Это. Я только что (снова) увеличил мой номер сборки, это меняет имя файла apk, снова у меня есть эта проблема.
Дэвид

13

В Android Studio 3.1.1 выберите Файл | Синхронизировать проект с файлами Gradle.

В Android Studio 3 выберите Файл | Синхронизировать.

Затем запустите ваш проект снова.


В Studio v3.1.1 Файл -> Синхронизировать проект с файлами Gradle. и тебе
пора

Затем в поле на верхней панели инструментов (с иконками), рядом со значком молотка, вы должны вернуть «app» обратно, в раскрывающемся
списке

11

Год 2018. Версия Android Studio - 3.2.0 alpha3, и мы до сих пор сталкиваемся с этой проблемой. Поскольку ничего из вышеперечисленного не помогло мне, вот мои 2 цента:

Каждый раз, когда это происходит, я просто генерирую apk из командной строки:

gradlew assembleDebug

ОБНОВИТЬ

Удаление папки .AndroidStudio[version]и потеря всех ваших предпочтений и кешей ... похоже, решает проблему


1
но это работает только для одной сборки? если вы сделаете дальнейшие изменения и нажмете кнопку «play», он просто выталкивает старый apk и не перестраивается для изменений. Так досадно, что они думают
бехелит

7

В моем случае я использовал специальный символ в пути к файлу приложения. Я закрыл Android Studio и удалил символ ' из пути к файлу моего приложения. Все работало нормально, когда я снова открыл проект.


Да, в идеале Android Studio должна быть достаточно умной, чтобы пользователи не могли использовать специальные символы в своем пути к файлу. Или лучше я сам следовал хорошей практике программирования :)
Бессмертный код

6

Я решил собрать apk используя опцию Build из верхнего окна и Build APK. Не нужно делать что-то странное.


6

Для пользователей, подобных Unix (Linux / MacOs X), вместо удаления ~ / .gradle / caches / в командной строке выполните:

$ cd path_to_you_project
$ touch build.gradle

Затем попросите Android Studio собрать APK, он сам сбросит кеш gradle.


5

Моя проблема в том, что я добавлял номер версии в APK. Изменение номера версии и повторная синхронизация Gradle устранили проблему для меня.

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

Вы вызывали appendVersionNameVersionCode в самом gradle?
Dhrupal



2

Если вы попробовали все приведенные выше ответы, но это не помогло, попробуйте отключить функцию «Мгновенный запуск». Этот помог мне после всех попыток.

Файл -> Настройки -> Сборка, выполнение, развертывание -> Мгновенный запуск -> Снимите флажок там


2

Я также получил эту проблему, после очистки сборки. Для меня решением было просто синхронизировать Gradle, и это сработало для меня.


2

В моем случае проблема заключалась в том, что конфигурация отладки стала недействительной , даже если имя, класс или пакет тестового метода не изменились.

Я удалил конфигурации из Run-> Edit Configurations, здесь:

введите описание изображения здесь

Студия Android создаст новую автоматически.


Затем вам нужно нажать на проект File / Re-Import Gradle. Это восстановит удаленную конфигурацию запуска.
Хуан Игнасио Барисич

1

Столкнулся с той же проблемой с Gradle 1.5

Я должен был очистить файлы сборки:

Построить -> Чистый проект

И создайте APK для принудительной полной компиляции и синхронизации файлов Gradle:

Построить -> построить APK

Я до сих пор не знаю, почему или как это случилось.



1

У меня такая же проблема. это было из-за ложного имени в пути. в пути был специальный символ: C: \ User \ My App \ Projekte-Tablet & Handy Я удалил символ "&", и он работал хорошо.


1

Моя проблема заключалась в том, что я включил минуты в имя файла - он искал appname_debug_0.9.0.1_170214_2216.apk, когда сгенерированный файл был appname_debug_0.9.0.1_170214_2217.apk, поэтому выходной код имени файла (набранный из другого места) явно вызывался из двух разных точек в сборке.

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

откуда этот блок?
Нериус Джок

Это было из какой-то другой ветки обмена стеками, когда я впервые настраивал проект (и очень мало знал о том, что я делал - там ничего не изменилось). Поскольку эта часть Gradle менялась несколько раз, она, скорее всего, устарела.
Ян Спенсер

1

Проблема для меня заключалась в том, что каким-то образом он не мог найти apk, в то время как apk существует.

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

Все, что мне нужно было сделать, это щелкнуть правой кнопкой мыши по относительному пути apk-copy и просто

adb install -r <paste of relative path>

И апк был установлен и готов к работе. Эта проблема произошла на OSX для меня.


1

Решено в мае 2018 года с новой Android Studio 3.1. Удалите .gradle, .idea и соберите каталоги внутри папки вашего приложения. Затем попробуйте запустить его снова, и вы не увидите ошибку.


1

Синхронизация, очистка, восстановление и аннулирование кэша и перезапуск

Никто из них не работал для меня.

Я удалил файлы APK и output.json в папке выпуска и в папке отладки, а затем попытался выполнить синхронизацию, очистку и сборку, после чего все работало нормально.


0

Я изменяю файл build.gradle, и нажимаю «Синхронизировать сейчас», все в порядке.


0

Удалите каталог ~ / .gradle / caches /. Это нормально, когда Android Studio открыта. (Обратитесь к разделу «Установка неправильного имени пакета». Нажмите значок «Синхронизировать проект с файлами Gradle» в Android Studio. Запустите проект, и удаленный путь будет правильным).

См. Ответ @ Android Studio неверно называет имя пакета при запуске .apk


0

Убедитесь, что в пути, созданном в ваших журналах, - в вашем случае:

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

В папке «output» действительно есть папка «apk».

Это была моя проблема, если ее там нет, вам нужно будет запустить задачу "executeRelease" в gradle, следуя приведенному ниже скриншоту;

Шаги, чтобы запустить сборку gradleRelease задача Тогда папка будет сгенерирована.


0

Ничто из вышеперечисленного не помогло мне, но я понял это, переключившись на другой вариант на панели «Инструменты сборки», а затем снова переключившись на нужный.


0

измените файл: build.gradle (каталог приложения). на самом деле: вы не должны изменять этот файл, только так, чтобы получить советы по синхронизации, а затем синхронизировать проект.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.