日食では、別のAndroidプロジェクトでAndroidライブラリプロジェクトを参照できません


104

私がこの質問を書いていたとき、私はなんとかそれを解決したので、他の人のためにここで繰り返します。ここに初期の問題があります:

別のプロジェクトで参照したい非常に単純なライブラリプロジェクトを作成しました。私は以前に問題なくこれを行ったので、今回はなぜ機能しないのか本当にわかりません。私が持っています:

  1. プロジェクトプロパティを介してライブラリプロジェクトにフラグを付けました。default.propertiesファイルには、このセットを持っています:android.library=true

  2. 私の他のプロジェクトでは、プロジェクトプロパティを介してライブラリプロジェクトへの参照を追加しました。default.propertiesファイルが期待すなわちとして追加の参照を持っていますandroid.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. 参照されているライブラリプロジェクトに対する緑の目盛りは、緑から始まり、赤の十字に変わります。

これは、ライブラリプロジェクトに問題があるか欠落している必要があることを意味しますが、私には何がわかりません。この機会に私のライブラリプロジェクトは、以前に作成したものよりもはるかに単純です。


このソリューションは私の場合に役立ちました:stackoverflow.com/questions/9283040/… それが誰かを助けることを願っています
Sul

回答:


160

OKこれは、ファイルシステムでライブラリではなく参照プロジェクトのdefault.properiesファイルを探していたときに見つけた解決策です。参照プロジェクトはライブラリプロジェクトと同じEclipseワークスペースにありましたが、実際のファイルはファイルシステムの別の場所にありました。つまり、ライブラリプロジェクトの同じ親フォルダーにはありませんでした。ライブラリプロジェクトと同じ物理フォルダーに参照プロジェクトを配置するとすぐに、すべてがうまくいきました。

これは、カバーの下にある蟻を使ったアンドロイドと関係があるに違いないと思います。

編集:プロジェクト名は、ファイルシステム上のフォルダー名と一致する必要があります。Project Properties-> Android-> Library Referenceに表示されているのは、相対ファイルシステムパスです。


3
また、シンボリックリンクがこれに問題があることを追加したいと思います。すべてのプロジェクトを別の場所(バックアップしたいものを置く場所)の同じフォルダーに保存し、ワークスペースフォルダー内のこれらのフォルダーへの一連のシンボリックリンクを保存しました。彼らはそうだったが、シンボリックリンクの使用は、それをすべて台無しに、両方の場所で互いに同じフォルダ内のすべての。実際のフォルダをベースワークスペースとしてロードしたら、問題はありませんでした。
Zulaxia、2011

7
+1 Eclipse / ADTコンボのこの恐ろしい動作を明確にするため。参考までに、両方のプロジェクトを同じ物理フォルダに配置しても、そのフォルダがSamba共有にある場合は役に立ちません。Ugrrr ...
an00b

20
Eclipseが参照を削除し、Eclipseを再起動して再度追加する場合がありますが、これで動作するはずです。
Warpzit

これは、同じワークスペースに属し、配置されている私のプロジェクトの問題でした。ライブラリと同じワークスペースにプロジェクトをインポートし、すべてが正常に機能しました。答えてくれてありがとう。
Jayshil Dave

ワークスペースとライブラリが同じフォルダの場所にあることを確認してください。私の実際のワークスペースではなく、ADTの再ダウンロードの間違いを犯し、C:\ usersワークスペースの下にプロジェクトを作成しました。言うまでもなく、プロジェクトとライブラリが同じ作業ディレクトリにあることを再度確認してください。
Garbit、2014年

11

両方のプロジェクトが同じ作業スペースに存在することを確認してください。これを行うには、プロジェクトをインポートするときに、[プロジェクトをワークスペースにコピーする]チェックボックスがオンになっていることを確認します。


1
同じライブラリプロジェクトを別のプロジェクトで使用するにはどうすればよいですか。私はそれが赤色十字記号を示すようにすると... @Karthik
Shylendra Madda

