Menambahkan perpustakaan / JAR ke proyek Android Eclipse

130

Ini adalah pertanyaan dua bagian tentang menambahkan perpustakaan pihak ketiga (JAR) ke proyek Android di Eclipse.

Bagian pertama dari pertanyaan adalah, ketika saya mencoba menambahkan JAR pihak ketiga (perpustakaan) ke proyek Android saya, saya pertama kali mendapatkan masalah

Galat mengurai XML: awalan tidak terikat

karena saya mencoba menggunakan kelas dari JAR itu (dan perlu awalan entah bagaimana didefinisikan). Apa yang sedang terjadi?

Kedua, (setelah memperbaikinya - jawabannya diberikan di bawah), aplikasi saya tidak berfungsi di Android dan saya temukan melalui debugger (LogCat) bahwa kelas yang saya coba konsumsi tidak ada.

Disebabkan oleh: java.lang.ClassNotFoundException: com.github.droidfu.widgets.WebImageView ...

Mengapa, ketika saya tidak mendapatkan kesalahan kompilasi atau tautan di Eclipse, apakah ada masalah pada emulator?

Kedua pertanyaan ini retoris karena saya akan menjawabnya sendiri di bawah. Posting lain di forum ini merangkak ke masalah dan di tempat lain ada diskusi, tapi saya merasa bahwa saya bisa lebih membantu secara eksplisit untuk orang berikutnya untuk ikut.

Russ Bateman
sumber

Jawaban:

316

Sekarang untuk masalah kelas yang hilang.

Saya seorang pengembang Eclipse Java EE dan telah terbiasa selama bertahun-tahun menambahkan perpustakaan pihak ketiga melalui mekanisme "Perpustakaan Pengguna" di Build Path. Tentu saja, setidaknya ada 3 cara untuk menambahkan perpustakaan pihak ketiga, yang saya gunakan adalah yang paling elegan, menurut pendapat saya.

Ini tidak akan berfungsi, untuk Android, yang Dalvik "JVM" tidak dapat menangani kelas Java-compile biasa, tetapi harus dikonversi ke format khusus. Ini tidak terjadi ketika Anda menambahkan perpustakaan dengan cara saya tidak akan melakukannya.

Alih-alih, ikuti petunjuk (tersedia secara luas) untuk mengimpor perpustakaan pihak ketiga, kemudian menambahkannya menggunakan Build Path (yang membuatnya dikenal oleh Eclipse untuk tujuan kompilasi). Inilah langkah-langkahnya:

  1. Unduh perpustakaan ke sistem pengembangan host Anda.
  2. Buat folder baru, libs , di proyek Eclipse / Android Anda.
  3. Klik kanan libs dan pilih Impor -> Umum -> Sistem File, lalu Selanjutnya, Jelajahi dalam sistem file untuk menemukan direktori induk perpustakaan (yaitu: tempat Anda mengunduhnya).
  4. Klik OK, lalu klik nama direktori (bukan kotak centang) di panel kiri, lalu periksa JAR yang relevan di panel kanan. Ini menempatkan perpustakaan ke dalam proyek Anda (secara fisik).
  5. Klik kanan pada proyek Anda, pilih Build Path -> Configure Build Path, lalu klik tab Libraries, lalu Tambahkan JAR ..., navigasikan ke JAR baru Anda di direktori libs dan tambahkan. (Ini, kebetulan, adalah saat di mana JAR baru Anda dikonversi untuk digunakan di Android.)

CATATAN

Langkah 5 mungkin tidak diperlukan, jika lib sudah termasuk dalam jalur build Anda. Pastikan saja keberadaannya terlebih dahulu sebelum menambahkannya.

Apa yang telah Anda lakukan di sini menyelesaikan dua hal:

  1. Termasuk JAR yang dikonversi menjadi Dalvik dalam proyek Android Anda.
  2. Membuat definisi Java tersedia untuk Eclipse untuk menemukan kelas pihak ketiga saat mengembangkan (yaitu, mengkompilasi) kode sumber proyek Anda.
