"Помилка розбору: Виникла проблема при розборі пакета" під час встановлення програми Android


104

Я отримав цю помилку під час встановлення програми Android ( Parse Error : There is a problem parsing the package.). Я зробив наступні кроки.

  1. Перший раз я встановив додаток, і він працює добре.

  2. Я вніс зміни до існуючої програми та змінив версію no у файлі Manifest.

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openintents.samples.BasicOpenARDemo" android:versionCode="2" android:versionName="1.0.1">
  3. Потім я експортую додаток і закінчую процес підписання коду. Для цього клацніть правою кнопкою миші Ваш вузол проекту> виберіть Експорт. Там ви побачите майстра. Виконайте вказівки та також закінчіть підписання коду.

  4. Я отримав файл ARDemo.apk, потім я змінив його ім'я на ARDemo1.apk

  5. Потім я доставив цей apk-файл на мобільну SD-карту і розпочав установку. Я отримав вищевказану помилку.

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

Хтось може сказати мені, що може бути зі мною?


слід поставити номер версії на три. будь ласка, зверніться до японського підручника на веб-сайті

Привіт Ejder, Дякую за відповідь ур. Мою проблему вже виправили. Моя помилка - "Я змінив ім'я файлу apk вручну". Вище 2 - це код моєї версії програми, а не значення minsdk. Я ставлю значення minsdk як 3. Дякую та з повагою, Raghavendra K
Raghu

4
просто подумавши, чому перейменування стало проблемою?
Майкі

Привіт Майку, я змінив ім'я після експорту. Ось чому це дає помилку. Якщо ми вкажемо ім'я різниці під час експорту, це не могло бути проблемою для мене ..
Раггу,

1
Привіт Cru, Зміна версії no не створила цю проблему. Я перейменував файл apk, як тільки здійснив експорт. Це створює цю проблему.
Рагу

Відповіді:


49

Ви сказали, що перший раз, коли ви встановили додаток, він працював чудово.

Єдина відмінність кроків, які ви окреслили між двома версіями:

  1. Номер версії (я припускаю, що це не брало участі в порушенні)
  2. Код
  3. Назва файлу .apk

Спробуйте перейменувати файл ARDemo1.apk назад в ARDemo.apk (переконайтесь, що резервна копія старішої версії) і подивіться, чи це допомагає. Я здогадуюсь, що це має щось спільне з назвою apk.

Якщо це все ще не працює, ви можете усунути ім’я файлу apk як джерела проблеми та почати розслідування 2), відновивши стару версію і побачите, чи є у вас знову така ж проблема. Якщо проблеми не існує із оновленою версією вашого старого коду, знаєте, що це має стосуватися вашого коду.

Я сподіваюся, що вас десь потрапить.

Ура, Йосип


Привіт Джозефе, Ваша здогадка правильна. Я перейменував файл apk у попередній. Це працює ...... Дякую вам дуже за допомогу .....
Рагу

Привіт, я стикаюся з подібною проблемою. Я завантажую програму з веб-посилання. Він ідеально сидить на мобільній SDCard. Але коли я намагаюся його встановити, вона показує цю помилку. Я не підписував свою заявку, в основному я новачок у розробці додатків для Android. Допомога будь-якого сорту вдячна :)
varunrao321

2
Я зіткнувся з подібною проблемою, і випадок був мінімальною версією SDK у файлі .gradle. Подумайте про це та версію вашого пристрою, і це буде корисно.
користувач2881604

Так, ви праві, що проблема в назві файлу apk ...!
Армал Імам

Я перейменував файл АПК і parse errorнемає, але при спробі встановити його зараз вона показує мені , App not installedщо я з допомогою зефіру пристрою і , можливо , його ж , як питання тут stackoverflow.com/questions/33930223 / ...
natsumiyu

45

