ADT 22'ye yükselttikten sonra kütüphaneler artık APK'ya eklenmiyor


238

Birkaç kütüphane projesine atıfta bulunan oldukça büyük bir Android Uygulaması projem var. Tutulma ADT eklentisini en yeni sürüme (v22) yükseltene kadar her şey iyiydi. Tabii ki SDK'yı da yükselttim. Tutulma herhangi bir derleme hataları görmüyorum, ama ben telefonda projeyi çalıştırdığınızda bir NoClassDefFoundError olsun.

java.lang.NoClassDefFoundError: org.acra.ACRA
....

Arca kütüphanesi başvurulan kütüphane projesinden birinde (libs klasöründe) bulunur ve bunu dediğim gibi, derleme hataları da paket gezgininde "Android Private Libraries" de görebilirsiniz. Proje, ADT'yi yükseltmeyen herkesin bilgisayarında iyi çalışır.

Zaten dahil ancak bunlarla sınırlı olmayan bir sürü şey denedim:

  • android SDK'yı yeniden yükleyin
  • yeni bir ADT paketi indir
  • tüm kodumu sil ve git'den tekrar al
  • söz konusu kütüphaneyi uygulama projesine kopyala
  • Bu kitaplığı kullanan kodu yorum - sadece bir sonraki kitaplık için aynı hatayı alıyorum

hiçbir başarı olmadan, bu yüzden burada gerçekten umutsuz alıyorum.

Birisi bana bu sorunun nasıl çözüleceğine dair bir ipucu verebilirse çok mutlu olurum.

Yanıtlar:


337

Adt-dev gönderisinden Boston Sokaklarından Alıntı :

Yükseltme yapılırken, yeni 'Android Özel Kütüphanelerinin' Sipariş ve Dışa Aktarımı her zaman kontrol edilmez. Ve android-support-v4.jar şimdi bu 'Android Özel Kütüphaneler' bölümünde.

Bunu düzeltmek için 'Sipariş Ver ve Ver'e gidin ve' Android Özel Kütüphaneleri'ni kontrol edin. Ardından yenileyin / temizleyin / yeniden oluşturun.

Bir kütüphane projesi için bu 'düzeltmeyi' yaptıktan sonra, herhangi bir bağlı projeyi kapatmanız ve yeniden açmanız gerekebilir, çünkü bu 'düzeltmeyi' hemen görmeyebilirler.

Bunu denemek ve şans ile sorununuzu çözecektir.

resim açıklamasını buraya girin


32
CommonsWare her zaman ilk öncülerden biri gibi, çok teşekkür ederim! :)
Paul Wein

1
Avery yeni ADT sürümü yeni bir sürpriz;) Yeni inşa sisteminin daha iyi olacağını umuyoruz. Teşekkür ederim CommonsWare
lujop

3
Sadece ben miyim, yoksa [Eclipse ve Kütüphaneleri kullanan] her Geliştiricinin tüm kütüphane projelerine girip "Android Özel Kütüphaneleri" ni Dışa Aktarıldı olarak işaretlemek yanlış mı geliyor? Bu bana Google'ın bu yeni "özelliği" en başta ekleme niyetini yanlış yaptığımızı düşündürüyor. Belki de Kütüphaneleri Dışa Aktarılmış olarak işaretlememiz gerekmez. Belki eksik kavanoz dosyalarını doğrudan "libs" klasörüne eklememiz gerekir. Örnek: Bu benim kütüphane projemin en son android-support-v4.jar [v13] 'i kullanmasına izin verirken, ABS dahili olarak android-support-v4-12.jar kullanıyor.
swooby

2
@swooby: "Sadece benim mi, yoksa Eclipse ve Kütüphaneleri kullanan her Geliştiricinin tüm kütüphane projelerine girip" Android Özel Kütüphaneleri "ni Dışa Aktarıldı olarak işaretlemek yanlış mı geliyor?" - araçları yazan insanlar tarafından kabul edilen bir hata olduğu sürece "yanlış" tır. "Belki eksik kavanoz dosyalarını" libs "klasörünüze doğrudan eklememiz gerekiyor - oh, bunu geçen yıl ve değişimde yaptığınız gibi yapmanız gerekiyor. Ancak, yine de bu onay kutusunu işaretlemeniz gerekir.
CommonsWare

