Perpustakaan tidak bisa ditambahkan ke APK lagi setelah ditingkatkan ke ADT 22

238

Saya memiliki proyek Aplikasi Android yang agak besar yang merujuk beberapa proyek perpustakaan. Semuanya baik-baik saja sampai saya memutakhirkan plugin ADT eclipse ke versi terbaru (v22). Saya juga memutakhirkan SDK tentu saja. Saya tidak melihat ada kesalahan kompilasi dalam gerhana, tetapi ketika saya menjalankan proyek di telepon saya mendapatkan NoClassDefFoundError.

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

Pustaka arca termasuk dalam salah satu proyek pustaka yang direferensikan (dalam folder libs) dan saya dapat melihatnya di "Android Private Libraries" dalam paket explorer, juga seperti yang saya katakan, tidak ada kesalahan kompilasi. Proyek ini berjalan dengan baik di komputer orang lain yang tidak memutakhirkan ADT.

Saya sudah mencoba banyak hal termasuk tetapi tidak terbatas pada:

  • instal ulang SDK android
  • unduh bundel ADT yang baru
  • hapus semua kode saya dan dapatkan kembali dari git
  • salin perpustakaan yang dimaksud ke proyek aplikasi
  • komentar kode yang menggunakan pustaka ini - saya hanya mendapatkan kesalahan yang sama untuk pustaka berikutnya

semua tanpa hasil, jadi saya benar-benar putus asa di sini.

Saya akan sangat senang jika ada yang bisa memberi saya petunjuk tentang cara mengatasi masalah itu.

SimonSays
sumber

Jawaban:

337

Mengutip Streets of Boston dari posnya :

Saat meningkatkan, 'Pesanan dan Ekspor' dari 'Perpustakaan Pribadi Android' baru tidak selalu dicentang. Dan android-support-v4.jar sekarang ada di bagian 'Perpustakaan Pribadi Android' ini.

Untuk mengatasinya, buka 'Pesan dan Ekspor' dan centang 'Perpustakaan Pribadi Android'. Kemudian segarkan / bersihkan / bangun kembali.

Setelah Anda melakukan 'perbaikan' ini untuk proyek perpustakaan, Anda mungkin perlu menutup dan membuka kembali proyek yang bergantung, karena mereka mungkin tidak melihat 'perbaikan' ini segera.

Cobalah ini dan dengan keberuntungan itu akan menyelesaikan masalah Anda.

masukkan deskripsi gambar di sini

CommonsWare
sumber
32
CommonsWare seperti biasa salah satu perintis pertama, terima kasih banyak! :)
Paul Wein
1
Avery versi ADT baru kejutan baru;) Semoga sistem build baru akan lebih baik. Terima kasih CommonsWare
lujop
3
Apakah hanya saya, atau apakah terdengar salah jika setiap Pengembang [yang menggunakan Eclipse dan Perpustakaan] masuk ke semua proyek perpustakaan mereka dan menandai "Android Private Libraries" sebagai Diekspor? Ini membuat saya berpikir bahwa kita semua salah mengartikan niat Google untuk menambahkan "fitur" baru ini. Mungkin kita tidak seharusnya menandai Perpustakaan sebagai Diekspor. Mungkin kita seharusnya menambahkan file jar yang hilang secara langsung ke folder "libs" kita. Mis: Ini akan memungkinkan proyek perpustakaan saya untuk menggunakan android-support-v4.jar [v13] terbaru, sementara ABS secara internal menggunakan android-support-v4-12.jar.
swooby
2
@swooby: "Apakah hanya saya, atau apakah terdengar salah jika setiap Pengembang [yang menggunakan Eclipse dan Libraries] masuk ke semua proyek perpustakaan mereka dan menandai" Android Private Libraries "sebagai Diekspor?" - itu "salah" sejauh itu adalah bug, diakui oleh orang-orang yang menulis alat. "Mungkin kita seharusnya menambahkan file jar yang hilang secara langsung ke folder" libs "kami - oh, Anda perlu melakukannya juga, seperti yang Anda lakukan selama setahun terakhir. Namun, Anda masih harus mencentang kotak ini.
CommonsWare
9
@Phillip: AFAIK, itu semua proyek. Lebih tepatnya, saya kira, itu semua proyek yang memiliki barang libs/, tetapi Anda juga dapat memeriksa semuanya, jika Anda menambahkan barang ke libs/beberapa bulan kemudian dan lupakan ini.
CommonsWare
10

