«Приложение не установлено» Ошибка на Android

425

У меня есть программа, работающая в эмуляторе Android. Время от времени я создавал подписанный .apk и экспортировал его в свой HTC Desire для тестирования. Все было хорошо.

На моем последнем экспортированном .apk я получаю сообщение об ошибке «Приложение не установлено» при попытке установить .apk. На эмуляторах работает нормально.

Поскольку я в основном тестировал на эмуляторах и только время от времени экспортировал в реальный телефон, я не уверен, когда это произошло. Какова вероятная причина того, что он не устанавливается на физический телефон, а работает нормально в эмуляторах?

Я попытался перезагрузить телефон и удалить существующий .apk, не устраняет ошибку.

Entropy1024
источник
5
Когда вы говорите, что удалили существующий .apk, вы имеете в виду, что вы удалили приложение с телефона? Если нет, удалите приложение, прежде чем пытаться установить его снова.
Тельмо Маркес
9
То, что сказал ТомС , беги, adb uninstall your.package.nameа потом adb install /path/to.apk. Я не понимаю, почему это не сработает. Вы что-нибудь изменили в процедуре подписания?
Феликс
2
Вы пытались отладить его непосредственно из Eclipse на устройстве, подключенном к компьютеру, чтобы узнать, говорит ли журнал что-нибудь еще?
Хави
1
Я удалил приложение с помощью опции удаления из диспетчера приложений на телефоне.
Entropy1024
Феликс. Откуда я запускаю эту вещь ADB?
Entropy1024

Ответы:

265

В первую очередь для старых телефонов

Я только столкнулся с App not installedошибкой при попытке установить apk на моем телефоне, который работает на 4.4.2 или KitKat, но мой друг не сталкивался с этой ошибкой на своем телефоне, который работает на 6+. Я попробовал другие решения, такие как удаление старой / отладочной версии приложения, потому что apk был версией выпуска, очистка данных приложения отладки и даже очистка всех моих кэшированных данных. Затем, наконец, я понял, что все, что мне нужно было сделать, это выбрать обе версии подписи при создании моего подписанного apk.

enter image description here

Раньше я только V2 (Full APK Signature)выбирал, но после выбора V1 Jar Signatureя смог успешно установить подписанный APK на моем устройстве 4.4.2. Надеюсь, что это помогает другим!

Крис Гонг
источник
6
Примите во внимание это решение, когда у вас есть старый телефон! У меня Galaxy S4 mini с Android 4.4.2, и я забыл проверить «подпись V1», чтобы он не мог быть установлен в устройстве. После проверки apk устанавливается как брелок.
Хосе Рамон Гарсия
1
@JoseRamonGarcia Забавно, что у меня точно такая же версия телефона и Android, ха-ха! Рад, что это сработало для вас
Крис Гонг
1
Спасибо! Android Studio должна предоставить больше информации об этом при подписании приложения или сделать более очевидным, что он делает, когда вы не V1 (Jar Signature)
ставите
В моем случае я должен добавить эту конфигурацию в файл манифеста Android: installLocation = "internalOnly"
avinash kumar
1
Первоначально я подписал с v2, когда я столкнулся с проблемой. Тогда я подписался только с v1 и тогда все заработало. Я запускаю SDK23 на моем телефоне.
Янтарная
206

Для меня на Android 9 (API 28) отключение Google Play Protect из приложения Play Store сработало, и я смог избавиться от App not Installedошибки.

Чтобы отключить Google Play Protect. Откройте приложение «Play Store» => нажмите на кнопку «Меню» => выберите опцию «Play Protect» => Отключите опции «Сканировать устройство на наличие угроз безопасности».

Касим
источник
4
даже когда я впервые попытался установить свое приложение, Play Protect сказал мне, что он не может проверить, безопасно ли приложение, и я нажал «установить в любом случае», приложение все равно не установилось. это переопределение сработало
user2565663
У меня нет Play Store в эмуляторе Android (API 28).
Джерри Додж
3
Также дело обстоит на Android 8 (только для того, чтобы заполнить заявленный разрыв между 7 и 9).
cleardemon
3
Это отлично работает. Не забудьте вернуть настройки после установки apk.
Рахамат
Большое спасибо, решенные проблемы на моем Xiaomi Redmi 5 Plus
Никола Галлацци
150

