„Błąd analizy: wystąpił problem podczas analizowania pakietu” podczas instalowania aplikacji na Androida

104

Wystąpił ten błąd podczas instalowania aplikacji na Androida ( Parse Error : There is a problem parsing the package.). Zrobiłem następujące kroki.

  1. Po raz pierwszy zainstalowałem aplikację i działa dobrze.

  2. Dokonałem zmian w istniejącej aplikacji i zmieniłem numer wersji w pliku 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. Następnie eksportuję aplikację i kończę proces podpisywania kodu. W tym celu kliknij prawym przyciskiem myszy węzeł projektu> wybierz Eksportuj. Tam zobaczysz kreatora. Postępuj zgodnie z instrukcjami i zakończ również podpisywanie kodu.

  4. Dostałem plik ARDemo.apk, potem zmieniłem jego nazwę na ARDemo1.apk

  5. Następnie wysłałem ten plik apk na kartę SD telefonu komórkowego i rozpocząłem instalację. Otrzymałem powyższy błąd.

Poszukałem w Google, mówią, że problem z rozpakowywaniem pliku manifestu.

Czy ktoś może mi powiedzieć, co może być ze mną nie tak?

Raghu
źródło
powinieneś umieścić numer wersji na trzy. proszę zapoznać się z japońskim samouczkiem na stronie
Cześć Ejder, Dzięki za odpowiedź. Mój problem został już rozwiązany. Mój błąd to „Ręcznie zmieniłem nazwę pliku apk”. W powyższym 2 jest kod mojej wersji aplikacji, a nie wartość minsdk. Ustawiłem wartość minsdk na 3. Dziękuję i pozdrawiam, Raghavendra K
Raghu
4
zastanawiasz się tylko, dlaczego zmiana nazwy stała się problemem?
Mikey
Witaj Mike, zmieniłem nazwę po eksporcie. Dlatego daje błąd. Jeśli podamy nazwę różnicy podczas eksportu, nie może to być dla mnie problem ...
Raghu,
1
Hello Cru, zmiana wersji no nie spowodowała tego problemu. Po dokonaniu eksportu zmieniłem nazwę pliku apk. Stwarza ten problem.
Raghu

Odpowiedzi:

49

Powiedziałeś, że po raz pierwszy zainstalowałeś aplikację, działała dobrze.

Jedyna różnica w krokach, które nakreśliłeś między dwiema wersjami, to:

  1. Numer wersji (zakładam, że nie brało to udziału w zepsuciu niczego)
  2. Kod
  3. Nazwa pliku apk

Spróbuj zmienić nazwę pliku ARDemo1.apk z powrotem na ARDemo.apk (pamiętaj, aby utworzyć kopię zapasową starszej wersji) i sprawdź, czy to pomaga. Domyślam się, że ma to coś wspólnego z nazwą apk.

Jeśli nadal nie działa, możesz usunąć nazwę pliku apk jako źródło problemu i rozpocząć badanie 2), odbudowując starą wersję i sprawdzić, czy ponownie masz ten sam problem. Jeśli problem nie występuje z przebudowaną wersją starego kodu, to wiesz, że musi to być coś wspólnego z twoim kodem.

Mam nadzieję, że to gdzieś cię doprowadzi.

Pozdrawiam, Joseph

user175750
źródło
Cześć Joseph, Twoje przypuszczenie jest poprawne. Zmieniłem nazwę pliku apk na wcześniejszy. To działa ...... Dziękuję bardzo za pomoc .....
Raghu
Cześć, mam podobny problem. Pobieram aplikację z łącza internetowego. Idealnie mieści się na mobilnej karcie SD. Ale kiedy próbuję zainstalować, pokazuje ten błąd. Nie podpisałem swojej aplikacji, w zasadzie jestem nowicjuszem w tworzeniu aplikacji na Androida. Każda pomoc jest mile
widziana
2
Miałem podobny problem i przypadkiem była minimalna wersja SDK w pliku .gradle. Pomyśl o tym i wersji swojego urządzenia, a to będzie pomocne.
user2881604
Tak, masz rację, to był problem z nazwą pliku apk ...!
Arsal Imam
Zmieniłem nazwę pliku apk i parse errorzniknął, ale kiedy próbuję go zainstalować, teraz pokazuje mi App not installed, że używam urządzenia marshmallow i może to to samo, co problem tutaj stackoverflow.com/questions/33930223/ ...
natsumiyu
45