Установка може дати вказану помилку хоча б у наступних випадках:

  • Найменування пакета змінюється після підписання . Використовуйте точну назву, як підписаний пакет (замість цього виправте ім'я в Manifest)
  • Пакет складено проти вищого рівня API : Виправте рівень API у файлі Manifest
  • Пакет виконується з SD-карти : Запустіть (встановіть) файл apk-файлу з пам'яті телефонів АБО використовуйте команду adb, щоб встановити його

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

Найкраща відповідь тут. Для мене це було зміною назви пакету після його підписання. Дуже дякую.
Jannie Theunissen

Я припускаю, що вам потрібно мати вкорінений телефон, щоб мати можливість встановити його за допомогою adb installправа?
абат

Ніяк: Вкорінення не потрібно - можливо, вам потрібно буде включити Невідомі джерела з налаштувань безпеки. (непідтверджено)
jmu

Невідомі джерела І налагодження usb ... Примітка: у Windows 8 іноді він не розпізнає телефон у режимі MTP, лише PTP ...
SparK

22

Я бачив помилку розбору лише тоді, коли версія Android на пристрої була нижчою, ніж версія, для якої було складено додаток. Наприклад, якщо програма складена для Android OS v2.2, а ваш пристрій має лише ОС Android v2.1, ви отримаєте помилку розбору при спробі встановити додаток.


Мене це вразило деякий час тому, пройшло віки, щоб розібратися!
olafure

14

Причина в тому, що apk не підписаний. Після підписання apk питання буде вирішено. http://ionicframework.com/docs/guide/publishing.html Будь ласка, використовуйте посилання на інструкції, щоб підписати apk.


Тут же проблема. Після підписання apk, воно працювало як очікувалося.
Dino Tw

3
Ця проблема була для мене зі збірками Xamarin Android - вона спочатку створює APK в Менеджері архівів, який не підписаний. Потім потрібно вибрати "Розподілити", щоб створити підписаний APK, який можна встановити.
dodgy_coder

Додавши до того, що написав dodgy_coder: для Xamarin.Android 7 або новішої або попередньої версії .
Веверке

13

Замість того, щоб знімати в темряві, знайдіть причину цієї помилки, встановивши її через adb:

adb -s emulator-5555 install ~/path-to-your-apk/com.app.apk

Замініть emulator-5555на ім’я свого пристрою. Список можна отримати за допомогою:

adb devices

Якщо не вдасться, це дасть причину. Загальні причини та їх виправлення:

  1. INSTALL_PARSE_FAILED_NO_CERTIFICATES: Довідка
  2. INSTALL_FAILED_UPDATE_INCOMPATIBLE: Довідка

Що робити, якщо це вдалося?
Яків Санчес

1
Це мені дуже допомогло. Дякую!
Tgo1014


6

Якщо ви компілюєте та експортуєте свій apk-файл під SDK версії 2.1, він не працюватиме на будь-якій версії Android під вашим експортом SDK "2.1". Програмне забезпечення Android сумісне вперед, а не сумісне назад. Наприклад, якщо ви програмуєте за допомогою пакета android NDK (ann надбудова до SDK для android), який дозволяє розвиватись у родині C / C ++, це сумісно лише з android 2.3, android версія 2.2 і нижче, підтримує лише java build. Тому ви зрозумієте помилку "Проблема розбору пакету".


3

Інша можливість полягає в тому, що ви зберегли файл apk у папку PRIVATE програми і потім спробуйте встановити (запустивши наміри зі свого коду). у цьому випадку, коли ви починаєте наміри, ви отримуєте пакет розбору помилок. У цьому випадку піднята помилка стосується питань дозволу. Справа в тому, що збереження файлу в приватних папках не є хорошою практикою, проте, якщо ви дійсно хочете це зробити, вам слід написати файл у MODE_WORL_READABLE, коли ви завантажуєте його. Зверніть увагу, що MODE_WORLD_READABLE застаріло, і це рішення не найкраще, оскільки має деякі проблеми із безпекою. Найкраще - зберегти файл у зовнішній пам’яті.


3

Я не повторюю те, що тут доручено вводити зберігання ключів, пароль тощо. Спробуйте

Збірка -> Створення підписаного APK -> [Input] --- Далі ---> виберіть BOTH

  • V1 (підпис банку)
  • V2 (повний підпис APK)

Я не знаю чому, але принаймні це спрацювало в моїй ситуації.


1
Працювали для мене. Він не перевірявся в Android Studio MacOS за замовчуванням.
vojta

2

Я отримав таку ж помилку (помилка розбору. Виникла проблема при розборі пакета) під час спроби встановити .apk пакет з електронної пошти. Мені вдалося усунути проблему, встановивши сторонній інсталятор пакета ApKatcher:

http://www.addictivetips.com/mobile/install-android-apps-from-gmail/

ApKatcher - не єдине рішення. Мій колега вирішив проблему, встановивши Astro File Manager.

Ви можете знайти обидва додатки на Android Marketplace.


Щоб додати сюди ще одну точку даних, я також отримував цю помилку під час встановлення з електронної пошти, але вона встановлена ​​нормально, коли я використовував шнур та adb для встановлення того ж пакету. На жаль, я намагався встановити через Yahoo Mail, тому я не думаю, що ApKatcher може допомогти.
М Кац

1

Аналогічна проблема, використовуючи цей "запозичений" та трохи змінений код:

                Intent intent = new Intent(Intent.ACTION_VIEW);
                File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "myapp.apk");
                intent.setDataAndType(Uri.fromFile(newApk), "application/vnd.android.package-archive");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                result = true;