Cukup memeriksa Android Private Libraries tidak cukup, saya juga harus menginstal Android SDK Build-tools di Android SDK Manager.

Zaixer
sumber
Saya tidak dapat mengkonfirmasi ini diperlukan, tapi saya tidak bisa melewati kesalahan yang dialami SimonSays sebelum menginstalnya. Ini mungkin hanya memerlukan pengaturan yang tepat dari kotak centang ekspor seperti yang dijelaskan di atas, tetapi merasa saya harus menyebutkan bahwa saya memang melakukan instalasi Alat Bangun.
strangeluck
ini bekerja untuk saya. hanya mengubah preferensi gerhana saja tidak cukup. Anda mungkin perlu memeriksa alat build yang terpasang di Android SDK manager.
Stevens
4

Saya juga telah masalah yang sama dan saya adtadalah 22.0.1. Dan tidak ada solusi di atas yang berhasil. Lebih jauh ketika menambahkan proyek perpustakaan eksternal ke proyek kerja. Saya selalu memeriksa genfolder proyek kerja dan jika Rada proyek perpustakaan eksternal (bersama dengan nama paket), maka hanya proyek perpustakaan eksternal yang diekspor. Dan pada genfolder saya tidak ada packagenameperpustakaan eksternal yang ditampilkan.

Jadi saya memeriksa project.propertiesfile dan tidak ada tautan pustaka eksternal yang android.library.reference.1=ada. Jadi saya secara manual menambahkan referensi perpustakaan eksternal di sana, meskipun saya telah menambahkan dari project->properties->Java Build Path->Projects->Add. Jadi secara manual mengedit project.propertiesmelakukan semua pekerjaan untuk saya.

masukkan deskripsi gambar di sini

laaptu
sumber
1
Saya pikir itu terjadi karena tempat gui untuk set android.library.reference.nini tidak java build path , melainkan project-> properties-> Android-> Library-> Add.... Sebuah Gotcha .
n611x007
4

Saya telah mengalami masalah yang sama, menghabiskan sekitar 3 jam, tetapi tidak ada keputusan yang diusulkan di sini tidak membantu ... Akhirnya saya menemukan sumber masalah: file proyek saya & project.properties hanya dapat dibaca. Eclipse secara diam-diam mengabaikan perubahan dalam dependensi perpustakaan ketika saya melakukannya di GUI!

RedSoft
sumber
3

Saya memiliki masalah yang sama. Itu karena proyek gerhana. Untuk menyelesaikannya, saya membuat proyek baru di gerhana, salin kelas proyek dan sumber daya yang ada ke dalamnya dan kemudian meluncurkan gerhana lagi dan menambahkan kebiasaan saya termasuk.

Asaf Pinhassi
sumber
1
Terlalu banyak kerumitan, solusi CommonsWare bekerja untuk saya dan saya percaya itu akan berhasil juga untuk Anda.
Bilthon
2

Saya memiliki masalah yang sama dan jawaban saya sedikit berbeda dari CommonsWare. Ini screenshot saya:

masukkan deskripsi gambar di sini

Setelah memeriksa libs kembali membangun saya mulai bekerja lagi.

Gilson
sumber
2
Saya akan berhati-hati dengan solusi ini. Android Dependenciesdigantikan oleh Android Private Librariesdan mungkin hanya masih di sana karena alasan warisan. Saya kira itu bisa dihapus kapan saja.
SimonSays
0

Saya juga punya masalah yang sama,

i) tambahkan gson lib sebagai referecend librairies
ii) periksa di java Build Path http://i.stack.imgur.com/Gldhs.png

Jeremy Piednoel
sumber