Instalacja może dać określony błąd przynajmniej w następujących przypadkach:

  • Nazwa pakietu jest zmieniana po podpisaniu : Użyj dokładnej nazwy, jaką jest podpisany pakiet (zamiast tego dostosuj nazwę w Manifeście)
  • Pakiet jest kompilowany na wyższym poziomie API : Popraw poziom API w pliku Manifest
  • Pakiet jest wykonywany z karty SD : Uruchom (zainstaluj) plik apk z pamięci telefonu LUB użyj polecenia adb, aby go zainstalować
jmu
źródło
Myślę, że są inne warunki, które mogą to spowodować. Na przykład zobacz mój komentarz dotyczący odpowiedzi Kansasian poniżej na temat uzyskiwania tego komunikatu o błędzie podczas instalacji z poczty e-mail.
M Katz
Najlepsza odpowiedź tutaj. Dla mnie była to zmiana nazwy paczki po jej podpisaniu. Wielkie dzięki.
Jannie Theunissen
Zakładam, że musisz mieć zrootowany telefon, aby móc go zainstalować, adb installprawda?
opactwo
Nie: rootowanie nie jest wymagane - może być jednak konieczne włączenie Nieznanych źródeł w ustawieniach zabezpieczeń. (niepotwierdzone)
jmu
Nieznane źródła ORAZ debugowanie usb ... uwaga: w Windows 8 czasami nie rozpoznaje telefonu w trybie MTP, tylko PTP ...
SparK 17.04.14
22

Widziałem błąd analizy tylko wtedy, gdy wersja Androida na urządzeniu była niższa niż wersja, dla której aplikacja została skompilowana. Na przykład, jeśli aplikacja została skompilowana dla systemu Android OS w wersji 2.2, a Twoje urządzenie ma tylko system operacyjny Android w wersji 2.1, podczas próby zainstalowania aplikacji wystąpi błąd analizy.

Sir Scalawag
źródło
Uderzyło mnie to chwilę temu, zajęło mi to wieki!
olafure
14

Powodem jest to, że apk nie jest podpisany. Po podpisaniu apk problem zostanie rozwiązany. http://ionicframework.com/docs/guide/publishing.html Aby podpisać plik APK, użyj łącza do instrukcji.

Shivendra
źródło
Mam ten sam problem. Po podpisaniu apk działało zgodnie z oczekiwaniami.
Dino Tw
3
To był dla mnie problem z kompilacjami Xamarin Android - najpierw tworzy APK w Archive Manager, który jest niepodpisany. Następnie musisz wybrać opcję „Rozpowszechnij”, aby utworzyć podpisany pakiet APK, który można zainstalować.
dodgy_coder
Dodawanie do tego, co napisał dodgy_coder: dla Xamarin.Android 7 lub nowszych lub wcześniejszych wersji .
Veverke
13

Zamiast strzelać w ciemności, uzyskaj przyczynę tego błędu, instalując go za pomocą adb:

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

Zastąp emulator-5555nazwą swojego urządzenia. Możesz uzyskać listę za pomocą:

adb devices

W przypadku niepowodzenia poda powód. Typowe przyczyny i ich poprawki:

  1. INSTALL_PARSE_FAILED_NO_CERTIFICATES: Odniesienie
  2. INSTALL_FAILED_UPDATE_INCOMPATIBLE: Odniesienie
Veneet Reddy
źródło
Co mam zrobić, jeśli się powiedzie?
Jacob Sánchez
1
To mi bardzo pomogło. Dzięki!
Tgo1014
7

Sprawdź, czy Twoje urządzenie obsługuje wersję określoną w minSdkVersion w AndroidManifest.xml. Jeśli nie, określ niższą wersję i spróbuj ponownie

Mohammed Irfan Tirupattur
źródło
6

Jeśli kompilujesz i eksportujesz plik apk w wersji SDK 2.1, nie będzie on działał na żadnej wersji Androida poniżej eksportu SDK „2.1”. Oprogramowanie Android jest kompatybilne do przodu, a nie wstecznie kompatybilne. Na przykład, jeśli programujesz przy użyciu pakietu Android NDK (dodatek ann do zestawu SDK systemu Android), który umożliwia programowanie w rodzinie C / C ++, jest to zgodne tylko z systemem Android 2.3, Android w wersji 2.2 i poniżej obsługuje tylko kompilacje Java. Dlatego ponownie pojawi się komunikat o błędzie „Wystąpił problem podczas analizowania pakietu”.

Mikrofon
źródło
3