Потрібно змінити створення файлу на це (кода замість плюс у конструкторі файлів відсутня '/' після каталогу завантаження):

                    File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "myapp.apk");

1

У моєму файлі маніфесту була погана пара тегів.

<meta-data>
</meta-data>

В основному потрапив, коли я скопіював неправильний meta-dataзразок коду з файлу PDF payu. Лайно.


1

Однією з причин може бути те, що ім’я вашої діяльності не визначено в маніфесті

    <activity
          android:name=""
          ...>
</activity>

вище код створював те саме питання зі мною


1

Іншою проблемою, що викликає цю помилку, може бути встановлення APK з обмеженої точки монтажу SD-карти /mnt/media_rw/MicroSD .

Використовуйте необмежену точку кріплення /Removable/MicroSD.


1

І лише для того, щоб допомогти можливим новим читачам, ще одна причина може бути помилками у файлі маніфесту. Я вводив помилку android:serviceяк android.serviceі наштовхувався на ту ж помилку ...


1

Як згадував @Veneet Reddy, встановіть його через ADB.

Перейдіть до ADT Bundle / sdk / platform-tools повз .apkфайл і запустіть командний рядок як адміністратор.

Потім запустіть adb devicesкоманду, яка перелічить підключені пристрої або емулятори, які працюють.

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

Потім бігайте adb -s yourDeviceID install yourApk.apk

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

Примітка: видаліть додаток, якщо ви його вже встановили перед повторною установкою.


0

Для тих, хто має цю проблему, єдиний раз, коли я коли-небудь отримував цю помилку, коли версія API у вашій конфігурації Android Build не відповідає тій, що є на фізичному пристрої.

Зайдіть у Eclipse і клацніть правою кнопкою миші на вашому проекті та перейдіть до властивостей. Виберіть Android - ЯКІ ВИГОТОВЛЯЄТЬСЯ ДЛЯ АНДРОІДНОЇ БУДІВНОЇ ЦІЛИ. Налаштуйте цільовий вміст, щоб відповідати пристрою, і подивіться, чи це вирішує проблему.


0

У мене була ця проблема, навіть коли я вказав правильну версію minSDK та targetSDK. Моя проблема полягала в тому, що я використовував "android:theme="@android:style/Theme.NoTitleBar.Fullscreen"у пусковій діяльності на пристрої Jellybean. Коли я видалив цей атрибут, він спрацював.


0

Як уже було зазначено в парі інших відповідей, при установці з SD-карти можуть виникнути проблеми. У моєму випадку я розповсюджував свою програму через вкладення електронної пошти, і це нормально працювало. Просто відкрийте електронну пошту та завантажте вкладення (воно, мабуть, йде на SD-карту) та натисніть на нього ще раз, і воно встановиться.

