Eclipse Android projesine kitaplık / JAR ekleme


130

Bu, Eclipse'deki bir Android projesine üçüncü taraf kitaplığı (JAR) eklemeyle ilgili iki bölümden oluşan bir sorudur.

Sorunun ilk kısmı, Android projeme üçüncü taraf bir JAR (kütüphane) eklemeye çalıştığımda ilk olarak şu problemi alıyorum:

XML ayrıştırılırken hata oluştu: ilişkisiz önek

çünkü o JAR'dan bir sınıf kullanmaya çalışıyorum (ve bir şekilde tanımlanmış öneke ihtiyacım var). Neler oluyor?

İkincisi, (bunu düzelttikten sonra - cevap aşağıda verilmiştir), uygulamam Android'de çalışmıyor ve kullanmaya çalıştığım sınıfın mevcut olmadığını hata ayıklayıcı (LogCat) aracılığıyla keşfediyorum.

Nedeni: java.lang.ClassNotFoundException: com.github.droidfu.widgets.WebImageView ...

Eclipse'de derleme veya bağlayıcı hatası almadığımda neden öykünücüsünde bu sorun var?

Bu iki soru retoriktir, çünkü bunları aşağıda kendim cevaplayacağım. Bu forumdaki diğer gönderiler soruna doğru ilerliyor ve başka yerlerde tartışma var, ancak bir sonraki kişinin gelmesi için daha açık bir şekilde yardımcı olabileceğimi hissediyorum.

Yanıtlar:


316

Şimdi eksik sınıf sorunu için.

Ben bir Eclipse Java EE geliştiricisiyim ve Yapı Yolundaki "Kullanıcı Kitaplığı" mekanizması aracılığıyla uzun yıllardır üçüncü taraf kitaplıkları ekleme alışkanlığım var. Tabii ki, üçüncü taraf bir kitaplık eklemenin en az 3 yolu var, benim kullandığım en zarif, mütevazı görüşüme göre.

Bununla birlikte, Dalvik "JVM" si sıradan bir Java-derlenmiş sınıfı işleyemeyen, ancak özel bir biçime dönüştürmesi gereken Android için bu işe yaramayacaktır. Benim yapmayacağım şekilde bir kitaplık eklediğinizde bu gerçekleşmez.

Bunun yerine, üçüncü taraf kitaplığı içe aktarmak için (yaygın olarak bulunan) talimatları izleyin, ardından Derleme Yolunu kullanarak onu ekleyin (bu, derleme amacıyla Eclipse tarafından bilinir). İşte adım adım:

  1. Kitaplığı ana bilgisayar geliştirme sisteminize indirin.
  2. Eclipse / Android projenizde yeni bir klasör, libs oluşturun .
  3. Sağ tıklayın kütüphanelerini ve İçe seçin -> Genel -> Dosya Sistemi, kütüphanenin üst dizini bulmak için dosya sisteminde daha sonra Sonra, Göz (yani: Eğer bunu indirilen yerde).
  4. Tamam'ı tıklayın, ardından sol bölmedeki dizin adını (onay kutusunu değil) tıklayın, ardından sağ bölmede ilgili JAR'ı kontrol edin. Bu, kütüphaneyi projenize (fiziksel olarak) yerleştirir.
  5. Projenize sağ tıklayın, Yol Oluştur -> Oluşturma Yolunu Yapılandır'ı seçin, ardından Kitaplıklar sekmesini, ardından JAR Ekle ... öğesini tıklayın, libs dizinindeki yeni JAR'ınıza gidin ve ekleyin. (Bu, tesadüfen, yeni JAR'ınızın Android'de kullanılmak üzere dönüştürüldüğü andır.)

NOT

Kitaplık zaten derleme yolunuza dahil edilmişse, Adım 5 gerekli olmayabilir. Sadece eklemeden önce varlığından emin olun.

Burada yaptığınız şey iki şeyi başarır:

  1. Android projenize Dalvik tarafından dönüştürülmüş bir JAR içerir.
  2. Projenizin kaynak kodunu geliştirirken (yani derlerken) üçüncü taraf sınıflarını bulmak için Eclipse için Java tanımlarını kullanılabilir hale getirir.

Russ, muhtemelen başka bir soru başlatmalısın. Bu "cevap" burada otururken biraz tuhaf görünüyor.
Paul Gregoire

3
Bu yüzden, sorunun bazı kısımlarını biraz yeniden yazdım. Kolay olanı yapma isteğine karşı koydum (burada önerdiğiniz gibi) çünkü her iki sorunun da üçüncü taraf bir kitaplık eklemeye çalışmaktan kaynaklandığını düşünüyorum ve ikinci soruna sahip olan herkesin muhtemelen birincisi de. Teşekkürler.
Russ Bateman

Keşke resmi Android dokümanlarında (henüz tökezlememiş) bu konuda daha açık bir şeyler olsaydı ve diğer forumlardaki diğer cevaplar gelse de sorunu asla gözden kaçırmayın. BlackBerry'de de aynı sorunun, kimsenin nasıl çözüleceğine dair güvenilir bilgi vermediği büyük bir kabus olduğunu unutmayın - orada ne yapacağımdan emin değilim.
Russ Bateman

2
Merhaba @RussBateman Yukarıda bahsettiğiniz adımları denedim ve başarılı bir şekilde android projeme kitaplık kavanozunu dahil etmeyi başardım ve böylece kütüphane sınıfları projem için derleme zamanında erişilebilirdi, ancak projeyi çalıştırdığımda bir hata alıyorum konsolumda: "Dalvik formatına dönüştürme 1 hatasıyla başarısız oldu" .. ve projem başlatılmayacak!
Zeba

