Android uygulamasını yüklerken "Ayrıştırma Hatası: Paket ayrıştırılırken bir sorun var"


106

Android uygulamasını ( Parse Error : There is a problem parsing the package.) yüklerken bu hatayı aldım . Aşağıdaki adımları uyguladım.

  1. Uygulamayı ilk kez kurdum ve iyi çalışıyor.

  2. Mevcut uygulamada değişiklikler yaptım ve Manifest dosyasındaki sürüm numarasını değiştirdim.

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openintents.samples.BasicOpenARDemo" android:versionCode="2" android:versionName="1.0.1">
  3. Ardından uygulamayı dışa aktarıyorum ve kod imzalama işlemini bitiriyorum. Bunun için Proje düğümünüzü Sağ tıklayın> Dışa Aktar'ı seçin. Orada bir sihirbaz göreceksiniz. Adımları izleyin ve kod imzalama işlemini de tamamlayın.

  4. ARDemo.apk dosyasını aldım, sonra adını ARDemo1.apk olarak değiştirdim

  5. Daha sonra bu apk dosyasını mobil SD Karta gönderdim ve kuruluma başladım yukarıdaki hatayı aldım.

Google'da araştırdım, manifest dosyasını açarken bu sorunu söylüyorlar.

Biri bana neyin yanlış olabileceğini söyleyebilir mi?


sürüm numarasını üçe koymalısınız. lütfen wikitude web sitesindeki Japonca öğreticiye bakın

Merhaba Ejder, Cevabınız için teşekkürler. Sorunum zaten çözüldü. Hatam "apk dosya adını manuel olarak değiştirdim". Yukarıdaki 2'de uygulama sürüm kodum minsdk değeri değil. Minsdk değerini 3 olarak koydum. Teşekkürler ve Saygılar, Raghavendra K
Raghu

4
sadece yeniden adlandırmanın neden bir sorun haline geldiğini düşünüyorum?
Mikey

Merhaba Mike, ihracattan sonra ismini değiştirdim. Bu yüzden hata veriyor. Dışa aktarırken bir diff adı belirtirsek, benim için sorun olmaz ..
Raghu

1
Merhaba Cru, Sürüm no'nun değiştirilmesi bu sorunu yaratmadı. Dışa aktarımı yaptıktan sonra apk dosyasını yeniden adlandırdım. Bu sorunu yaratır.
Raghu

Yanıtlar:


50

Uygulamayı ilk kurduğunuzda iyi çalıştığını söylediniz.

İki sürüm arasında özetlediğiniz adımlardaki tek fark:

  1. Sürüm numarası (bunun herhangi bir şeyi kırmaya dahil olmadığını varsayıyorum)
  2. Kod
  3. .Apk dosyasının adı

ARDemo1.apk dosyasını tekrar ARDemo.apk olarak yeniden adlandırmayı deneyin (eski sürümü yedeklediğinizden emin olun) ve bunun yardımcı olup olmadığına bakın. Tahminimce apk adıyla bir ilgisi var.

Hala çalışmıyorsa, o zaman apk dosyasının adını sorunun kaynağı olarak ortadan kaldırabilir ve eski sürümünüzü yeniden oluşturarak 2) araştırmaya başlayabilir ve aynı sorunu tekrar yaşayıp yaşamadığınızı görebilirsiniz. Eski kodunuzun yeniden oluşturulmuş sürümünde sorun yoksa, kodunuzla ilgili bir şey olması gerektiğini bilirsiniz.

Umarım bu seni bir yere götürür.

Şerefe, Joseph


Merhaba Yusuf, tahmininiz doğru. Apk dosyasını öncekiyle yeniden adlandırdım. İşe yarıyor ...... Yardımınız için çok teşekkür ederim .....
Raghu

Merhaba, benzer bir sorunla karşı karşıyayım. Uygulamayı bir web bağlantısından indiriyorum. Mobil SDCard'a mükemmel bir şekilde oturur. Ancak yüklemeye çalıştığımda bu hatayı gösteriyor. Başvurumu imzalamadım, temelde Android uygulama geliştirme konusunda acemiyim. Her türlü yardım için minnettarız :)
varunrao321

2
Benzer bir sorunla karşılaştım ve durum .gradle dosyasında minimum SDK sürümü idi. Bunu ve cihazınızın sürümünü düşünün ve bu yardımcı olacaktır.
user2881604

Evet, haklısınız, apk dosya adındaki sorun buydu ...!
Arsal Imam