9
@Phillip: AFAIK, hepsi projeler. Daha doğrusu, sanırım, hepsi bir şeyler içeren projeler libs/, ancak libs/birkaç ay sonra bir şeyler ekleyip bunu unutabilirsiniz.
CommonsWare

10

Sadece Android Özel Kütüphanelerini kontrol etmek yeterli değildi, ayrıca Android SDK Manager'da Android SDK Build-tools'ı kurmak zorunda kaldım .


Bunun gerekli olduğunu doğrulayamıyorum, ancak SimonSays'ın yüklemeden önce karşılaştığı hatayı geçemedim. Dışa aktarma onay kutularının yukarıda açıklandığı gibi düzgün ayarlanmasını gerektirebilir, ancak Oluşturma Araçlarını yükleme yolunda yaptığımdan bahsetmem gerektiğini hissettim.
strangeluck

bu benim için çalışıyor. Sadece tutulma tercihlerini değiştirmek yeterli değildir. android SDK yöneticisinde yüklü derleme araçlarına göz atmanız gerekebilir.
Stevens

4

Ben de aynı sorunu vardı ve benim adtoldu 22.0.1. Ve yukarıdaki çözümlerin hiçbiri işe yaramadı. Dahası, çalışan bir projeye harici kütüphane projesi eklerken Her zaman gençalışan projenin klasörünü kontrol ederim ve Rharici kütüphane projesinin (paket adıyla birlikte) olup olmadığını kontrol edersem , sadece harici kütüphane projesi dışa aktarılır. Ve benim üzerinde genklasörde hiçbir packagenamedış kütüphanenin gösterildi.

Bu yüzden project.propertiesdosyayı kontrol ettim ve mevcut herhangi bir harici kütüphane bağlantısı android.library.reference.1=yoktu. Bu yüzden, eklemiş olmama rağmen harici kitaplık referansını manuel olarak ekledim project->properties->Java Build Path->Projects->Add. Bu yüzden elle düzenleme project.propertiesbenim için tüm işi yaptı.

resim açıklamasını buraya girin


1
Ben sete gui yer beri de oldu düşünüyorum android.library.reference.nolduğu değil java build path , daha ziyade project-> properties-> Android-> Library-> Add.... Bir yakaladım .
n611x007

4

Benzer bir sorunla karşılaştım, yaklaşık 3 saat geçirdim, ancak burada önerilen kararların hiçbiri yardımcı olmadı ... Sonunda sorunun bir kaynağını buldum: proje dosyalarım ve project.properties salt okunur. Eclipse, GUI'de yaptığımda kitaplık bağımlılıklarındaki değişiklikleri sessizce görmezden geliyor!


3

Ben de aynı problemi yaşadım. Tutulma projesi yüzünden oldu. Bunu çözmek için, tutulmada yeni bir proje oluşturdum, mevcut proje sınıflarımı ve kaynaklarımı kopyaladım ve sonra tekrar tutulmayı başlattım ve özel eklemelerimi ekledim.


1
Çok fazla güçlük, CommonsWare'in çözümü benim için çalıştı ve bunun sizin için de işe yarayacağına inanıyorum.
Bilthon

2

Benzer bir sorun vardı ve cevabım CommonsWare'inkinden biraz farklı. İşte ekran görüntüm:

resim açıklamasını buraya girin

Sonra benim binada kütüphaneleri kontrol ettikten sonra tekrar çalışmaya başladı.


2
Bu çözüm konusunda dikkatli olurum. Android Dependenciesile değiştirildi Android Private Librariesve sadece eski nedenlerden dolayı hala orada olabilir. Ben her zaman kaldırılabilir sanırım.
SimonSays

0

Aynı problemi yaşadım,

i) referans kütüphaneleri olarak gson lib'i ekleyin
ii) java Build Path'da kontrol edin http://i.stack.imgur.com/Gldhs.png

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.