У меня была похожая проблема, и это потому, что я пытался установить apk на телефон с предыдущей версией того же самого apk, и оба apks не были подписаны одним и тем же сертификатом. Я имею в виду, когда я использовал тот же сертификат, я мог перезаписать предыдущую установку, но когда я изменил сертификат между версиями, установка была невозможна. Вы используете тот же сертификат?

Javi
источник
9
Да, это тот же сертификат. Я думаю, что у меня было это однажды. Я попытался удалить существующее приложение на телефоне, а также попытался установить не подписанную версию. Тем не менее получить то же сообщение об ошибке.
Entropy1024
2
У меня также была та же проблема для этого (предыдущая версия с другим сертификатом) - если быть точным, я неявно установил ее для использования отладчика. Revmoving решил это (не ваш случай, как показано ниже, но стоит зарегистрироваться здесь)
chesterbr
11
Этот пост имеет более 30 ответов. Я рекомендую: всякий раз, когда вы сталкиваетесь с этой проблемой, наблюдайте журналы устройства при установке приложения. используйте adb logcat. Вы узнаете точную причину сбоя установки. Журнал для моей проблемы "Пакет com.companyname.appname подписи не соответствуют ранее установленной версии; игнорирование!"
Маникандан
Я изменил название пакета. и это сработало. Я понял, что я протестировал несколько приложений с одинаковым именем пакета, поэтому ошибка.
user30478
120

Очевидно, есть много причин этой проблемы. Для меня ситуация была такая: я развернул на своем nexus 7 (фактическое устройство) из Android Studio (v1.3.2). Все работало нормально. Затем я создал подписанный apk и загрузил на свой Google Drive. После отключения моего нексуса от usb я зашел в настройки / приложения и удалил свое приложение (App1). Затем я открыл google drive и нажал на мой App1.apk и решил установить его (необходимо убедиться, что вы установили apks в настройках). Тогда я получил страшное сообщение "Приложение не установлено"

Решение для меня: вернитесь в настройки / приложения и прокрутите хотя все приложения и внизу была бледная версия моего приложения App1 (обратите внимание, что оригинальное приложение App1 было вверху в алфавитном порядке, которое было удалено, как указано выше). При нажатии на бледную версию он сказал «Не установлен для этого пользователя». (Я настроил свой нексус, чтобы иметь более одного пользователя). Но в правом верхнем углу есть кнопка с тремя точками . Я нажал на это, и он сказал «Удалить для всех пользователей» . Что я и сделал, и это решило проблему. Теперь я смог нажать на App1.apk, и он установился нормально, без ошибок.

Астра Медведь
источник
1
Да, у меня были разные причины, и это была одна из них. Спасибо!
Альвеолы
1
имеет ту же проблему. У меня была активирована гостевая учетная запись, и при удалении приложение не удалялось у всех пользователей.
Филипп Лучианенко
2
Это было действительно полезно, и я установил-удалил свое приложение около 20 раз, прежде чем я нашел это. Большое спасибо! :-)
Рахул Арора
3
Если только StackOverflow, позвольте нам проголосовать более одного раза. Это решение помогло мне почти год назад. Я проголосовал и быстро забыл об этом. Была такая же проблема сегодня, и она мне снова помогла. Пытался upvote и StackOverflow сказал, что я уже имел. Ну что ж.
Гленн
2
Спасибо. Я тоже столкнулся с этим вопросом. В первый раз совершенно не очевидно, что удаление приложения происходит только для текущего активного пользователя. Чтобы не заходить в настройки каждый раз, я использую команду adb uninstall your.package.name, которая удаляет все пользователи.
Ксавье
61

Я столкнулся с проблемой, когда я обновляю свой андроид с 2.3.2 до 3.0.1. В этом случае IDE автоматически учитывает следующие моменты.

1.Не удается установить приложение с android: testOnly = "true" обычными способами, например, из файлового менеджера Android или из загрузки с веб-сайта.

2. Android Studio устанавливает Android: testOnly = "true" на APK, которые запускаются из

Если вы запустите приложение, напрямую подключив устройство к вашей системе, apk установится и запустится без проблем.

если вы отправили этот apk-копию из папки build out и debug, он никогда не будет установлен на устройстве.

Решение : перейти Build ---> Build APK (s) ---> скопируйте общий файл apk в вашу команду

тогда ваша проблема решится.

Сурия Редди
источник
1
Вы сохранили мою работу! Спасибо!
img.simone
1
О Боже, это заняло у меня 3 часа ..
Cuddlemeister
Оно работает! Спасибо!
Питер
1
Это Это это прямо здесь ответ для меня. Настолько досадно, что об этой простой вещи не было нигде не сообщено в программе или через сообщения об ошибках на устройстве. Спасибо чувак!
LFMekz
29

