Помилка програми "Не встановлено" на Android


425

У мене програма, що працює в Android Emulator. Я раз і знову створюю підписаний файл .apk і експортую його до свого HTC Desire для тестування. Все було добре.

Під час останнього експортованого .apk я отримую повідомлення про помилку "Додаток не встановлено", коли я намагаюся встановити .apk. Він справно працює на емуляторах.

Оскільки я в основному тестував емулятори і лише раз у раз експортував на справжній телефон, я не впевнений, коли це сталося. Яка ймовірна причина того, що він не встановлюється на фізичний телефон, а працює в емуляторах?

Я спробував перезавантажити телефон і видалити наявний .apk, не виправляє помилку.


5
Коли ви скажете, що ви видалили наявний .apk, ви маєте на увазі, що ви видалили програму з телефону? Якщо ні, видаліть програму, перш ніж спробувати її встановити.
Тельмо Маркес

9
Що сказав TomS , запустіть adb uninstall your.package.nameі тоді adb install /path/to.apk. Я не бачу, чому це не вийде. Ви щось змінили в процедурі підписання?
Фелікс

2
Ви спробували налагоджувати його безпосередньо від затемнення на пристрої, підключеному до комп'ютера, щоб побачити, чи журнал говорить щось більше?
Хаві

1
Я видалив додаток, використовуючи опцію видалення з менеджера програм на телефоні.
Entropy1024

Фелікс. Звідки я запускаю цю річ adb?
Entropy1024

Відповіді:


265

В першу чергу для старих телефонів

Я зіткнувся з App not installedпомилкою лише при спробі встановити apk на свій телефон, який працює на 4.4.2 aka KitKat, але мій друг не зіткнувся з цією помилкою на своєму телефоні, який працює на 6+. Я спробував інші рішення, такі як видалення старої / налагодженої версії програми, оскільки apk була версією релізу, очищенням даних програми налагодження і навіть очищенням усіх кешованих даних. Потім, нарешті, я зрозумів, що все, що мені потрібно було, - це вибрати обидві версії підпису під час створення мого підписаного apk.

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

До того, як я лише V2 (Full APK Signature)вибрав, але після вибору V1 Jar Signature, я зміг успішно встановити підписаний APK на своєму пристрої 4.4.2. Сподіваюсь, це допомагає іншим!


6
Враховуйте це рішення, коли у вас є старший телефон! У мене є Galaxy S4 mini з Android 4.4.2, і я забув перевірити "підпис V1", щоб він не міг встановитись у пристрої. Після перевірки, apk встановлюється як шарм.
Хосе Рамон Гарсія

1
@JoseRamonGarcia Смішним є те, що у мене такий самий телефон і версія Android ха-ха! Радий, що це працювало на вас
Chris Gong

1
Дякую! Android Studio має надати більше інформації про це під час підписання програми або зробити більш очевидним, що робити, коли ви не V1 (Jar Signature)
поставите

У моєму випадку я повинен додати цю конфігурацію у файл маніфесту android: installLocation = "InternalOnly"
avinash kumar

1
Я спочатку підписався з v2, коли зіткнувся з проблемою. Тоді я підписався лише з v1 і тоді це спрацювало. Я запускаю sdk23 на своєму телефоні.
Бурштин

206

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

Щоб вимкнути Google Play Protect. Відкрийте додаток "Play Store" => натисніть кнопку Menu => виберіть опцію "Play Protect" => Вимкнути параметри "Сканувати пристрій на загрозу безпеці".


4
незважаючи на те, що коли я вперше спробував встановити свій додаток, мені було запропоновано захист від грі, сказавши, що він не може перевірити, що додаток є безпечним, і я натиснув "все одно встановити", програма все одно не встановить. ця
переробка

У мене немає Play Store в емуляторі Android (API 28).
Джеррі Додж

3
Також справа в Android 8 (просто щоб заповнити повідомлений пробіл між 7 та 9).
священик

3
Це чудово працює. Не забудьте відновити налаштування після встановлення apk.
Рахамат

Велике спасибі, вирішили проблеми на моєму Xiaomi Redmi 5 Plus
Nicola Gallazzi

150

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


9
Так, це той самий сертифікат. Я думаю, що раніше це було. Я спробував видалити наявну програму на телефоні, а також спробував встановити непідписану версію. Ще отримайте те саме повідомлення про помилку.
Entropy1024

2
У мене також був той самий випуск для цього (попередня версія з іншим сертифікатом) - щоб бути конкретним, я мав неявно встановлений для використання налагоджувача. Revmoving вирішив це (не ваш випадок, як видно нижче, але варто зареєструватися тут)
chesterbr

11
У цій публікації більше 30 відповідей. Що я рекомендую: Коли ви стикаєтесь з цією проблемою, дотримуйтесь журналів пристроїв під час встановлення програми. використовувати adb logcat. Ви дізнаєтесь точну причину збою встановлення. журнал для моєї проблеми - "Пакет com.companyname.appname підписи не відповідають попередньо встановленій версії; ігнорування!"
Манікандан

