Bagaimana saya bisa menggunakan JAR eksternal dalam proyek Android?

326

Saya telah membuat proyek Android dan menambahkan JAR eksternal (hessian-4.0.1.jar) ke proyek saya. Saya kemudian menambahkan JAR ke jalur pembuatan dan memeriksanya di Orde dan Ekspor.

Tampaknya Orde dan Ekspor diabaikan, dan semua kelas dari JAR eksternal hilang pada saat runtime.

Apakah ada trik untuk memasukkan dengan benar kelas yang diperlukan dari JAR eksternal saat membangun aplikasi Android menggunakan plugin Eclipse? Saya tidak ingin menggunakan semut atau Maven.

AndroidSmoker74
sumber
1
seperti yang sudah Anda ketahui: ini disebabkan oleh dependensi pada hessian-4.0.1.jar. Jika Anda ingin menggunakan Hessian dengan Android, gunakan Hessdroid ( code.google.com/p/hessdroid ). Tidak terlalu aktif, tetapi berfungsi dengan baik untuk saya bahkan di Android 4.0.
Ice09
1
Lihat juga "NoClassDefFoundError untuk kode di perpustakaan Java di Android" untuk masalah umum saat menggunakan stoples eksternal. Solusi sederhana .
Aliran

Jawaban:

443

Untuk Eclipse

Cara yang baik untuk menambahkan JAR eksternal ke proyek Android Anda atau proyek Java apa pun adalah:

  1. Buat folder yang disebutlibs di folder root proyek Anda
  2. Salin file JAR Anda ke libsfolder
  3. Sekarang klik kanan pada file Jar dan kemudian pilih Build Path> Add to Build Path , yang akan membuat folder bernama 'Referenced Libraries' dalam proyek Anda

    Dengan melakukan ini, Anda tidak akan kehilangan perpustakaan yang dirujuk pada hard drive Anda setiap kali Anda mentransfer proyek Anda ke komputer lain.

Untuk Android Studio

  1. Jika Anda berada di Tampilan Android di penjelajah proyek, ubah ke Tampilan proyek seperti di bawah ini

Gambar Tidak Ada

  1. Klik kanan modul yang diinginkan di mana Anda ingin menambahkan perpustakaan eksternal, lalu pilih New> Directroy dan beri nama sebagai ' libs '
  2. Sekarang salin blah_blah.jar ke folder ' libs '
  3. Klik kanan blah_blah.jar, Lalu pilih ' Tambahkan sebagai Perpustakaan .. '. Ini secara otomatis akan menambah dan masuk dalam build.gradle sebagai file kompilasi ('libs / blah_blah.jar') dan sinkronkan gradle. Dan kamu sudah selesai

Harap Catatan: Jika Anda menggunakan perpustakaan pihak ke-3 maka lebih baik menggunakan dependensi transitif tempat skrip Gradle mengunduh JAR secara otomatis dan dependensi JAR saat skrip gradle dijalankan.

Mis: kompilasi 'com.google.android.gms: play-services-ads: 9.4.0'

Baca lebih lanjut tentang Manajemen Ketergantungan Gradle

Vinayak Bevinakatti
sumber
49
Perhatikan bahwa ketika menggunakan versi Eclipse / ADT baru-baru ini guci eksternal harus berada dalam folder yang disebut libs(bukan lib)
THelper
4
@THelper - Terima kasih! Anda benar, folder harus dinamai "libs" dan bukan "lib". Saya membenturkan kepala karena masalah ini.
Camille Sévigny
7
Dalam versi terbaru SDK, langkah 3 (menambahkan JAR secara manual ke Jalur Bangun) tidak perlu. Tetapi jika Anda memiliki IDE, seperti Eclipse terbuka pada saat Anda meletakkan file, Anda harus melakukan refresh proyek (F5 dan / atau menu konteks Segarkan di Package Explorer).
Jon Adams
4
Bagaimana ini dilakukan dari baris perintah? File konfigurasi apa yang harus saya edit, dan bagaimana caranya?
Kristian Spangsege
13
Pendekatan ini telah kedaluwarsa sejak awal 2012. Tambahkan saja JAR ke libs/. Jangan memodifikasi path build secara manual.
CommonsWare
127

Ya, Anda bisa menggunakannya. Begini caranya:

  1. Proyek Anda -> klik kanan -> Impor -> Sistem File -> yourjar.jar
  2. Proyek Anda -> klik kanan -> Properti -> Java Build Path -> Libraries -> Add Jar -> yourjar.jar

Video ini mungkin berguna jika Anda mengalami beberapa masalah.

MannyNS
sumber
5
Pendekatan ini telah kedaluwarsa sejak awal 2012. Cukup tambahkan JAR ke libs /. Jangan memodifikasi path build secara manual.
CommonsWare
Saya mencoba berbagai cara menambahkan build path. Hanya dengan cara ini saya dapat memperbaiki Kelas tidak ditemukan pengecualian setelah bermigrasi satu proyek ke PC lain
Mickey
Solusi PERTAMA sudah ketinggalan jaman dan tidak akan berfungsi SANGAT BAIK.
Yousha Aleayoub
5

Saat ini saya menggunakan SDK 20.0.3 dan tidak ada solusi sebelumnya yang bekerja untuk saya.