Я столкнулся с той же проблемой. Проблема была в том, что основное действие в моем файле AndroidManifest.xml было написано дважды. Я удалил дубликат.

Christophe
источник
Спасибо за подсказку! В моем случае android:exportedбыло установлено значение false для активности запуска
ildar ishalin
21

Это может произойти, если ваш MainActivity дважды объявлен в вашем AndroidManifest.xml.

Другая возможная причина: вы изменили активность запуска. Подсказка: никогда не делайте этого с уже опубликованными приложениями! Причины обсуждаются в блоге разработчиков Android .

Сергей Глотов
источник
4
+1 android:nameатрибут любого Activity, Service,BroadcastReceiver и так далее не может быть изменен в файле манифеста. Хотя это, кажется, частный идентификатор в вашем приложении, это публичный API.
caw
Я должен изменить свою активность при запуске. Я добавил заставку, и внутри нее я должен загрузить каналы перед началом основной деятельности. Есть ли у вас решение для этого, кроме размещения заставки внутри основной деятельности?
Крис Сим
2
Вы можете использовать тег <activity-alias>, чтобы справиться с этим!
thiagolr
18

У меня такая же проблема. Я не понимал, что приложение должно быть подписано даже для тестирования.

После самостоятельной подписи он установился нормально.

code511788465541441
источник
1
Более подробная информация здесь: stackoverflow.com/questions/4853011/…
Франциско Корралес Моралес
14

У меня была такая же проблема, и вот как ее решить: перейдите в файл Manifest и убедитесь, что для атрибутов «Debuggable» и «Test Only» установлено значение false. У меня это сработало :)

Thinkcomplete
источник
2
Не уверен, что вы подразумеваете под «Test Only», но установка отладки на true и подписание apk сработали для меня!
ingh.am
не работал для меня Я использовал:android:testOnly="false" android:debuggable="false"
Франциско Корралес Моралес
могли бы вы объяснить? У меня нет ни одного атрибута вообще, не установлено истина и не ложь, просто нет. Как выглядит линия?
Пашуте
14

Для тех, кто использует Android Studio 3.

Ответ Сурьянараяна Редди является верным, хотя в нем не указаны шаги для его решения, следовательно.

в вашем AndroidManifest.xml под тегом приложения добавьте testOnly="false" и android:debuggable="true"вот так:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:testOnly="false"
    android:debuggable="true"
    >

Отредактируйте
затем в строке меню AndroidStudio Построить> Построить APK (s)

Акшай Море
источник
Спасибо! android:debuggable="true"приводит к Error: Avoid hardcoding the debug mode; leaving it out allows debug and release builds to automatically assign one [HardcodedDebugMode]. Я пробовал android:testOnly="false", как Build > Build Bundl(s) / APK(s) > Build APK(s)и Build > Generate SignedBundle APK...с подписью версий v1, v2 (как на верхнем скриншоте). Пришлось удалить предыдущее приложение, а затем установить новое.
CoolMind
Недавно столкнулся с этой проблемой. Просто добавили android: testOnly = "false" и Build -> Build Apks и готово. Все отсортировано. Спасибо! Нет необходимости добавлять любое другое свойство android, например android: debuggable = "true".
androidStud
12

Я знаю, что это старый пост, но для новых пользователей может быть полезным. У меня была та же проблема: мое приложение работало нормально при отладке. Когда я подписал APK, я получил то же сообщение: «Приложение не установлено».

Я исправил это, удалив мой JDK (я использовал jdk-6u14-windows-x64) и установил новый (jdk-6u29-windows-x64). После экспорта и подписи АПК снова все было ок!

Возобновление, моя проблема была в версии JAVA. Благодарю Оракула !!

Жубер Васконселос
источник
Это исправило это для меня ... больше информации stackoverflow.com/questions/6282169/…
Грег Эннис
2
Это невероятно странно. Это было для эмулятора или устройства?
Джо Планте
12

Моя проблема заключалась в том, что у меня есть несколько учетных записей пользователей на устройстве. Я удалил приложение на 1 учетной записи, но оно все равно было установлено на другой учетной записи. Таким образом пространство имен столкнулось и не установилось. Удаление приложения от всех пользователей исправило его для меня.