10

ライブラリプロジェクトが現在のワークスペースとは別のパーティションにある場合も、同じ問題が発生します。今も同じ問題があります。私のgitソースはC:にあり、ワークスペースをD:に移動すると、すべてが崩壊し始めます。


4
メインプロジェクトとライブラリプロジェクトが別のドライブにある場合、Eclipseは参照パスを絶対パスから相対パスに解決できず、Eclipseはそれについて満足していません(緑色のチェックマークが赤い十字に変わります)。
2012

私も働いた。同じドライブ(H :)で参照プロジェクトを置き換えましたが、これで問題ありません
トビアザンボン

4

ライブラリパスを正しく取得する最も簡単な方法は、次のスクリーンショットに示すように、EclipseからGUIを使用してライブラリを追加し、Eclipseがproject.propertiesに正しい相対パスを配置できるようにすることです。ライブラリプロジェクトを、ライブラリを使用するメインプロジェクトとは大きく異なるディレクトリでホストするための一般的な設定です。この方法は、「ライブラリプロジェクト」とそれを使用するプロジェクトが同じEclipseの「ワークスペース」にある場合に機能します(「親フォルダーにある必要はありません」)。 ここに画像の説明を入力してください


4
問題は、ライブラリとプロジェクトが別のドライブ/パーティションにあるためです...上記のバグリストを参照してください。あなたは大丈夫ですので、代わりにDOSフル・パスのライブラリパスが示す相対パス...
kenyee

3

ライブラリプロジェクトが「Is Library」としてマークされていることを確認してください-ライブラリプロジェクトを右クリックします-プロパティ-Android-「Is Library」チェックボックスをマークします-ライブラリプロジェクトのproject.propertiesに新しいエントリがあります: "android .library = true。次に、以下の投稿(イメージが統合された投稿-Nilesh Pawarによる)の説明に従って、必要なプロジェクトに追加します。


1
これでうまくいきました。わかりにくいのは、この「Is Library」チェックボックスの場所だと思います。これが実際に現在のapp / libraryビルドのターゲットを選択することであり、ライブラリを含めるオプションスイッチではないことは直感的ではありません。
EtienneSky


2

同じ問題に関するさらに別の観察。

私にとって、2つのプロジェクトは同じ親フォルダーにあり、どちらもワークスペース内でローカルでした。それでも、問題はまだ起こっていました。

「project.properties」ファイルを編集して、ライブラリプロジェクトの絶対パス(セパレーターの場合はスラッシュ「/」を使用)を配置しました。保存して閉じました。次に、プロジェクトのプロパティダイアログボックスに移動し、ライブラリを削除し(クロスアイコンは表示されますが、absパスが表示されます)、通常どおりに追加し直しました。驚くべきことに、問題は解決され、プロジェクトはコンパイルされて実行されます。

これは非常に奇妙で、ADTのバグであるに違いありません。ADTバージョン20.0.2を使用しています


+1。同じ名前のライブラリを切り替えるときにこの問題に直面しました。Eclipse(またはADT)が古いものを参照しようとして失敗したように見えます。Eclipseの再起動が役立ちます。(Ubuntuの12.04、Eclipseのインディゴ、ADT 21.0.0)
Luten

2

開発者がfacebookやその他のライブラリプロジェクトを参照する場合、最初にeclipse-> project-> clean projectからプロジェクトをクリーンアップします。参照画面で赤十字のエラーを許可したい。


2

私にとって、私は日食を再起動するだけで、追加されたライブラリは正常に動作します。

ライブラリプロジェクトを追加した後、初めて赤いマークが表示されることを意味します。Eclipseメインプロジェクトとライブラリプロジェクトは同じワークスペースフォルダーにあり、プロジェクトフォルダーの外部にリソースファイルはありません。

だから、あなたはあなたの日食を再開するために試すことができます。ハッピーコーディング...


1