Я змінив назву пакета. і це спрацювало. Я зрозумів, що протестував кілька додатків з однаковою назвою пакету, тому помилка.
користувач30478

120

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

Вирішення для мене: поверніться до налаштувань / додатків і прокрутіть, хоча всі додатки та внизу були блідою версією мого App1 (зверніть увагу, що початковий App1 знаходився вгорі в алфавітному порядку, який був видалений як вище). Натиснувши на бліду версію, він сказав "Не встановлено для цього користувача". (Я створив свій Nexus, щоб мати більше одного користувача). Але у верхньому правому куті є кнопка на три крапки . Я натиснув це, і він сказав "Видалити для всіх користувачів" . Що я і зробив, і вирішив проблему. Тепер я міг натиснути App1.apk, і він встановився нормально без помилок.


1
Так, у мене були різні причини, і це була одна з них. Дякую!
Альвеоли

1
має те саме питання. У мене був активований обліковий запис гостя, і при видаленні програми він не видалявся від усіх користувачів.
Філіп Лукіяненко

2
Це було дуже корисно, і я встановив-видалив додаток приблизно 20 разів, перш ніж я виявив це. Дуже дякую! :-)
Рахул Арора

3
Якби тільки StackOverflow, давайте ми подавати заявки не раз. Це рішення мені допомогло майже рік тому. Я схвалив і негайно забув про це. У мене була та сама проблема сьогодні, і це мені знову допомогло. Спробував проголосувати, і 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 копією з папки put put and debug, він ніколи не встановиться на пристрої.

Рішення : перейдіть на збірку ---> Створіть APK-файли ---> скопіювати частку APK файл у вашій команді

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


1
Ти врятував мою роботу! Дякую!
img.simone

1
О Боже, мені знадобилося 3 години ..
примружитель

Це працює! Дякую!
Петро

1
Це Це прямо тут є для мене відповіддю. Настільки прикро, що ця проста річ не була усвідомлена нахабно в програмі або через повідомлення про помилки на пристрої. дякую людино!
LFMekz

29

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


Дякую за підказку! У моєму випадку android:exportedбуло встановлено значення false для запуску
активів

21

Це може статися, якщо у вашій AndroidManifest.xml у вас два рази оголошено MainActivity.

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


4
+1 android:nameатрибут будь-якого Activity, Service, BroadcastReceiverі так далі не може бути змінений в файлі маніфесту. Хоча це, здається, приватний ідентифікатор у вашій програмі, але це загальнодоступний API.
каре

Я повинен змінити свою активізацію запуску. Я додав екран сплеску, і всередині нього я маю завантажувати канали перед початком основної діяльності. Чи є у вас рішення для цього, крім того, щоб розмістити екран бризки всередині основної діяльності?
Кріс Сім,

2
Ви можете використовувати тег <activity-alias>, щоб впоратися з цим!
тіагольр


14

У мене була така ж проблема, і ось, як її вирішити: перейдіть до файлу Manifest і переконайтеся, що для атрибутів "Debuggable" і "Only Test" встановлено значення false. Це працювало для мене :)


2
Не впевнений, що ви маєте на увазі під "Тест лише", але встановлення налагоджуваного значення 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 Build> Build 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. Дякую Oracle !!


Це вирішило це для мене ... докладніше info stackoverflow.com/questions/6282169/…
Грег Енніс

2
Це неймовірно дивно. Це було для емулятора чи пристрою?
Джо Плант

12

Моя проблема полягала в тому, що на пристрої у мене є кілька облікових записів користувачів. Я видалив додаток на 1 акаунті, але він все ще був встановлений на іншому обліковому записі. Таким чином, простір імен зіткнувся і не встановився. Видалення програми від усіх користувачів виправило це для мене.


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

9

Моя проблема полягала в тому, що я використовував програму Debug Apk, яка була створена під час виконання команди Run від Android Studio

Рішення полягало в тому, що замість цього файлу очистіть проект та натисніть «Створити»> «Створити APK ( файли) APK від Android Studio. Тоді ви можете використовувати згенерований APK зі звичайної папки (app / build / outputs / apk / debug /)

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


7

Якщо програма не встановлюється, видаліть файл .android_secure/smdl2tmpl.asec із SD-карти.

Якщо папка .android_secureпорожня в файловому менеджері, видаліть її з ПК.


5

Врешті-решт я з’ясував, що жоден додаток не встановлюється успішно, не лише мій. Я встановив програму Install App за замовчуванням із SD-картки на Automatic. Це і виправило.


1
Як це зробити? Я взагалі не знаходжу цього варіанту на своєму пристрої
SoulRayder

Huawei P8 Lite, Android 6.0, має лише розширене / пам'ять та місце зберігання / за замовчуванням: внутрішній / SDCard. Це не допомогло.
kaay

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> Експорт підписаного пакету додатків , а потім вкажіть місцезнаходження та пароль ключового магазину.