правило
источник
2
В диспетчере приложений выберите приложение (которое будет отображаться, но будет отображаться как удаленное), выберите «Дополнительно» и появится параметр «Удалить для всех пользователей».
Кейси Мюррей
9

Моя проблема была: я использовал Debug Apk, который был сгенерирован во время выполнения команды Run из Android Studio

Решение заключалось в следующем: вместо использования этого файла очистите проект и нажмите «Создать»> «Создать APK» из Android Studio. Затем вы можете использовать сгенерированный APK из обычной папки (app / build / output / apk / debug /)

Файл, который был сгенерирован таким образом, установлен без проблем.

Адам Кис
источник
7

Если приложение не устанавливается, удалите файл .android_secure/smdl2tmpl.asec с SD-карты.

Если папка .android_secureв файловом менеджере пуста, удалите ее с ПК.

Nnamdi
источник
5

В конце концов я обнаружил, что ни одно приложение не было успешно установлено, не только мое. Я установил Установочное приложение по умолчанию с SD-карты на Автоматический. Это исправило это.

Entropy1024
источник
1
Как тебе это сделать? Я вообще не нахожу эту опцию на своем устройстве
SoulRayder
Huawei P8 Lite, Android 6.0, имеет только: Advanced / Mem & storage / расположение по умолчанию: внутренняя / SDCard. Это не помогло.
Кай
5

Если у вас есть предыдущая версия для этого приложения, попробуйте сначала стереть ее, теперь моя проблема была решена с помощью этого метода.

Хосе Луис Де Ла Круз
источник
5

Я также решил эту проблему,

Проблема заключалась в том, что я дважды объявлял свою основную деятельность: «В качестве первой загружаемой операции» и определял для нее также фильтр намерений. И еще раз под ней я снова объявлял ее.

Просто убедитесь, что вы не объявляете свою деятельность дважды.

Ави Мистриэль
источник
Если вы дважды объявите свою активность в Manifest.xmlфайле, появится ошибка компиляции, если у вас нет одинаковых действий с одинаковым именем, но в разных пакетах, НО это не работает со мной, так как я все проверил.
Blueware
5

создать файл хранилища ключей через командную строку

keytool -genkey -alias key_file_name.keystore -keyalg RSA -validity 1000000000000000 -keystore key_file_name.keystore

Экспортируйте apk через Eclipse, щелкните правой кнопкой мыши на Android-проекте Android Tools> Export Signed Application Package , затем укажите местоположение хранилища ключей и пароль.

это будет ящик подписанный apk в то же время apk будет zipaligned. И устанавливается.

Если вы пройдете через командную строку для всех, иногда вы можете столкнуться с ошибкой «Приложение не установлено». (Ошибка не установленного приложения может возникнуть не только при использовании командной строки. Это может быть и по другим причинам)

Чинтхака Сенанаяка
источник
4

У меня была та же проблема, то есть приложение показывалось как установленное, но не запускалось при нажатии значка. После некоторого удара головой я обнаружил, что тупо поместил 'android: exported = "false" для своей основной активности запуска в файле AndroidManifest .... Как только я удалил его, приложение запустилось нормально ..

mastDrinkNimbuPani
источник
4

Моя проблема была похожа на проблему @Lunatikzx. Из-за неправильного тега разрешения, который был записан как атрибут приложения:

<application
    android:permission="android.permission.WRITE_EXTERNAL_STORAGE"
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    android:testOnly="false"
    android:debuggable="true">

Для меня это исправило изменение тега разрешения на отдельный тег, подобный этому:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
SMGhost
источник
4

Загрузка приложений отладки для тестирования на физическом телефоне работала надежно до тех пор, пока я не обновил телефон с Android Pie до Android 10. После этого каждый раз, когда я пытался загрузить приложение, возникала ошибка «Приложение не установлено».

На основании предупреждения в моем AndroidManifest.xml я изменил с ...

<application
    android:name=".App"
    android:allowBackup="true" ... />

чтобы ...

<application
    android:name=".App"
    android:allowBackup="false" ... />

После этого я смог загрузить приложение - один раз. Затем я снова столкнулся с той же ошибкой «Приложение не установлено». Изменяя allowBackupназадtrue , он снова работает (по крайней мере , один раз).

Из числа ответов и различий в ответах очевидно, что существует много причин этой проблемы. Я делюсь этим на случай, если это поможет другим.

Нельсон Феррагут
источник
Я только попытался установить android:allowBackup="true"к android:allowBackup="false"и все еще не везет.
KRK
3