Russ Bateman
sumber
Russ, Anda mungkin harus memulai pertanyaan lain yang terpisah. "Jawaban" ini agak aneh duduk di sini.
Paul Gregoire
3
Jadi, saya menulis ulang sebagian dari pertanyaan itu sedikit. Saya telah menahan godaan untuk melakukan hal yang mudah (apa yang Anda sarankan di sini) karena saya benar-benar berpikir kedua masalah muncul dari mencoba menambahkan perpustakaan pihak ketiga dan saya bertaruh bahwa siapa pun yang memiliki masalah kedua mungkin akan memiliki yang pertama juga. Terima kasih.
Russ Bateman
Saya berharap ada sesuatu yang lebih eksplisit tentang hal ini dalam dokumen resmi Android (belum menemukan itu) dan jawaban lain di forum lain berjalan sampai, tetapi tidak pernah melihat masalah. Perhatikan bahwa pada BlackBerry, masalah yang sama ini merupakan mimpi buruk besar tanpa ada yang memberikan informasi yang dapat dipercaya tentang bagaimana menyelesaikannya - tidak yakin apa yang akan saya lakukan di sana.
Russ Bateman
2
Hai @RussBateman Saya mencoba langkah-langkah yang telah Anda sebutkan di atas dan berhasil memasukkan toples perpustakaan ke proyek android saya sehingga kelas perpustakaan dapat diakses oleh proyek saya pada waktu kompilasi. Tetapi ketika saya menjalankan proyek, saya mendapatkan kesalahan. di konsol saya: "Konversi ke format Dalvik gagal dengan kesalahan 1" .. dan proyek saya tidak akan diluncurkan!
Zeba
Dalam keadaan tertentu ini tidak berfungsi ... Saya tidak ingat persis apa yang saya lakukan, menghapus folder libs, membacanya ... sekarang melakukan semua yang Anda katakan, tambahkan libs, impor toples, tambahkan untuk membangun jalur .. kesalahan kompiler hilang, tetapi masih mendapatkan pengecualian runtime bahwa kelas tidak ditemukan :(
Ixx
20

Pastikan bahwa toples pihak ke-3 Anda ada di folder "libs" proyek Anda dan mereka akan diletakkan di .apk ketika Anda mengemas aplikasi Anda. Anda mungkin melihat kesalahan runtime pada perangkat jika sesuatu dalam toples tidak didukung, tetapi selain itu saya telah sukses besar dengan ini.

Paul Gregoire
sumber
1
Semuanya tentang pengalaman, saya pernah mengalami masalah yang sama sebelumnya :)
Paul Gregoire
Terima kasih Pak, tetapi menyebalkan melihat bahwa folder libs memerlukan salinan file Jar eksternal yang sudah kita miliki di repositori Maven atau di suatu tempat.
asgs
1
Sayangnya ini tidak lagi berfungsi secara otomatis, Anda juga harus memberitahu gerhana untuk memasukkan pustaka dalam file paket.
Neil Townsend
Kapan itu berubah? Ini adalah perubahan besar untuk apa yang kita semua terbiasa.
Paul Gregoire
5

Menyiapkan Proyek Perpustakaan

Proyek perpustakaan adalah proyek Android standar, sehingga Anda dapat membuat yang baru dengan cara yang sama seperti yang Anda lakukan dengan proyek aplikasi baru.

Saat Anda membuat proyek perpustakaan, Anda dapat memilih nama aplikasi, paket, dan mengatur bidang lain sesuai kebutuhan, seperti yang ditunjukkan pada gambar 1.

Selanjutnya, atur properti proyek untuk menunjukkan bahwa itu adalah proyek perpustakaan:

Di Package Explorer, klik kanan proyek perpustakaan dan pilih Properties. Di jendela Properti, pilih grup properti "Android" di sebelah kiri dan temukan properti Perpustakaan di sebelah kanan. Pilih kotak centang "is Library" dan klik Terapkan. Klik OK untuk menutup jendela Properties. Proyek baru sekarang ditandai sebagai proyek perpustakaan. Anda dapat mulai memindahkan kode sumber dan sumber daya ke dalamnya, seperti yang dijelaskan di bagian di bawah ini.

koke
sumber
4

Jika Anda menggunakan ADT versi 22, Anda perlu memeriksa dependensi android dan perpustakaan pribadi android dalam urutan & Ekspor tab di jalur pembangunan proyek

ajaykoppisetty
sumber
2

Pertama, masalah awalan yang hilang.

Jika Anda mengkonsumsi sesuatu di file tata letak Anda yang berasal dari pihak ketiga, Anda mungkin perlu mengkonsumsi awalannya juga, sesuatu seperti "droidfu:" yang terjadi di beberapa tempat dalam konstruksi XML di bawah ini:

<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="..."
          />

Ini keluar dari JAR, tetapi Anda juga harus menambahkan "xmlns: droidfu" baru

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

atau Anda mendapatkan kesalahan awalan tidak terikat. Bagi saya, ini adalah kegagalan untuk menyalin dan menempel semua contoh yang disediakan dari halaman perpustakaan pihak ketiga.

Russ Bateman
sumber
1

Galat mengurai XML: awalan tidak terikat

Sumber daya '/ playteddy / res' tidak ada.

Saya mendapatkan dua kesalahan di atas dan akhirnya saya menyelesaikannya.

Klik kanan proyek Anda -> properties -> java build path -> googleadmobadsdk (pilih dan letakkan di atas), lalu Anda jalankan dan masalah terpecahkan. Itu dipecahkan kesalahan runtime saya.

sujan
sumber
0

Tempatkan sumber di folder di luar ruang kerja Anda. Klik kanan di proyek-explorer, dan pilih "Impor ..."

Impor proyek di ruang kerja Anda sebagai proyek Android. Cobalah untuk membangunnya, dan pastikan itu ditandai sebagai proyek perpustakaan. Juga pastikan itu dibangun dengan dukungan Google API, jika tidak Anda akan mendapatkan kesalahan kompilasi.

Kemudian, klik kanan pada proyek utama Anda di penjelajah proyek. Pilih properti, lalu pilih Android di sebelah kiri. Di bagian perpustakaan di bawah ini, klik "Tambah" ..

Perpustakaan mapview-balon sekarang harus tersedia untuk ditambahkan ke proyek Anda ..

Leander
sumber
0

Pergi untuk membangun jalur di gerhana, lalu klik pesanan dan ekspor, lalu periksa perpustakaan / toples, dan kemudian klik tombol atas untuk memindahkannya ke bagian atas daftar untuk mengkompilasinya terlebih dahulu.

Sam Adamsh
sumber