Dalam gerhana, tidak dapat mereferensikan proyek perpustakaan android di proyek android lain

104

Saat saya menulis pertanyaan ini, saya berhasil menyelesaikannya jadi ulangi di sini untuk kepentingan orang lain. Inilah masalah awalnya:

Saya telah membuat proyek perpustakaan yang sangat sederhana yang ingin saya rujuk di proyek lain. Saya telah melakukan ini sebelumnya tanpa masalah jadi tidak begitu yakin mengapa tidak berhasil kali ini. Saya sudah:

  1. Menandai proyek perpustakaan melalui properti proyek. The default.propertiesberkas memiliki set ini:android.library=true

  2. Dalam proyek saya yang lain menambahkan referensi ke proyek perpustakaan saya melalui properti proyek. The default.propertiesberkas telah referensi ditambahkan sebagai yaitu diharapkanandroid.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. Tanda centang hijau terhadap proyek perpustakaan yang direferensikan dimulai dari hijau dan kemudian berubah menjadi palang merah.

Ini menyiratkan bahwa pasti ada sesuatu yang salah / hilang dari proyek perpustakaan tetapi saya tidak tahu apa. Proyek perpustakaan saya kali ini JAUH lebih sederhana dari yang saya buat sebelumnya.

malcooke
sumber
Solusi ini membantu dalam kasus saya: stackoverflow.com/questions/9283040/… Saya harap ini membantu seseorang
Abeer Sul

Jawaban:

160

OK Berikut adalah solusi yang saya temukan ketika saya mencari file default.properies dari proyek referensi (bukan perpustakaan) di sistem file saya. Meskipun proyek referensi berada di ruang kerja gerhana yang sama dengan proyek perpustakaan, file sebenarnya berada di tempat lain dalam sistem file, yaitu tidak ada di folder induk yang sama dari proyek perpustakaan. Segera setelah saya menempatkan proyek referensi di folder fisik yang sama dengan proyek perpustakaan semuanya berjalan dengan baik.

Saya kira ini pasti ada hubungannya dengan android menggunakan semut di bawah selimut.

Edit: Nama proyek harus sesuai dengan nama folder pada sistem file. Apa yang Anda lihat di Project Properties-> Android-> Library Reference adalah jalur sistem file relatif.

malcooke
sumber
3
Juga ingin menambahkan bahwa tautan simbolik tidak diperbolehkan untuk ini. Saya memiliki semua proyek saya yang disimpan di folder yang sama satu sama lain di lokasi yang berbeda (di mana saya meletakkan barang-barang yang ingin saya cadangkan) dan kemudian banyak tautan simbolis dalam folder ruang kerja saya ke folder ini. Jadi mereka semua berada di folder yang sama satu sama lain di kedua tempat, namun penggunaan tautan simbolik mengacaukan semuanya. Setelah saya memuat folder asli sebagai ruang kerja dasar saya, semuanya baik-baik saja.
Zulaxia
7
+1 Untuk mengartikulasikan perilaku MENGERIKAN dari combo Eclipse / ADT. Sekadar informasi, bahkan menempatkan kedua proyek di folder fisik yang sama tidak membantu jika folder itu berada di share Samba . Ugrrr ...
an00b
20
Terkadang Eclipse akan menghapus referensi, memulai ulang gerhana dan menambahkan lagi, sekarang seharusnya berfungsi.
Warpzit
Ini adalah masalah pada proyek saya yang berada dan berada di ruang kerja yang sama. Mengimpor proyek di ruang kerja yang sama dengan perpustakaan dan semuanya bekerja dengan baik. Terima kasih atas jawabannya.
Jayshil Dave
Periksa apakah ruang kerja dan pustaka Anda berada di lokasi folder yang sama. Membuat kesalahan dengan mengunduh ulang ADT dan membuat proyek di bawah C: \ users workspace sebagai lawan dari workspace saya yang sebenarnya. Tak perlu dikatakan, periksa lagi bahwa proyek Anda DAN perpustakaan Anda berada di direktori kerja yang sama!
Garbit
11

Pastikan kedua proyek hadir di ruang kerja yang sama. Untuk Melakukannya, saat mengimpor proyek pastikan kotak centang "salin proyek ke ruang kerja" dicentang.

Karthik Dheeraj
sumber
1
Bagaimana saya bisa menggunakan proyek perpustakaan yang sama untuk proyek lain. Jika saya melakukannya, itu menunjukkan simbol salib warna merah .. @Kikik
Shylendra Madda
10