Але одного разу це не спрацювало, і виявилося, що це було те, що у мене телефон був підключений до мого ПК для розробки через USB, і він перевів SD-карту в інший режим або щось подібне. Тому рішенням було просто відключити телефон від ПК, а потім знову надіслати електронну пошту та завантажити додаток. Або ж поставте USB-з'єднання в режим "тільки зарядка", щоб SD-карта не була "підключена" до ПК.


0

Ви також можете перевірити журнали на пристрої, щоб побачити, чи це щось просте, як проблема дозволів. Ви можете перевірити журнали за допомогою adbкомп'ютера хоста / налагодження:

adb logcat

Або якщо у вас є доступ до консолі (або при використанні Android-x86 отримати консоль, набравши Alt+ F1), ви можете перевірити журнали, скориставшись logcatкомандою:

logcat

0

У мене була така ж проблема із використанням файлу apk, експортованого з android‌ Tools > Export. Замість цього я використав файл apk у папці bin, і він працював!

PS apk-файл у папці bin створюється після першого запуску програми у затемненні.


0

використовувати його всередині build.gradle (Модуль: додаток)

 minSdkVersion 14
    targetSdkVersion 28

Ви повинні пояснити, чому мінімальна версія 14 та 28 націлена. Також перевірте своє форматування;)
m02ph3u5

0

У мене була ця проблема, яку Parse Error : There is a problem parsing the package. я тестував на Android-8. У мене ж apk з тією ж підписом. Все було однаково без номера версії та назви версії. Програма встановлювалась, коли я встановлював її вручну, але ця помилка сталася під час завантаження та встановлення оновлень програмно. Тоді я знайшов свою причину проблеми.

Була можливість перевірити canRequestPackageInstalls () Коли цей метод повернеться вірно, тоді програма буде встановлена ​​успішно. У моєму випадку це було поверненням помилки завжди.

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

In onCreate ()

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            if (!packageManager.canRequestPackageInstalls()) {
                    startActivityForResult(
                        Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).setData(
                            Uri.parse(String.format("package:%s", packageName))
                        ), requestCodeqInstallPackage
                    )
                } else {
                    canInstallPackage = true
                }

        }

У програмі onActivityResult ()

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
            if (requestCode == requestCodeqInstallPackage && resultCode == Activity.RESULT_OK) {
                if (packageManager.canRequestPackageInstalls()) {
                    canInstallPackage = true
                }
            } else {
                canInstallPackage = false
                Toast.makeText(mContext, "Auto update feature will not work", Toast.LENGTH_LONG)
                    .show()
            }
    }

Тоді, коли потрібно встановити оновлення, тоді-

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
   if(canInstallPackage){
      doInstallAppProcess()
   }else{
        // generate error message
   }
}

Сподіваюся, це комусь допоможе.


0

У моєму випадку я підписався лише з підписом V2 (від Android 7 і далі), але намагався встановити 5 і 6. Додавання V1 під час генерації / підпису ARK виправило проблему.

Бачите різницю між версіями підписів - V1 (Jar Signature) та V2 (Full APK Signature), створюючи підписаний APK в Android Studio? .


-1

У мене спостерігається те саме "Помилка розбору: є проблема розбору пакета" з повідомленнями про помилку з моїми підписаними APK, як і іншими, але я підозрюю, що це може бути викликано різними причинами.

Щоб перевірити це, я зробив наступне:

Налаштування Windows 8.1 Eclipse ADT Build: v22.6.2-1085508

Я створив типовий новий додаток Helloworld, який приймає всі типові настройки.

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

Потім я завантажив і встановив apk на свій живий пристрій і успішно запустив його.

Це створило apk у папці bin розміром 782 Кб.

Потім я експортував додаток Helloworld у ту саму папку для сміття, підписуючи програму з мого магазину ключів, який раніше успішно використовувався для просування в Google Play.

Це створило APK розміром 385 Кб (замінивши оригінальний apk).

Я завантажив apk на свій пристрій, і коли я перейшов до його встановлення, я отримав помилку "Помилка розбору: Існує проблема розбору пакету" (це той самий пакет, що завантажений і встановлений, коли виконано як неекспортована форма).

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