Проверьте с версией Android.

Если вы устанавливаете нерыночные приложения и несовместимую версию, вы получите эту ошибку.

Пример: приложение нацелено на 2.3.4 Ваше устройство 2.2, тогда вы получите эту ошибку.

Noby
источник
где в файлах конфигурации Gradle я вижу целевую версию Android? Я не вижу его build.gradleни в файле манифеста Android. Если compileSdkVersion(значение 23) или minSdkVersion(16) или targetSdkVersion(22) не указывают каким-либо образом на желаемую настройку. Моя галактика работает под управлением Android 7.0 (и просит обновить, но я пока не разрешаю). Я не использую android studio для создания своего собственного приложения, а скорееgradlew assembleRelease
pashute
3

Ошибка «Приложение не установлено» также может возникнуть, если приложение было установлено на SD-карту или перенесено на нее, а затем был подключен кабель USB, что приводит к отключению SD-карты.

Выключение USB-накопителя или перемещение приложения обратно во внутреннее хранилище решит проблему в этом случае.

threeshinyapples
источник
3

Я также столкнулся с этой проблемой. Пожалуйста, попробуйте это решение. Убедитесь, что имя пакета вашего проекта отличается от вашего предыдущего проекта, который уже был установлен на вашем мобильном телефоне. Я думаю, что они получают конфликт в своих именах. Это работает во мне.

joepadz
источник
2
Это будет работать, но не лучшее решение, так как в итоге вы получите миллионы установленных приложений. Смотрите некоторые другие ответы выше.
Астра Медведь
3

Вы также можете столкнуться с этой проблемой, поскольку производитель вашего устройства не лицензировал коммерческие приложения Google, такие как Play Store, YouTube, Google Maps и т. Д. Чтобы решить проблему , следуйте этому ответу .

Bobs
источник
3

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

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

Майкл Тодд
источник
Я думаю, что в первый раз, когда я установил, я изменил имя. Теперь по умолчанию (app_release.apk) не устанавливается. Может быть, я попробую изменить это ... хммм.
Пашуте
3

Используя Android Studio, я ранее установил неподписанную отладочную версию APK ( Build> Build APK ) и должен был удалить ее перед установкой подписанной версии выпуска ( Build Varits> Build Variant: release , Build> Generate Signed APK ).

MRTS
источник
1
Я просто потратил два часа на ту же проблему. Мое приложение отображает версию, например. «3.5.6», но не показывает, является ли это отладочной или выпускной версией. Я возился с большим количеством разных файлов и потерял отслеживание того, где я был, и попытался обновить apk Debug с помощью apk Release. Я думаю, что Android раньше показывал сообщение типа «конфликтующие подписи файлов», но теперь (Pie, 9.0) вы просто получаете «Приложение не установлено», без возможности найти причину. Болезненный урок!
Стивен Хоскинг
3

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

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

случилось то, что некоторые из этих сборок были построены мной , другая была отправлена ​​мне другим разработчиком ... попытка установить разработчиков, в то время как у меня были другие сборки (созданные мной), вызвала вышеуказанную ошибку.

поэтому исправление было простым: удалите все сборки на моем телефоне (независимо от варианта сборки) .. затем установите apk, отправленный моим коллегой .. и это сработало как прелесть

abbood
источник
была та же проблема, я думаю, что решение заключается в том, чтобы всегда подписывать сборки при использовании ароматов
Nickmccomb
3

Я столкнулся с подобной проблемой сегодня, и сначала я подумал, что это моя SD-карта, которая повредила ее. Я попробовал это на многих устройствах под управлением Android 4.4 и выше, но это продолжало вызывать одну и ту же проблему. После некоторого поиска в Google и исследования я понял, что я не выбрал подпись jar v1, которая предназначена для устройств старше, чем нуга Android 7.0, поэтому я применил оба эти подписи, установив два флажка и сгенерировали подписанный apk, и это сработало.

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

Ссылка на решение Android - приложение не установлено, ошибка при установке подписанного APK - как исправить

Нельсон Катале
источник
В этом мне помогло устройство под управлением Android 6
Стефан Желязков
Я рад, что этот ответ помог вам решить проблему. @ StefanZhelyazkov
Нельсон Катале
2

Это также может произойти при создании виджета на главном экране, и в XML-файле вашего виджета указано неверное действие, указанное в его android:configureсвойстве.

TalkLittle
источник