Hata [INSTALL_FAILED_INVALID_APK]


86

Android Studio 0.2.10'da yeni oluşturduğum bir projeyi çalıştırmak için tıkladığımda ve Android'imi seçtiğimde (USB ile hata ayıklama açıkken USB ile bağlı) şu hatayı alıyorum:

Waiting for device.
Target device: 0123456789ABCDEF
Uploading file
    local path: /Users/Rui/AndroidStudioProjects/FirstAppProject/FirstApp/build/apk/FirstApp-debug-unaligned.apk
    remote path: /data/local/tmp/rui.firstapp
Installing rui.firstapp
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/rui.firstapp"
pkg: /data/local/tmp/rui.firstapp
Failure [INSTALL_FAILED_INVALID_APK]

Ne olabileceğine dair herhangi bir fikriniz var mı?


Telefonumu seç ... !! Öykünücü mü demek istediniz ... ??
Gokul Nath KP

1
Hayır, Android'im USB ile hata ayıklama açık.
RuiG

Uygulamanın kullandığınız cihazla uyumlu olduğundan emin misiniz? Bildiriminizdeki MinSDKve TargetSDKdeğerlerini kontrol edin . Bunu bir emülatöre yüklemeyi denediniz mi? Bu, sorunun APK'da mı yoksa cihazınızda mı olduğunu daraltır.
free3dom

Yanıtlar:


156

Bunu Android Studio'da alıyordum ve düzeltmek için yaptığım tek şey gitmekti "Build" > "Clean Project"ve işe yaradı.


8
Hala çalışmıyorsa, Temiz Projeden Sonra Oluştur -> Yeniden Oluştur Proje çalışacaktır.
Pei

Bunu 5.4.1'den 5.6.1'e kadar bir güncellemeyle aldım - buna hangi tuhaflığın neden olduğundan emin değilim, ancak büyük kademeli yükseltmeler kesinlikle yapabilir. Alternatif bir komut satırı çözümünün ./gradlew cleanardından normal derleme komutunuz gelir
Mike Hardy

23

Klasördeki eski APK android / app / build / outputs / apk / debug / app-debug.apk dosyasını kaldırın. bu kadar. kodlamanın keyfini çıkarın ...


Hoşgeldiniz @VenkateshMogili
mahendren

1
rm -fr android/app/build/outputs/apk/debug/
felansu

15

Benzer bir sorunu bir kez yaşadım, gözlemlediğim şey, Androidmanifest.xml dosyamdaki paket adı bir boşluk karakteri ile başlatıldı. like " com.example.test" instead of "com.example.test"

Bu tür tüm geçersiz boşlukları manifest dosyamdan kaldırdım, sorunumu çözdü

Paket adında Düzenleme 1 : '-' bazı Android sürümlerinde de aynı soruna neden oluyor


1
Vaov! invalidate cache and restartTemiz bir yapıya zorlayacağını düşündüm , görünüşe göre öyle değil
GabrielOshiro

10

Aynı sorunu yaşadım ama çözümlerin hiçbiri benim için işe yaramadı. Sorun benim hiç sahip olmamamdı . paket adımda ayırıcılar.
yani paketinizin adı my.packagename ise sorun değil ama sadece mypackagename olamaz
Bu hata raporundan ipucu aldınız .

https://code.google.com/p/android/issues/detail?id=55841


9

Birisi hala sorun yaşıyorsa, o zaman Build-> Clean Project ve ardından Build- > Rebuild projesini en sonunda Gradle dosyasıyla senkronize edin .


8

Bu sorunu nasıl çözeriz:

  1. Yüklemek RootExplorer
  2. tmpSD kartta yeni klasör oluştur
  3. Tmp klasörüne uzun basın ve Linkbu klasörü seçin (menüdeki son seçenek)
  4. Alttaki /data/local/düğmeye gidin ve dokununCREATE LINK

8

Bu sorunu yaşadım ve yukarıdaki çözümlerden hiçbiri benim için işe yaramadı.