Alasan mengapa hessdroid bekerja ketika hess gagal adalah karena dua file jar berisi java yang dikompilasi untuk mesin virtual yang berbeda. Kode byte yang dibuat oleh kompiler Java tidak dijamin berjalan di mesin virtual Dalvik. Kode byte yang dibuat oleh kompiler Android tidak dijamin berjalan di mesin virtual Java.

Dalam kasus saya, saya memiliki akses ke kode sumber dan dapat membuat file jar Android untuk itu menggunakan metode yang saya jelaskan di sini: https://stackoverflow.com/a/13144382/545064

Danny Remington - OMS
sumber
5

Saya tahu OP mengakhiri pertanyaannya dengan referensi ke plugin Eclipse, tapi saya tiba di sini dengan pencarian yang tidak menentukan Eclipse. Jadi di sini berlaku untuk Android Studio:

  1. Tambahkan jarfile ke direktori libs (seperti salin / tempel)
  2. Klik kanan pada jarfile dan pilih "Tambahkan sebagai Perpustakaan ..."
  3. klik "Oke" pada dialog berikutnya atau ganti nama jika Anda mau.

Itu dia!

shanabus
sumber
4

Ternyata saya belum melihat cukup baik di jejak tumpukan saya, masalahnya bukan bahwa JAR eksternal tidak termasuk.

Masalahnya adalah bahwa platform Android tidak ada javax.naming. * Dan banyak paket lain yang memiliki ketergantungan JAR eksternal juga.

Menambahkan file JAR eksternal, dan mengatur Pesanan dan Ekspor di Eclipse berfungsi seperti yang diharapkan dengan proyek Android.


sumber
3

Goto Proyek Saat Ini

Klik kanan-> Properti-> Java Build Path-> Tambahkan File Jar ke Perpustakaan -> Klik OK

Kemudian ditambahkan ke File Perpustakaan yang Dirujuk di Proyek Anda Saat Ini.

kalyan G
sumber
1

Java API Android tidak mendukung javax.naming. * Dan banyak hal javax lainnya. * Anda harus menyertakan dependensi sebagai stoples terpisah.

Rodrigo
sumber
1

Jika menggunakan Android Studio, lakukan hal berikut (Saya sudah menyalin dan memodifikasi jawaban @Vinayak Bs):

  1. Pilih tampilan Proyek di tampilan samping Proyek (bukan Paket atau Android)
  2. Buat folder bernama libs di folder root proyek Anda
  3. Salin file JAR Anda ke folder libs
  4. Tampilan samping akan diperbarui dan file JAR akan muncul di proyek Anda
  5. Sekarang klik kanan pada setiap file JAR yang ingin Anda impor dan kemudian pilih "Tambahkan sebagai Perpustakaan ...", yang akan memasukkannya ke dalam proyek Anda
  6. Setelah itu, yang perlu Anda lakukan adalah mereferensikan kelas-kelas baru dalam kode Anda, mis. import javax.mail.*
kumaheiyama
sumber
1

di studio android jika menggunakan gradle

tambahkan ini ke build.gradle

compile fileTree(dir: 'libs', include: ['*.jar'])

dan tambahkan file jar ke folder libs

g_vk
sumber
1

Jika Anda menggunakan sistem gradle build, ikuti langkah-langkah ini:

  1. letakkan jarfile di dalam libsfolder masing-masing aplikasi Android Anda. Anda biasanya akan menemukan itu di Project> app> libs. Jika libsfolder tidak ada, buat satu.

  2. tambahkan ini ke build.gradlefile Anda app. (Tidak untuk Anda Project's build.gradle)

    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        // other dependencies
    }

    Ini akan mencakup semua jarfile Anda yang tersedia di libsfolder.

Jika tidak ingin menyertakan semua jarfile, maka Anda dapat menambahkannya satu per satu.

compile fileTree(dir: 'libs', include: 'file.jar')

Rohit Arya
sumber
0

buat folder (seperti lib) di dalam proyek Anda, salin toples Anda ke folder itu . sekarang pergi untuk mengkonfigurasi path build dari klik kanan pada project, ada di build path pilih

browse 'add jar' ke folder yang Anda buat dan pilih jar itu.

sharma_kunal
sumber
0

Menyalin file .jar ke folder proyek Android tidak selalu memungkinkan.
Terutama jika itu adalah output dari proyek lain di ruang kerja Anda, dan itu terus diperbarui.

Untuk mengatasinya, Anda harus menambahkan toples sebagai file tertaut ke proyek Anda, alih-alih mengimpornya (yang akan menyalinnya secara lokal).

Di UI pilih:

Project -> Impor -> Sistem File -> yourjar.jar -> (area Opsi) Tingkat Lanjut -> Buat tautan di ruang kerja.

Tautan disimpan di file proyek :

<linkedResources>
    <link>
        <name>yourjar.jar</name>
        <type>1</type>
        <locationURI>PARENT-5-PROJECT_LOC/bin/android_ndk10d_armeabi-v7a/yourjar.jar</locationURI>
    </link>
</linkedResources>

PARENT-5-PROJECT_LOC berarti relatif terhadap file proyek, 5 direktori naik (../../../../../).

Kemudian tambahkan ke pustaka:
Project -> Properties -> Java Build Path -> Libraries -> Add Jar -> yourjar.jar

Di jendela yang sama pilih tab Order and Export dan tandai toples Anda sehingga akan ditambahkan ke apk.

Yochai Timmer
sumber