це буде ящик з підписом apk, в той же час apk буде зріпано. І встановити.

Якщо ви проходите командний рядок усі, кілька разів ви можете зіткнутися з помилкою "Програма не встановлена". (Програма не встановлена ​​помилка може траплятися не тільки при використанні командного рядка. Це можуть бути і інші причини)


4

У мене була та сама проблема, тобто додаток показано, як встановлено, але він не запускався, коли значок натискав. Після деяких ударів по голові я виявив, що я тупо розмістив 'android: export' = 'false' 'для моєї основної запускової діяльності у файлі AndroidManifest .... Після того, як я її видалив, додаток запустив чудово.


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" />

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. Ви отримаєте цю помилку.


де у файлах конфігурації gradle я бачу цільову версію Android? Я не бачу його build.gradleні в файлі маніфесту Android. Якщо compileSdkVersion(значення 23) або minSdkVersion(16) або targetSdkVersion(22) якимось чином не вказують на потрібну установку. У моїй галактиці працює android 7.0 (і просить оновити, але я поки не дозволяю цього зробити). Я не використовую андроїд-студію для створення мого додатка для реагування, а скорішеgradlew assembleRelease
пашуте

3

Помилка "Не встановлено програму" також може виникнути, якщо додаток було встановлено на або переміщено на SD-карту, а потім підключено кабель USB, що призведе до відключення карти SD.

Вимкнення USB-пам’яті або переміщення програми до внутрішнього сховища вирішить проблему в цьому випадку.


3

Я також стикався з цим питанням. Будь ласка, спробуйте це рішення. Переконайтесь, що назва пакету вашого проекту відрізняється від попереднього проекту, який вже був встановлений у вашому мобільному телефоні. Я думаю, що вони конфліктують у своїх іменах. Це працює в мені.


2
Це буде працювати, але немає найкращого рішення, оскільки у вас буде встановлено мільйони додатків. Дивіться деякі інші відповіді вище.
ведмідь Астра

3

Ви також можете зіткнутися з цією проблемою, оскільки виробник пристрою не ліцензував комерційні програми Google, такі як Play Store, YouTube, Google Maps тощо. Дотримуйтесь цієї відповіді, щоб вирішити проблему.


3

Мабуть, це також може бути викликано перейменуванням APK перед його встановленням. Я хотів зменшити кількість друкуючих користувачів, щоб отримати додаток з нашого веб-сайту, скоротивши ім’я файлу. Після цього вони не змогли його встановити.

Як тільки я повернувся до оригінального імені файлу, використовуваного при створенні та підписанні пакету, я зміг оновити встановлений додаток.


Я думаю, що під час першого встановлення я змінив назву. Тепер за замовчуванням (app_release.apk) не встановлюється. Можливо, я спробую це змінити ... хммм.
пашуте

3

Використовуючи Android Studio, я раніше встановив неподписану версію налагодження APK ( Build> Build APK ), і мені довелося її видалити перед встановленням підписаної версії версії ( Build Variants> Build Variant: release , Build> Generate Signed APK ).


1
Я щойно витратив дві години на ту саму проблему. Мій додаток відображає версію, наприклад, "3.5.6", але не показує, чи це налагоджувальна версія чи версія. Я обдирався безліччю різних файлів і втратив інформацію про те, де я був, і намагався оновити apk-файл налагодження за допомогою програми Release apk. Я думаю, що Android раніше показував повідомлення типу "конфліктні підписи файлів", але тепер (Pie, 9.0) ви просто отримуєте "додаток не встановлено", без можливості знайти причину. Болісне заняття!
Стівен Хоскінг

3

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

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

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

тож виправлення було простим: видаліть усі складання на моєму телефоні (незалежно від варіанту збірки) .. потім встановіть apk, надісланий моїм однолітком .., і це спрацювало як шарм


у мене була така ж проблема, я думаю, що рішення завжди підписувати складання під час використання ароматизаторів
Nickmccomb

3

Я зіткнувся з подібною проблемою сьогодні, і спочатку я подумав, що це моя SD карта пошкодила її. Я спробував його на багатьох пристроях , що працюють під управлінням Android 4.4 і вище , але він продовжував приносити той же issue.After деяких вдаючись до допомоги та дослідження я зрозумів , що я не вибрав v1 баночку підпису , яка для пристроїв старшх Android 7.0 нуги так я застосував обидва ці підписи, встановивши два прапорці та згенерувавши підписаний apk, і він спрацював.

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

Посилання на рішення Android - Програма не встановлена ​​помилка під час встановлення підписаного APK - Як виправити


Це допомогло мені для пристрою, на якому працює Android 6
Стефан Желязков

Я радий, що ця відповідь допомогла вам вирішити проблему. @ StefanZhelyazkov
Нельсон Катале

2

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.