Belli koşullar altında bu işe yaramıyor ... Ne yaptığımı tam olarak hatırlamıyorum, libs klasörünü sildim, okudum ... şimdi söylediğiniz her şeyi yaptım, kitaplıklar ekleyin, kavanozu içe aktarın, yol oluşturmaya ekleyin .. . derleyici hataları ortadan kalktı, ancak yine de sınıfın bulunamadığına dair çalışma zamanı istisnası al :(
Ixx

20

3. taraf kavanozlarınızın projelerinizin "libs" klasöründe olduğundan ve uygulamanızı paketlediğinizde .apk içine yerleştirileceklerinden emin olun. Kavanozdaki bir şey desteklenmiyorsa, cihazda çalışma zamanı hataları görebilirsiniz, ancak bunun dışında bunda büyük bir başarı elde ettim.


1
Hepsi deneyimle ilgili, daha önce de aynı sorunu yaşadım :)
Paul Gregoire

Teşekkürler efendim, ancak libs klasörünün halihazırda Maven deposunda veya bir yerde sahip olduğumuz harici Jar dosyalarının kopyasına ihtiyacı olduğunu görmek berbat.
2013

1
Ne yazık ki bu artık otomatik olarak çalışmıyor, eclipse'e kitaplıkları paket dosyalarına dahil etmesini de söylemelisiniz.
Neil Townsend

Bu ne zaman değişti? Bu, hepimizin alışkın olduğu şeyde büyük bir değişiklik.
Paul Gregoire

5

Bir Kütüphane Projesi Oluşturma

Bir kitaplık projesi standart bir Android projesidir, böylece yeni bir uygulama projesinde yaptığınız gibi yeni bir tane oluşturabilirsiniz.

Kütüphane projesini oluştururken, şekil 1'de gösterildiği gibi herhangi bir uygulama adını, paketini seçebilir ve diğer alanları gerektiği gibi ayarlayabilirsiniz.

Ardından, projenin bir kütüphane projesi olduğunu belirtmek için projenin özelliklerini ayarlayın:

Paket Gezgini'nde kitaplık projesine sağ tıklayın ve Özellikler'i seçin. Özellikler penceresinde, soldaki "Android" özellikler grubunu seçin ve sağdaki Kitaplık özelliklerini bulun. "Kitaplıktır" onay kutusunu seçin ve Uygula'yı tıklayın. Özellikler penceresini kapatmak için Tamam'a tıklayın. Yeni proje artık bir kütüphane projesi olarak işaretlendi. Aşağıdaki bölümlerde anlatıldığı gibi, kaynak kodunu ve kaynakları buraya taşımaya başlayabilirsiniz.


4

ADT sürüm 22 kullanıyorsanız, proje derleme yolundaki sipariş ve Dışa Aktar sekmesinde android bağımlılıklarını ve android özel kitaplıklarını kontrol etmeniz gerekir.


2

İlk olarak, eksik önek sorunu.

Düzen dosyanızdaki üçüncü bir taraftan gelen bir şeyi tüketirseniz, önekini de kullanmanız gerekebilir, aşağıdaki XML yapısının birkaç yerinde görülen "droidfu:" gibi bir şey:

<com.github.droidfu.widgets.WebImageView android:id="@+id/webimage"
          android:layout_width="75dip"
          android:layout_height="75dip"
          android:background="#CCC"
          droidfu:autoLoad="true"
          droidfu:imageUrl="http://www.android.com/images/opensourceprojec.gif"
          droidfu:progressDrawable="..."
          />

Bu, JAR'dan çıkar, ancak yeni "xmlns: droidfu" da eklemeniz gerekir.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:droidfu="http://github.com/droidfu/schema"
      ...>

veya bağlanmamış önek hatası alırsınız. Benim için bu, sağlanan tüm örneğin üçüncü taraf kitaplık sayfalarından kopyalanıp yapıştırılamamasıydı.


1

XML ayrıştırılırken hata oluştu: ilişkisiz önek

Kaynak '/ playteddy / res' mevcut değil.

Yukarıdaki iki hatayı aldım ve sonunda çözdüm.

Projenize sağ tıklayın -> özellikler -> java inşa yolu -> googleadmobadsdk (seçin ve üstüne koyun), ardından çalıştırın ve sorun çözüldü. Çalışma zamanı hatam çözüldü.


0

Kaynağı, çalışma alanınızın dışındaki bir klasöre koyun. Proje gezginini sağ tıklayın ve "İçe Aktar ..." seçeneğini seçin.

Çalışma alanınızdaki projeyi bir Android projesi olarak içe aktarın. Oluşturmaya çalışın ve bir kütüphane projesi olarak işaretlendiğinden emin olun. Ayrıca, Google API desteği ile derlendiğinden emin olun, aksi takdirde derleme hataları alırsınız.

Ardından, proje gezgininde ana projenize sağ tıklayın. Özellikleri seçin, ardından sol taraftan Android'i seçin. Aşağıdaki kütüphane bölümünde "Ekle" yi tıklayın ..

Mapview balonları kitaplığı artık projenize eklemek için hazır olmalıdır ..


0

Tutulmada yol oluşturmaya gidin, ardından sırala ve dışa aktar'a tıklayın, ardından kitaplığı / kavanozu kontrol edin ve ardından önce onu derlemek için listenin en üstüne taşımak için yukarı düğmesine tıklayın.

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.