masalah yang sama akan terjadi jika proyek perpustakaan Anda berada di partisi yang berbeda dari ruang kerja Anda saat ini. Saya memiliki masalah yang sama sekarang. Sumber git saya ada di C: dan saya baru saja memindahkan ruang kerja saya ke D: dan semuanya mulai runtuh.

pengguna791129
sumber
4
Jika project utama dan library berada di drive yang berbeda , tampaknya Eclipse tidak dapat menyelesaikan jalur Referensi dari absolut ke relatif, dan Eclipse tidak menyukainya (centang hijau berubah menjadi tanda silang merah).
Pang
bekerja untuk saya juga. Saya mengganti proyek yang direferensikan di drive yang sama (H :) dan sekarang tidak apa-apa
Tobia Zambon
4

Cara termudah untuk mendapatkan jalur pustaka yang benar adalah dengan menggunakan GUI dari Eclipse untuk menambahkan pustaka seperti yang ditunjukkan pada tangkapan layar berikut dan biarkan Eclipse menangani penempatan jalur relatif yang benar di project.properties. Ini adalah pengaturan umum untuk membuat proyek perpustakaan Anda dihosting di direktori yang sangat berbeda dari proyek utama Anda yang menggunakan perpustakaan. Metode ini akan berfungsi jika "proyek perpustakaan" dan proyek yang menggunakannya berada dalam "ruang kerja" gerhana yang sama (mereka "tidak perlu" berada di folder induk yang sama): masukkan deskripsi gambar di sini

Nilesh Pawar
sumber
4
Masalahnya adalah karena pustaka dan proyek berada pada drive / partisi yang berbeda ... lihat daftar bug di atas. Anda baik-baik saja karena jalur perpustakaan Anda menunjukkan jalur relatif daripada jalur lengkap DOS ...
kenyee
3

Harap pastikan bahwa proyek perpustakaan ditandai sebagai "Adalah Perpustakaan" - klik kanan pada proyek perpustakaan - properti - Android - tandai kotak centang "Adalah Perpustakaan" - di proyek.properti dari proyek perpustakaan Anda harus memiliki entri baru: "android .library = true Sekarang tambahkan ke proyek yang Anda inginkan seperti yang dijelaskan pada posting di bawah ini. (posting dengan gambar terintegrasi - dari Nilesh Pawar).

Alexandru Circus
sumber
1
Ini bekerja dengan baik untuk saya. Bagian yang membingungkan adalah saya pikir lokasi kotak centang 'Is Library' ini. Tidaklah intuitif bahwa ini sebenarnya memilih target dari app / library build saat ini dan bukan tombol opsi untuk library yang akan disertakan.
EtienneSky
3

Bug ini dirujuk beberapa kali di sini 27199 , 35786 , 36460 & 38052

Mungkin dengan memilih mereka, itu akan diperbaiki suatu hari ...

Laurent.B
sumber
2

Namun pengamatan lain tentang masalah yang sama.

Bagi saya dua proyek di mana di folder induk yang sama, dan keduanya lokal di dalam ruang kerja. Itupun masalah masih terjadi.

Saya mengedit file "project.properties" dan meletakkan jalur absolut (dengan garis miring '/' untuk pemisah) dari proyek perpustakaan. Menyimpan dan menutupnya. Kemudian pergi ke dialog properti proyek, hapus pustaka (yang masih menampilkan ikon silang tetapi dengan jalur abs) dan menambahkannya kembali seperti biasa. Anehnya, masalah teratasi, dan proyek dikompilasi dan dijalankan.

Ini sangat aneh dan pasti ada bug dengan ADT. Saya menggunakan ADT versi 20.0.2

CuriousChettai
sumber
+1. Menghadapi masalah ini saat berpindah pustaka dengan nama yang sama. Sepertinya gerhana (atau ADT) mencoba merujuk ke yang lama dan gagal. Eclipse restart membantu. (Ubuntu 12.04, Eclipse Indigo, ADT 21.0.0)
Luten
2

ketika pengembang mereferensikan facebook atau proyek perpustakaan lainnya maka pertama-tama bersihkan proyek dari eclipse-> project-> clean project. yang ingin mengizinkan kesalahan palang merah di layar referensi.

jayesh jethava
sumber
2

Bagi saya, saya baru saja memulai ulang gerhana dan perpustakaan tambahan berfungsi dengan baik.

Maksud saya pertama kali itu menunjukkan tanda merah setelah menambahkan proyek perpustakaan. Padahal proyek utama eclipse dan proyek perpustakaan berada di folder ruang kerja yang sama dan tidak ada file sumber daya di luar folder proyek.

Jadi, Anda dapat mencoba untuk memulai kembali gerhana Anda. Selamat membuat kode ....