Bazı nedenlerden dolayı, /data/local/tmpdizinimde izinler doğru ayarlanmadı (sadece kök rwx'e sahipti). ADB kullanarak sorunu düzelttim (köklü bir cihaza ihtiyacınız olacak):

  1. Telefonunuzu USB ile bağlayın
  2. ADB'yi kullanarak başlatın adb shell
  3. Taşı /data/localkullanılarakcd /data/local
  4. Şunu kullanarak kök moduna geçin su
  5. tmpKullanarak dizinde okuma / yazma / yürütmeye izin verchmod 777 tmp
  6. Bağlantıyı kesin, Android Studio'yu yeniden başlatın ve cihazı tekrar takın

7

Anında Çalıştırmayı kapatarak sorunumu çözdüm. Şimdiye kadar herhangi bir açıklama bilmiyorum. Android studio 3.0'a geçtikten sonra böyle bir problem başlar. Umarım bu gelecekte birine yardımcı olur.


6

Bu sorunu yaşadığımda, benim için düzeltilen şey, AndroidManifest.xml paket adının build.grade applicationId ile aynı olmasını sağlamaktı.


3

Bu hatanın başka bir sebebini buldum. Cihazınızın / data / local / tmp erişim izinlerini köklendirdiyseniz, adb geçici dosyaya erişemeyeceği için değiştirilebilir. Çözüm, sdcard üzerinde "tmp" klasörü oluşturmak ve / data / local / dizininde sembolik bağlantı oluşturmaktır (ADB kabuğu veya Kök Gezgini aracılığıyla).


Buna inanamadım: başka bir cihazla çapraz kontrol edin (tüm izinler kök düzeyine kadar aynı görünüyordu); izinlerle uğraştı (onları 777 eşit yaptı) - mümkün değil. Peki ne kaybedilecek. Sembolik bağlantıyı denedim - vay! Çalışır (+1). Bunun nedenini ve arkasında ne olduğunu hala bilmek istiyorum. Benim durumumda buna neden olan köklendirme değildi, ancak ADB arka plan programının "güvensiz modda" (yani kök izinleriyle) çalışmasını sağlamaktı.
Izzy

3

android:extractNativeLibs="false"AndroidManifest dosyasına yazarsanız . sonra değiştirandroid:extractNativeLibs="true"


3

Yukarıda sunulan çözümlerin çoğunu denedim (basit olanlar, chmod sunan ve dahili kitaplıkları değiştirenler değil) ve hiçbiri çalışmıyor

Sonunda benim için işe yarayan şey şuydu: "Clean Project" -> "Rebuild Project" -> build.gradle uygulama modülünde uygulama versionName'i değiştirdi -> Gradle'ı Eşitle -> Uygulamayı cihazda çalıştır


Bu yöntem benim için çalıştı !! Çok teşekkür ederim, bununla uzun süredir mücadele ediyordum, bu gerçekten bir hayat kurtarıcı! Yeterince teşekkür edemem
stb_dev

3

Şu yöne rotayı ayarla Run/Debug Configurations

Üst sekmeden Çalıştır> Konfigürasyonları Düzenle'yi tıklayın.

  • Modül: Uygulamanızı seçin
  • Kurulum Seçenekleri: Varsayılan APK'yi Dağıt
  • Tamam

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


2

Bu benim durumumda yardımcı oldu:

Settings -> Apps -> Google Play Store -> Click "Enable" button.

Vay. Teşekkürler. GooglePlay'i devre dışı bıraktım ve sorunlarımın temel nedeninin bu olduğunu fark etmedim.
W0rmH0le

2

Bu sorunla eşleşmeyen yapı varyantlarına sahip olarak karşılaştım. Kalan modüller yayınlanırken hata ayıklama varyantında bir Dinamik Teslimat modülü vardı. Dinamik Teslimat modülünü serbest bırakmak, yeniden oluşturmak ve kurmak için değiştirmeniz sorunu çözdü.


2

Flutter projeleri için VS Code editörü ile proje kaynak klasörüne gidin ve "build" klasörünü silin ve hata ayıklamaya başlayın.


2

Bu sorunu Dagger ve birden çok modül içeren bir projede aldım. Benim için işe yarayan şey (yukarıdakilerin hiçbiri işe yaramadı) 1) .gradle klasörünü boşaltmaktı 2) .idea klasörünü boşaltmak 3) gradle.properties projesinde, mark org.gradle.caching = false 4) AS'deki önbellekleri muhtemelen geçersiz kılmak , temizle, yeniden oluştur

Sadece # 3 ile kurtulabilir, temizleyip inşa edebilirsiniz.

DÜZENLEME: Son zamanlarda AS'yi yeniden başlatarak, ardından temizlik yaparak ve ardından tekrar kurarak bu sorunu çözebildim.


garip bir şekilde. yukarıda biraz denedim. bu benim için çalıştı Bu android geliştirme çıldırıyor. 30 saniye kodlayın ve
yapıyı

@satyajit. 5 dakika!! benimki 10 alır! Bu benim için sürekli çalışan tek şey.
Dan Anderson