Apk dosyasını yeniden adlandırdım ve dosya parse errorgitti, ancak şimdi yüklemeye çalışırken bana App not installedbir hatmi cihazı kullandığımı ve belki de buradaki sorunla aynı olduğunu gösteriyor stackoverflow.com/questions/33930223/…
natsumiyu

45

Kurulum en azından aşağıdaki durumlarda belirtilen hatayı verebilir:

  • İmzalamadan sonra paketin adı değiştirilir : İmzalanan paket olduğu gibi tam adı kullanın (bunun yerine Manifest'teki adı ayarlayın)
  • Paket, daha yüksek API seviyesinde derlenir : Manifest dosyasında API seviyesini düzeltin
  • Paket SD karttan yürütülür : apk dosyasını telefon belleğinden çalıştırın (yükleyin) VEYA yüklemek için adb komutunu kullanın

Sanırım bunu gerçekleştirebilecek başka koşullar var. Örneğin, e-postadan yüklerken bu hata mesajını alma hakkındaki kansasian'ın cevabı hakkındaki yorumuma bakın.
M Katz

En iyi cevap burada. Benim için imzalandıktan sonra paketin adını değiştiriyordu. Çok teşekkürler.
Jannie Theunissen

adb installDoğru kullanarak kurabilmek için köklü bir telefona ihtiyacınız olduğunu varsayıyorum.
abbood

Hayır: Köklendirme gerekli değildir - yine de Güvenlik ayarlarından Bilinmeyen kaynakları etkinleştirmeniz gerekebilir. (onaylanmamış)
jmu

Bilinmeyen kaynaklar VE usb hata ayıklama ... not: Windows 8'de bazen telefonu MTP modunda tanımaz, sadece PTP ...
SparK

23

Ayrıştırma hatasını yalnızca cihazdaki android sürümü uygulamanın derlendiği sürümden daha düşük olduğunda gördüm. Örneğin, uygulama android OS v2.2 için derlenmişse ve cihazınızda yalnızca android OS v2.1 varsa, uygulamayı yüklemeye çalıştığınızda bir ayrıştırma hatası alırsınız.


Bir süre önce buna çarpmıştım, anlamam yıllar aldı!
olafure

14

Nedeni apk'nin imzalanmamış olmasıdır. Apk imzalandıktan sonra sorun çözülecektir. http://ionicframework.com/docs/guide/publishing.html Lütfen apk'yi imzalamak için talimatlardaki bağlantıyı kullanın.


Burada da aynı problem. Apk imzalandıktan sonra beklendiği gibi çalıştı.
Dino Tw

3
Bu, Xamarin Android derlemelerinde benim için bir sorundu - önce Arşiv Yöneticisinde imzasız bir APK oluşturur. Yüklenebilecek imzalı bir APK oluşturmak için "Dağıt" ı seçmelisiniz.
dodgy_coder

Dodgy_coder'ın yazdıklarına ekleme: Xamarin.Android 7 veya üstü veya önceki sürümler için .
Veverke 01

13

Karanlıkta çekim yapmak yerine, bu hatanın nedenini şu yolla yükleyerek öğrenin adb:

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

emulator-5555Cihaz adınızla değiştirin . Şunları kullanarak bir liste edinebilirsiniz:

adb devices

Başarısızlık üzerine bir sebep verecektir. Yaygın nedenler ve düzeltmeleri:

  1. INSTALL_PARSE_FAILED_NO_CERTIFICATES: Referans
  2. INSTALL_FAILED_UPDATE_INCOMPATIBLE: Referans

Başarılı olursa ne yapmalıyım?
Jacob Sánchez

1
Bu bana çok yardımcı oldu. Teşekkürler!
Tgo1014

7

Cihazınızın AndroidManifest.xml'de minSdkVersion'da belirttiğiniz sürümü destekleyip desteklemediğini kontrol edin . Daha düşük sürümü belirtmezseniz ve tekrar deneyin


6

APK dosyanızı SDK sürüm 2.1 altında derliyor ve dışa aktarıyorsanız, SDK dışa aktarmanızın "2.1" altındaki herhangi bir android sürümünde çalışmayacaktır. Android yazılımı ileriye dönük olarak uyumludur, geriye dönük olarak uyumlu değildir. Örneğin, C / C ++ ailesinde geliştirmeye izin veren android NDK (android SDK'ya ann eklentisi) paketini kullanarak programlama yapıyorsanız, bu yalnızca android 2.3, android sürüm 2.2 ve daha düşük sürümlerle uyumludur ve yalnızca java sürümlerini destekler. Bu nedenle, "Paketin ayrıştırılmasında bir sorun var" hatasını yeniden alacaksınız.


3

Diğer bir olasılık da, apk dosyasını PRIVATE uygulamasına kaydetmiş olmanız ve ardından yüklemeyi denemenizdir (kodunuzdan bir amaç başlatarak). bu durumda, niyete başladığınızda, paketi ayrıştırma hatası alırsınız. Bu durumda, ortaya çıkan hata izin sorunlarıyla ilgilidir. Önemli olan, dosyayı özel klasörlere kaydetmek iyi bir uygulama değildir, ancak bunu gerçekten yapmak istiyorsanız, dosyayı indirirken MODE_WORL_READABLE'da yazmalısınız. Lütfen MODE_WORLD_READABLE'ın kullanımdan kaldırıldığını ve bu çözümün bazı güvenlik sorunları olduğu için en iyisi olmadığını göz önünde bulundurun. En iyisi, dosyanızı harici bir depolamaya kaydetmektir.


3

Anahtar deposu, şifre vb. Girmek için burada söylenenleri tekrar etmiyorum. Deneyin

Oluştur -> İmzalı APK Oluştur -> [Giriş] --- Sonraki ---> İKİSİNİ seçin

  • V1 (Kavanoz İmzası)
  • V2 (Tam APK İmzası)

Neden bilmiyorum ama en azından benim durumumda işe yaradı.


1
Benim için çalıştı. Varsayılan olarak Android Studio MacOS'ta kontrol edilmemiştir.
vojta

2

E-postadan .apk paketi yüklemeye çalışırken aynı hatayı aldım (Ayrıştırma Hatası, paketi ayrıştırmada bir sorun var). 3. parti paket yükleyici ApKatcher'ı kurarak sorunu çözmeyi başardım:

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

ApKatcher tek çözüm değil. Bir meslektaşım Astro File Manager'ı kurarak sorunu çözdü.

Her iki uygulamayı da Android Marketplace'te bulabilirsiniz.


Buraya başka bir veri noktası eklemek için, e-postadan yüklerken de bu hatayı alıyordum, ancak aynı paketi yüklemek için bir kablo ve adb kullandığımda iyi bir şekilde yüklendi. Ne yazık ki yahoo postası ile yüklemeye çalışıyordum, bu yüzden ApKatcher'ın yardımcı olabileceğini düşünmüyorum.
M Katz

1

Bu "ödünç alınmış" ve biraz değiştirilmiş kodu kullanarak benzer sorun:

                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;

Dosya oluşturmayı şu şekilde değiştirmek gerekiyordu (Dosya yapıcısında artı yerine virgül, indirme dizininden sonra '/' eksikti):

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

1

Manifest dosyamda hatalı bir etiket çifti vardı.

<meta-data>
</meta-data>

meta-dataPayu pdf dosyasından kötü bir örnek kod kopyaladığımda temelde girdim . Bok.


1

Bunun bir nedeni, etkinlik adınızın bildirimde tanımlanmamış olması olabilir.

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

yukarıdaki kod benimle aynı sorunu yaratıyordu


1

Bu hataya neden olan başka bir sorun, APK'yı kısıtlı SD kart takma noktasından yüklemek olabilir /mnt/media_rw/MicroSD.

Sınırsız bağlama noktası kullanın /Removable/MicroSD.


1

Ve sadece olası yeni okuyuculara yardımcı olmak için, başka bir neden de manifest dosyasındaki hatalar olabilir. Ben yanlış yazmış olduğu android:servicekadar android.serviceaynı hataya koştu ...


1

@Veneet Reddy tarafından belirtildiği gibi ADB aracılığıyla kurun.

Dosyanızın yanından ADT Bundle / sdk / platform-tools'a gidin .apkve yönetici olarak komut istemini çalıştırın.

Ardından, çalışan adb devicesbağlı cihazları veya emülatörleri listeleyen komutu çalıştırın.

görüntü açıklamasını buraya girin

O zaman koş adb -s yourDeviceID install yourApk.apk

görüntü açıklamasını buraya girin

Not: Yeniden yüklemeden önce zaten yüklediyseniz uygulamayı kaldırın.


0

Bu sorunu yaşayan herkes için bu hatayı aldığım tek zaman, Android Build yapılandırmanızdaki API sürümünün fiziksel cihazdakilerle eşleşmediği zamandı.

Eclipse'e gidin ve projenize sağ tıklayın ve mülklere gidin. HEDEF OLUŞTURMA ANDROID'E GETİREN Android'i seçin. Hedefinizi cihazla eşleşecek şekilde ayarlayın ve sorunun çözülüp çözülmediğine bakın.


0

Doğru minSDK ve targetSDK sürümünü belirlediğimde bile bu sorunu yaşadım. Benim sorunum, "android:theme="@android:style/Theme.NoTitleBar.Fullscreen"Jellybean cihazında başlatıcı etkinliğinde kullanıyordum . Bu özelliği kaldırdığımda işe yaradı.


0

Diğer cevaplardan birkaçının da bahsettiği gibi, SD karttan yükleme yaparken sorunlar olabilir. Benim durumumda, uygulamamı e-posta eki aracılığıyla dağıtıyordum ve genellikle iyi çalıştı. Sadece e-postayı açın ve eki indirin (görünüşe göre SD karta gider) ve tekrar tıklayın ve yüklenir.

Ama sonra bir gün işe yaramadı ve bunun sebebi, telefonumun geliştirme bilgisayarıma USB aracılığıyla bağlanmış olması ve bunun da SD kartı farklı bir moda veya başka bir moda yerleştirmesiydi. Yani çözüm basitçe telefonun bilgisayardan bağlantısını kesmek ve ardından e-postayı tekrar göndermek ve eki yeniden indirmekti. Veya USB bağlantısını "yalnızca şarj" moduna getirin, böylece SD kart PC'ye "bağlı" olmaz.


0

İzin sorunu gibi basit bir şey olup olmadığını görmek için cihazdaki günlükleri de kontrol etmek isteyebilirsiniz. Günlükleri adbbir ana bilgisayardan / hata ayıklama bilgisayardan kontrol edebilirsiniz :

adb logcat

Veya konsola erişiminiz varsa (veya Android-x86 kullanırken konsolu Alt+ yazarak alın F1), şu logcatkomutu kullanarak günlükleri kontrol edebilirsiniz :

logcat

0

Dışa aktarılan apk dosyasını kullanırken de aynı sorunu yaşadım android‌ Tools > Export. Bunun yerine apk dosyasını bin klasöründe kullandım ve işe yaradı!

Bin klasöründeki PS apk dosyası, uygulamayı tutulmada ilk kez çalıştırdıktan sonra oluşturulur.


0

build.gradle içinde kullanın (Modül: app)

 minSdkVersion 14
    targetSdkVersion 28

Min sürüm 14 ve 28'in neden hedeflendiğini açıklamalısınız. Biçimlendirmenizi de kontrol edin;)
m02ph3u5

0

Parse Error : There is a problem parsing the package. Android-8'de test ettiğim bu problemi yaşadım. Aynı imzaya sahip aynı apk'ye sahibim. Sürüm numarası ve sürüm adı olmadan her şey aynıydı. Uygulama manuel olarak yüklediğimde yükleniyordu ancak bu hata, güncellemeleri programlı olarak indirip yüklerken oluştu. Sonra sorunun nedenini buldum.

CanRequestPackageInstalls () ' ı kontrol etmek için bir seçenek vardı. Bu yöntem true döndürdüğünde uygulama başarıyla yüklenir. Benim durumumda her zaman yanlış dönüyordu.

Bu yüzden önce bunu kontrol ediyorum ve ardından kullanıcının güncellemeleri indirip yüklemesine izin veriyorum.

OnCreate'de ()

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 () içinde

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

Sonra güncellemeyi yüklemeniz gerektiğinde-

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

Umarım birine yardımcı olur.



-1

İmzalı APK'lerimle diğerleri gibi aynı "Ayrıştırma hatası: Paketi ayrıştırmada sorun var" hata mesajını yaşıyorum, ancak bunun farklı nedenlerden kaynaklandığından şüpheleniyorum.

Bunu test etmek için şunları yaptım:

Windows 8.1 Eclipse ADT Yapısını Kur: v22.6.2-1085508

Tüm varsayılanları kabul eden tipik bir yeni Helloworld uygulaması oluşturdum.

Uygulamayı bir emülatörde ve canlı cihazda başarıyla çalıştırdım.

Daha sonra, apk'yi canlı cihazıma yan yükledim ve yükledim ve başarıyla çalıştırdım.

Bin klasöründe 782 KB boyutunda bir apk oluşturmuştu.

Daha sonra Helloworld uygulamasını, geçmişte Google Play'e tanıtmak için başarıyla kullanılan anahtar depomdan imzalayarak aynı bin klasörüne aktardım.

385 KB boyutunda bir APK oluşturdu (orijinal apk'nin yerine).

Apk'yi cihazıma başka bir yerden yükledim ve yüklemeye gittiğimde "Ayrıştırma hatası: Paketi ayrıştırmada bir sorun var" hatasını aldım (bu, dışa aktarılmamış bir form olarak yapıldığında yandan yüklenen ve yüklenen paketin aynısıdır).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.