Md Sufi Khan
sumber
1

Solusi bagi saya adalah dengan

  1. Buat ruang kerja baru
  2. Impor Proyek Perpustakaan di ruang kerja itu
  3. Impor Proyek yang diinginkan di ruang kerja itu
  4. Memiliki project dan project library dengan versi OS Android target yang sama
  5. Referensi proyek perpustakaan dalam proyek saya

memecahkan masalah saya

QAMAR
sumber
Membuat ruang kerja baru juga menyelesaikan masalah ini. Anda juga perlu menghapus proyek.
Omer Cansizoglu
1

saya memiliki masalah yang sama di sana ketika saya mencoba mengubah ruang kerja saya jadi ini solusi saya:

  1. impor dan salin semua data proyek termasuk proyek perpustakaan ke dalam ruang kerja
  2. hapus referensi proyek lama dengan klik kanan pada proyek -> Properties -> Android -> Library, dan pilih library yang rusak (sehingga saya menyebutnya) dan pilih Hapus
  3. bersihkan proyek terlebih dahulu (untuk menyegarkan properti proyek Anda)
  4. pergi ke proyek perpustakaan Properties -> Android -> Library dan periksa library is jika tidak klik Apply lalu OK
  5. Jika proyek perpustakaan perpustakaan sudah dicentang, pertama Hapus centang kemudian Bersihkan proyek perpustakaan setelah itu lakukan Langkah 4 lagi
  6. pergi ke proyek yang Anda inginkan pustaka itu berada lalu klik kanan pada proyek -> Properties -> Android -> Library, Add kemudian pilih proyek perpustakaan (itu harus ada) dan klik Apply lalu OK
  7. jika masih tidak muncul, bersihkan proyek sekali lagi dan itu harus dilakukan
ibrahim saputra
sumber
1

Mulai ulang gerhana Anda. Ini memecahkan masalah saya

Manisha Patel
sumber
0

Ketika Anda melihat jalur referensi sebelum dan sesudah, itu berasal dari yaitu "C: / workspace / mylib" dan menuju ke "../../mylib" saat disalin ke lokasi yang benar, cukup menarik.

Sebastian
sumber
0

FYI,

Apa yang berhasil bagi saya adalah menghapus proyek 'perpustakaan' (proyek sebenarnya) dari ruang kerja saya (tanpa menghapus file), dan kemudian mengimpornya kembali menggunakan wizard (mengimpor proyek android yang ada dari kode sumber).

JRun
sumber
Juga bekerja untuk saya. Baru saja menghapus dan mengimpor kembali proyek (sebagai 'proyek gerhana yang ada')
Neromancer
0

Terima kasih telah memposting pertanyaan. Saya mengalami masalah yang persis sama saat mengintegrasikan Facebook dengan aplikasi Android saya. Saya memperbaiki masalah ini dengan memindahkan proyek pengembangan saya ke drive Windows yang sama di mana proyek perpustakaan berada. Entah bagaimana Eclipse tidak dapat membaca lokasi proyek perpustakaan dengan benar dari default.properties file jika berada di drive yang berbeda.

Girish K Gupta
sumber
0

Mirip dengan postingan Sufi Khan, saya juga menyelesaikan masalah ini dengan reboot. Kasus saya berbeda ketika saya pertama kali mengakses Properties-> Android dan menambahkan perpustakaan, saya mendapat tanda centang hijau yang indah. Ketika saya menutup dialog, Eclipse masih menampilkan kesalahan jenis kelas tidak ditemukan. Ketika saya memeriksa propertinya lagi saya melihat X merah. Tapi solusi Mr. Kahn (hapus lib yang buruk, restart Eclipse, tambahkan lib lagi) bekerja dengan baik.

Saya menggunakan bundel ADT versi 0702 (dimulai dengan "cluster", berima dengan "duck").

William T. Mallard
sumber
0

Saya mengikuti jawaban yang diterima tetapi juga harus memastikan file "project.properties" saya dapat dibaca.

Jika file hanya-baca (diperiksa ke kontrol sumber) gerhana tidak akan mengeditnya. Menambahkan referensi perpustakaan akan berhasil, tetapi perubahan tidak akan bertahan setelah menekan OK.

Jika menutup jendela preferensi dan membukanya kembali menghapus perpustakaan yang baru saja Anda tambahkan, ini mungkin solusi Anda.

repkap11
sumber
0

Jika proyek perpustakaan Anda masih tidak muncul, coba tambahkan bendera perpustakaan di properti proyek perpustakaan Anda

Tambahkan android.library = true

project.properties

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-17
android.library=true
HimalayanCoder
sumber