Inną możliwością jest zapisanie pliku apk w folderze PRYWATNY aplikacji, a następnie próba instalacji (rozpoczynając zamiar z kodu). w tym przypadku, gdy zaczynasz zamiar, otrzymasz pakiet analizy błędu. W tym przypadku zgłoszony błąd dotyczy kwestii uprawnień. Chodzi o to, że zapisywanie pliku w folderach prywatnych nie jest dobrą praktyką, jednak jeśli naprawdę chcesz to zrobić, powinieneś zapisać plik w MODE_WORL_READABLE podczas pobierania. Proszę wziąć pod uwagę, że MODE_WORLD_READABLE jest przestarzałe i to rozwiązanie nie jest najlepsze, ponieważ ma pewne problemy z bezpieczeństwem. Najlepiej jest zapisać plik w pamięci zewnętrznej.

MojAmiri
źródło
3

Nie powtarzam instrukcji tutaj, aby wprowadzić magazyn kluczy, hasło itp. Spróbuj

Kompiluj -> Generuj podpisany plik APK -> [Dane wejściowe] --- Dalej ---> wybierz OBIE

  • V1 (podpis słoika)
  • V2 (pełny podpis APK)

Nie wiem dlaczego, ale przynajmniej zadziałało w mojej sytuacji.

JeffNhan
źródło
1
Pracował dla mnie. Nie było domyślnie zaznaczone w Android Studio MacOS.
vojta
2

Wystąpił ten sam błąd (błąd analizy, wystąpił problem podczas analizowania pakietu) podczas próby zainstalowania pakietu .apk z poczty e-mail. Udało mi się obejść ten problem, instalując instalator pakietów innej firmy ApKatcher:

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

ApKatcher nie jest jedynym rozwiązaniem. Mój kolega obejść ten problem, instalując Astro File Manager.

Obie aplikacje można znaleźć w Android Marketplace.

kansasian
źródło
Aby dodać tutaj kolejny punkt danych, otrzymałem również ten błąd podczas instalacji z poczty e-mail, ale zainstalowałem się dobrze, gdy użyłem przewodu i adaptera do zainstalowania tego samego pakietu. Niestety próbowałem zainstalować za pośrednictwem poczty Yahoo, więc nie sądzę, aby ApKatcher mógł pomóc.
M Katz
1

Podobny problem z użyciem tego „pożyczonego” i nieco zmodyfikowanego kodu:

                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;

Potrzebna do zmiany sposobu tworzenia pliku na ten (przecinek zamiast plusa w konstruktorze plików, brakowało znaku „/” po katalogu pobierania):

                    File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "myapp.apk");
William T. Mallard
źródło
1

Mam złą parę tagów w moim pliku manifestu.

<meta-data>
</meta-data>

Zasadniczo dostałem się, gdy skopiowałem zły meta-dataprzykładowy kod z pliku pdf payu. Bzdury.

Siddharth
źródło
1

Jednym z powodów może być to, że nazwa Twojej aktywności nie jest zdefiniowana w manifeście

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

powyższy kod tworzy ten sam problem ze mną

Abhishek
źródło
1

Innym problemem powodującym ten błąd może być instalacja APK z ograniczonego punktu montowania karty SD /mnt/media_rw/MicroSD.

Użyj nieograniczonego punktu montowania /Removable/MicroSD.

Honza
źródło
1

Aby pomóc nowym czytelnikom, kolejnym powodem mogą być błędy w pliku manifestu. Źle wpisałem android:servicejako android.servicei napotkałem ten sam błąd ...

MortenSickel
źródło
1

Jak wspomniał @Veneet Reddy, zainstaluj go przez ADB.

Przejdź do pakietu ADT / sdk / platform-tools, wklej .apkplik i uruchom wiersz polecenia jako administrator.

Następnie uruchom adb devicespolecenie, które wyświetli listę podłączonych urządzeń lub uruchomionych emulatorów.

wprowadź opis obrazu tutaj

Następnie uruchomić adb -s yourDeviceID install yourApk.apk

wprowadź opis obrazu tutaj

Uwaga: przed ponowną instalacją odinstaluj aplikację, jeśli została już zainstalowana.

Muhammad
źródło
0

Dla każdego, kto ma ten problem, jedyny raz, kiedy otrzymałem ten błąd, to sytuacja, gdy wersja interfejsu API w konfiguracji kompilacji Androida nie pasuje do tego, co jest na urządzeniu fizycznym.

Wejdź do Eclipse i kliknij prawym przyciskiem myszy swój projekt i przejdź do właściwości. Wybierz Androida - KTÓRY PRZEPROWADZI CIĘ DO CELOWEGO SYSTEMU ANDROID. Dostosuj cel tak, aby pasował do urządzenia i sprawdź, czy to rozwiąże problem.

j2emanue
źródło
0

Miałem ten problem, nawet gdy podałem poprawną wersję minSDK i targetSDK. Mój problem polegał na tym, że używałem "android:theme="@android:style/Theme.NoTitleBar.Fullscreen"w działaniu programu uruchamiającego na urządzeniu Jellybean. Kiedy usunąłem ten atrybut, zadziałało.

