Güncellenmiş bir APK'nın manuel olarak yüklenmesi, "imzalar önceden yüklenmiş sürümle eşleşmiyor" şeklinde başarısız oluyor


81

Birkaç arkadaşımla paylaşmak için aptal bir uygulama geliştirdim. Uygulama mağazasına koymanıza gerek yok.

İlkini apk(imzalı) oluşturdum, bir web sunucusuna yükledim ve hepsi iyi çalıştı.

Küçük bir sorun ortaya çıktı, onu düzelttim, yeniden oluşturdum, aynı anahtar deposu ile imzaladım ve tekrar yükledim. Görünüşe göre yenisinden yükleyemiyorum apk. Hata ayıklayıcı bana şunu söylüyor:

signatures do not match the previously installed version

Bu yüzden, uygulama çekmecesini açıp "kaldır" düğmesine sürükleyerek eski sürümü kaldırdım. "Ayarlar -> Uygulamalar" açılırken artık onu hiçbir yerde göremiyorum. Cihazımda uygulamanın herhangi bir izini görmüyorum.

Yine de yukarıdaki hata mesajını alıyorum.

Cihazda bir yerde hala bazı bilgilerin kalması mümkün mü ? Bunu doğrulamanın bir yolu var mı?


Yanıtlar:


169

Evet Bir şekilde eski uygulamanızın% 100 kaldırılmaması veya verilerinin silinmemesi mümkündür.

Deneyin:

adb uninstall "com.yourapp.yourapp"

"Com.yourapp.yourapp" yerine tam olarak neyi koyacağınızı bilmiyorsanız, Android stüdyosunu açın, uygulamanızı bir cihaza bağlıyken çalıştırın ve ardından Hata Ayıklama penceresine bakın.

Diyor ki:

 Waiting for device.
 Target device: samsung-sm_t531-xxxxxxxxx
 Uploading file
 local path: C:\Users\myapp\app\build\outputs\apk\myapp.apk
 remote path: /data/local/tmp/com.myapp.myapp
 Installing com.myapp.myapp
 DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.myapp.myapp"
 pkg: /data/local/tmp/com.myapp.myapp
 Success

Bu durumda com.myapp.myapp, kaldırmak için kullanmanız gereken paketin adıdır.


1
Gerçekten sorun buydu. Bir kez telefona doğrudan Android Studio'dan dağıtmıştım. Görünüşe göre bu sürüm düzgün bir şekilde kaldırılmamış. Son bir soru: Bunu Android Studio'dan yapmanın bir yolu var mı? Veya doğrudan oradan adb çalıştırır mısınız?
exhuma

Evet, android uygulamanızdan kabuk komutlarını nasıl çalıştıracağınızı öğrenmeye çalışın. Bu ileti dizisi iyi bir başlangıç ​​noktasıdır: stackoverflow.com/questions/20932102/…
Ehsan

hayır hayır hayır. Uygulamamdan komut çalıştırmıyorum;) adbDoğrudan "Android Studio" dan çalıştırıp çalıştıramayacağımı merak ediyordum .
exhuma

2
Bu, geliştirici olduğunuzda iyidir .. Ancak, herhangi bir son kullanıcı için, aynı sorun ortaya çıkarsa, takip etmeniz gerekir: Sorun, Android'in daha yeni sürümlerinde bir şekilde kaldırmanın yalnızca belirli bir kullanıcı için kaldırılmasıydı. Cevap, ayarlar> uygulamalar> belirli bir uygulamanın içine gitmek ve ardından sağ üstteki "..." menü öğesinden "tüm kullanıcılar için kaldır" ı seçmektir.
AnkitRox

Paket adını değiştirdiğim için başıma geldi. kaldırma işlemi hile yaptı
Guy Sopher

23

Aynı sorunu yaşadım ve adb uninstallçözüm benim için işe yaramadı.

Ne işe yaradı

  • Cihazınızda Ayarlar-> Uygulamalar'a gidin
  • Uygulamanızı seçin ve menüden "Tüm kullanıcılar için kaldır" ı seçin

Uygulamayı daha önce kaldırmış olsam bile, hala oradaydı.


Evet, cihazınızda birden fazla kullanıcı hesabınız varsa ve uygulama birden fazla hesaba yüklüyse bu da olabilir. Bir kullanıcı için kaldırırsanız, yalnızca o hesapla "bağlantısı kesilir". Ancak diskte kalır. Yalnızca her kullanıcı tarafından kaldırıldığında tamamen kaldırılacaktır.
exhuma

1
"Tüm kullanıcılar için kaldır" mükemmel bir şekilde çalıştı. Diğer tüm kullanıcılar kaldırıldı)))
Inoy

Öykünücü pikseli kullanarak yalnızca "kaldır" değil "tüm kullanıcılar için kaldır" seçeneğini görüyorum 3 29
Julie Pixie

6

Bana göre, uygulamanın dağıtılması gerekiyorsa, adbçözüm işe yaramaz: Bir kişinin arkadaşından makinesine android sdk yüklemesini isteyemezsiniz!

Buraya gitmenin yolu , etiketindeki özniteliği (kök öğe olan) düzenlemek AndroidManifest.xmlve artırmaktır .android:versionCode<manifest>

Bu, yüklü uygulamanızı günceller


1
Sorun aslında, geliştirme sırasında uygulamayı bir cihaza android stüdyosu aracılığıyla yüklememden kaynaklanıyordu. Yeni bir APK'yi yeniden oluşturmak ve onu dağıtmak, benden başka herkes için gayet iyiydi. Yani adb çözümü iyiydi.
exhuma

4

Bağlı testler sırasında bu görüyorsanız, eklemeyi unutmayın .test > ayarlar - uygulama aracılığıyla kaldırma çünkü adb üzerinden kaldırırken gelmez testi paketinin kurtulmak

adb uninstall your.broken.package.test

üzerinden kaldırırsan

adb uninstall your.broken.package

test paketiniz hala orada olacaktır. Bu sadece gradle komut satırını kullanırken fark ettiğim bir şeydi, android stüdyosunda bu soruna rastlamadım


3

Eski uygulamayı telefonunuzdan veya emülatörünüzden kaldırın ve tekrar çalıştırmayı deneyin.


Bu bir cevap değil. SO bunu zaten denediğini ve sorunun hala devam ettiğini belirtti.
BenRoob

1

Sertifikayı imzalarken sürümü yüklemeye çalışırken bu hatayı aldım.

ile düzeltildi: uygulama Gradle görevi uninstallRelease ve ardından installRelease


0

Bu soruya gelen Unity kullanıcıları için en iyi cevap gerçekten de @Ehsan tarafından verilen cevaptır.

adb uninstall "com.yourapp.yourapp"

Android cihazıma daha önce bir önceki sürümü yüklemiştim ve ardından Development BuildAPK'nin farklı bir imza kullanmasına neden olan Unity> Build Settings'i seçtim . Android GUI üzerinden yüklerseniz, aslında her şeyi kaldırmaz, bu nedenle ADB kullanmanız gerekir.

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.