Файл 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.