user1035292
źródło
0

Jak wspomniano w kilku innych odpowiedziach, mogą wystąpić problemy podczas instalacji z karty SD. W moim przypadku dystrybuowałem moją aplikację za pośrednictwem załącznika do wiadomości e-mail i zwykle działało dobrze. Po prostu otwórz wiadomość e-mail i pobierz załącznik (najwyraźniej trafia na kartę SD) i kliknij go ponownie, a zostanie zainstalowany.

Ale pewnego dnia to nie zadziałało i okazało się, że to dlatego, że miałem telefon podłączony do mojego komputera deweloperskiego przez USB i to umieściło kartę SD w innym trybie lub coś w tym stylu. Rozwiązaniem było więc po prostu odłączenie telefonu od komputera, a następnie ponowne wysłanie wiadomości e-mail i ponowne pobranie załącznika. Lub ustaw połączenie USB w tryb „tylko ładowanie”, aby karta SD nie była „podłączona” do komputera.

RenniePet
źródło
0

Możesz również sprawdzić dzienniki na urządzeniu, aby sprawdzić, czy jest to coś prostego, na przykład problem z uprawnieniami. Dzienniki można sprawdzić, korzystając adbz komputera hosta / debugowania:

adb logcat

Lub jeśli masz dostęp do konsoli (lub podczas korzystania z Androida-x86 pobierz konsolę, wpisując Alt+ F1), możesz sprawdzić dzienniki za pomocą logcatpolecenia:

logcat
Pierz
źródło
0

Miałem ten sam problem podczas korzystania z pliku apk wyeksportowanego z android‌ Tools > Export. Zamiast tego użyłem pliku apk w folderze bin i zadziałało!

Plik PS apk w folderze bin jest tworzony po pierwszym uruchomieniu aplikacji w eclipse.

Ali Sheikhpour
źródło
0

użyj go wewnątrz build.gradle (Moduł: aplikacja)

 minSdkVersion 14
    targetSdkVersion 28
SHUBHASIS MAHATA
źródło
Powinieneś wyjaśnić, dlaczego dotyczy to wersji min 14 i 28. Sprawdź także swoje formatowanie;)
m02ph3u5 Kwietnia
0

Miałem ten problem Parse Error : There is a problem parsing the package. , który testowałem na Androidzie-8. Mam ten sam plik APK z tym samym podpisem. Wszystko było takie samo bez numeru wersji i nazwy wersji. Aplikacja instalowała się, gdy instalowałem ją ręcznie, ale ten błąd wystąpił podczas pobierania i instalowania aktualizacji programowo. Wtedy znalazłem przyczynę problemu.

Dostępna była opcja sprawdzenia canRequestPackageInstalls (). Gdy ta metoda zwróci wartość true, aplikacja zostanie pomyślnie zainstalowana. W moim przypadku zawsze zwracała fałsz.

Więc najpierw to sprawdzam, a następnie pozwalam użytkownikowi pobrać i zainstalować aktualizacje.

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

        }

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

Wtedy, kiedy trzeba zainstalować aktualizację,

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

Mam nadzieję, że to komuś pomoże.

Rasel
źródło
-1

Mam ten sam komunikat o błędzie „Błąd analizy: wystąpił problem podczas analizowania pakietu” z moimi podpisanymi pakietami APK tak jak inne, ale podejrzewam, że może to być spowodowane różnymi przyczynami.

Aby to przetestować, wykonałem następujące czynności:

Skonfiguruj Windows 8.1 Eclipse ADT, kompilacja: v22.6.2-1085508

Wygenerowałem typową nową aplikację Helloworld akceptującą wszystkie ustawienia domyślne.

Uruchomiłem aplikację na emulatorze i urządzeniu na żywo.

Następnie sideloaded i zainstalował apk na moim urządzeniu na żywo i pomyślnie go uruchomiłem.

Wygenerował apk w folderze bin o rozmiarze 782 KB.

Następnie wyeksportowałem aplikację Helloworld do tego samego folderu bin, podpisując aplikację z mojego magazynu kluczy, który był z powodzeniem używany w przeszłości do promowania w Google Play.

Utworzył plik APK o rozmiarze 385 KB (zastępując oryginalny plik APK).

Pobrałem pakiet apk na moje urządzenie i kiedy poszedłem go zainstalować, otrzymałem komunikat o błędzie „Błąd analizy: wystąpił problem podczas analizowania pakietu” (jest to ten sam pakiet, który został pobrany i zainstalowany jako nieeksportowany formularz).

William Bell
źródło