bunun ./gradlew installDebugkomut satırından çalışmasını sağlayabiliyorum
satyajit

2

Bu sorunun benim için nedeni, uygulamamın modüllerinden biri için yanlış derleme varyantının seçilmesiydi. "Varyantları Oluştur" aracından, uygulama modülüyle eşleşen modül varyantını seçtim ve sorunu benim için düzelttim.


1

Android Studio'da bu sorunu yaşadım çünkü Hata Ayıklama yapıma sürüm adı soneki -DEBUG ekledim ve - sorundu.

Sürüm adlarınızda ve uygulama kimliklerinizde yalnızca harf, rakam ve nokta bulundurmaya çalışın


0

Ben de aynı hatayı aldım. 2015 yılı uygulama kimliğimde vardı. 2015'i on beş ile değiştirdim ve bu sorunu çözdü.

Ayrıca, Android Studio kullanıyorsanız şunları deneyebilirsiniz: Araçlar / Android / Gradle Files ile Projeyi Senkronize Et


0

Cihaz ayarlarında uygulamayı Durdurmaya Zorlayın.


0

Bu sorunu yaşadım ve yukarıdaki çözümlerden hiçbiri benim için işe yaramadı.

Bunun nedeni muhtemelen yalnızca sdcard'da kota veya apk yükleme izinlerine sahip olan kök sürüm telefondur.

ADB kullanarak sorunu düzelttim (köklü bir cihaza ihtiyacınız olacak):

  1. Telefonunuzu USB ile bağlayın
  2. Adb kabuğunu kullanarak ADB'yi başlatın
  3. Su kullanarak kök moduna geçin
  4. sdcard'da tmp klasörü oluşturun: mkdir / sdcard / tmp
  5. cd / veri / yerel
  6. sdcard'daki klasöre bağlantı oluşturun: ln -s / sdcard / tmp tmp

0

Bu başarısızlığın birden fazla nedeni var gibi görünüyor. Benim için sorun, AndroidManifest dosyasında 'uses-library' etiketini kullanarak var olmayan bir kitaplığa (yalnızca bu belirli cihazda) başvurmuş olmamdı. Bu cihaza apk'nın sahip olmadığı kitaplık kaldırıldıktan sonra düzgün bir şekilde yüklendi.


0

Androidquickstart maven arketipini kullandım ve aynı sorunla karşılaştım:

Paket adım sadece bir android hızlı başlangıçtı. Önceki tavsiyelere göre

  1. Paketi androidquickstart.test olarak değiştirdim
  2. daha sonra AndroidManifest.xml bir değişmiş package="androidquickstart"için package="androidquickstart.test"ve buna bağlı olarak XML diğer parçalarından testi çıkarıldı <activity android:name=".test.HelloAndroidActivity" >için<activity android:name=".HelloAndroidActivity" >
  3. ve ayrıca java dosyalarındaki paket sorunları düzeltildi (IDE tarafından vurgulanmıştır)

0

Paket adınız com.example veya prashant.mydairy gibi noktalarla birleştirilmiş kelimeleri içermelidir ..... şimdi sorunsuz çalışmalıdır

paket adını güncellemeniz gereken dosyalar aşağıdaki gibidir: 1) Manifest dosyası 2) Gradle dosyası (modül appp): applicationId "package.name"


1
yorum olmalı
Furqan


0

Cihaz konsoluna (adb kabuğu) erişiminiz varsa, aşağıdaki izinleri değiştirin:

  1. chmod 777 / veri /
  2. chmod 777 / data / local /
    Ayrıca apk'yi kopyalamayı deneyebilirsiniz /data/local/, bu durumda apk için doğru izinleri de ayarladığınızdan emin olun .
  3. chmod 777 /data/local/myapk.apk Artık bir kurulumu şu şekilde deneyebilirsiniz: pm install -r -d /data/local/myapk.apk (mutlak yolu not edin)

0

Noktanın suçlu olmasından sonra bir sayı var gibi görünüyor .

Aşağıdaki applicationId ile aynı sorunu yaşadım

org.tony.stark.125jarvis

Olarak değiştiriliyor

org.tony.stark.jarvis

Uygulamayı android cihazlara yükleyebildim.


0

Bu hatayı alabilirsiniz minSdkVersioniçinde builde.gradlecihazın Android sürümü daha büyüktür. Bu durumda minSdkVersion.


0

AndroidManifest.xml'deki kodu silin:

araçlar: replace = "android: appComponentFactory" android: appComponentFactory = ""

işe yarıyor.

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.