私の回避策は

  1. 新しいワークスペースを作成する
  2. そのワークスペースにライブラリプロジェクトをインポートする
  3. そのワークスペースに目的のプロジェクトをインポートする
  4. プロジェクトとライブラリの両方が同じターゲットAndroid OSバージョンをプロジェクトする
  5. プロジェクト内の参照ライブラリプロジェクト

私の問題を解決しました


新しいワークスペースを作成すると、問題も解決しました。また、プロジェクトをクリアする必要があります。
Omer Cansizoglu 2014年

1

ワークスペースを変更しようとしたときに同じ問題が発生したため、これが私の解決策です:

  1. ライブラリプロジェクトを含むすべてのプロジェクトデータをワークスペースにインポートおよびコピーする
  2. プロジェクトを右クリックして古いプロジェクト参照を削除します->プロパティ-> Android->ライブラリを選択し、破損したライブラリを選択して(それを呼び出すため)、削除を選択します。
  3. 最初にプロジェクトをクリーンアップ(urプロジェクトのプロパティを更新するため)
  4. ライブラリプロジェクトの[プロパティ]-> [Android]-> [ライブラリ]に移動し、[適用]をクリックしてから[OK]をクリックしない場合はライブラリを確認します。
  5. ライブラリプロジェクトがすでにオンになっている場合は、まずオフにしてから、ライブラリプロジェクトをクリーンアップしてから、ステップ4を再度実行します。
  6. ライブラリが必要なプロジェクトに移動し、プロジェクトを右クリックして、[プロパティ]、[Android]、[ライブラリ]の順に選択し、ライブラリプロジェクト(そこにあるはずです)を選択して、[適用]、[OK]の順にクリックします。
  7. それでも表示されない場合は、プロジェクトをもう一度クリーンアップしてください。


0

参照パスの前後を見ると、「C:/ workspace / mylib」から来ており、正しい場所にコピーすると「../../mylib」に移動するので、非常に興味深いです。


0

ご参考までに、

私にとってうまくいったのは、ワークスペースから「ライブラリ」プロジェクト(実際のプロジェクト)を削除し(ファイルを削除せずに)、ウィザードを使用してそれらを再インポートする(ソースコードから既存のAndroidプロジェクトをインポートする)ことでした。


また私のために働いた。プロジェクトを削除して再インポートした(「既存のEclipseプロジェクト」として)
Neromancer

0

質問を投稿していただきありがとうございます。FacebookをAndroidアプリケーションと統合しているときにも、まったく同じ問題が発生しました。ライブラリプロジェクトが配置されていたのと同じWindowsドライブに開発プロジェクトを移動して、問題を修正しました。どういうわけか、Eclipseは、別のドライブにある場合、default.propertiesファイルからライブラリプロジェクトの場所を正しく読み取ることができません。


0

Sufi Khanの投稿と同様に、この問題もリブートで解決しました。私の場合は、最初に[プロパティ]-> [Android]にアクセスしてライブラリを追加したときに、素敵な緑色のチェックマークが付いた点が異なりました。ダイアログを閉じたとき、Eclipseはまだクラスが見つからないタイプのエラーを表示していました。プロパティをもう一度確認すると、赤いXが表示されていました。しかし、カーン氏の解決策(不良ライブラリを削除し、Eclipseを再起動し、再度ライブラリを追加)は問題なく機能しました。

私はADTバンドルの0702バージョンを使用しています(「クラスター」で始まり、「ダック」で韻を踏みます)。


0

受け入れられた回答に従いましたが、「project.properties」ファイルが読み取り可能であることを確認する必要もありました。

ファイルが読み取り専用(ソース管理にチェックインされている)の場合、Eclipseはそれを編集しません。ライブラリ参照の追加は成功しますが、OKをクリックした後、変更は保持されません。

設定ウィンドウを閉じて再度開くと、追加したライブラリが削除される場合、これが解決策である可能性があります。


0

それでもライブラリプロジェクトが表示されない場合は、ライブラリプロジェクトのプロパティにライブラリフラグを追加してみてください

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.