ライブラリー/ JARをEclipse Androidプロジェクトに追加する


130

これは、EclipseのAndroidプロジェクトにサードパーティライブラリ(JAR)を追加することについての2つの部分からなる質問です。

質問の最初の部分は、サードパーティのJAR(ライブラリ)をAndroidプロジェクトに追加しようとすると、最初に次の問題が発生することです。

XMLの解析エラー:バインドされていないプレフィックス

私はそのJARのクラスを使用しようとしているためです(そして、何らかの形で定義された接頭辞が必要です)。どうしたの?

次に、(それを修正した後-答えは以下に示されています)、私のアプリケーションはAndroidで動作せず、デバッガー(LogCat)を介して、使用しようとしているクラスが存在しないことがわかります。

原因:java.lang.ClassNotFoundException:com.github.droidfu.widgets.WebImageView ...

Eclipseでコンパイルエラーやリンカーエラーが発生しないのはなぜですか、エミュレーターでこの問題が発生しますか?

これら2つの質問は修辞的です。このフォーラムの他の投稿は問題に近づき、他の場所で議論がありますが、私は次の人が一緒に来るのをより明確に助けることができると感じています。

回答:


316

次に、不足しているクラスの問題について説明します。

私はEclipse Java EE開発者であり、ビルドパスの「ユーザーライブラリ」メカニズムを介してサードパーティのライブラリを追加するという長年の習慣があります。もちろん、サードパーティのライブラリを追加する方法は少なくとも3つあります。私の考えでは、私が使用する方法が最もエレガントです。

ただし、これはAndroidでは機能しません。Dalvik "JVM"は通常のJavaコンパイル済みクラスを処理できませんが、特別な形式に変換する必要があります。これは、私がやらない方法でライブラリを追加した場合には起こりません。

代わりに、(広く利用可能な)サードパーティライブラリのインポート手順に従って、ビルドパスを使用してライブラリを追加します(これにより、Eclipseがコンパイル目的でライブラリを認識できるようになります)。手順は次のとおりです。

  1. ライブラリをホスト開発システムにダウンロードします。
  2. Eclipse / Androidプロジェクトに新しいフォルダーlibsを作成します。
  3. libsを右クリックして[ インポート] -> [一般]-> [ファイルシステム] を選択し、次に[次へ] を選択して、ライブラリの親ディレクトリ(ダウンロード先)を見つけます。
  4. [OK]をクリックし、左側のペインで(チェックボックスではなく)ディレクトリ名をクリックし、右側のペインで関連するJARを確認します。これにより、ライブラリがプロジェクトに(物理的に)配置されます。
  5. プロジェクトを右クリックし、[ビルドパス]-> [ビルドパスの構成]を選択して、[ライブラリ]タブ、[JARの追加]の順にクリックし、libsディレクトリの新しいJARに移動して追加します。(ちなみに、これは、新しいJARがAndroidで使用するために変換される瞬間です。)

注意

libがすでにビルドパスに含まれている場合、ステップ5は必要ない場合があります。追加する前に、その存在を確認してください。

ここで行ったことは2つのことを実現します。

  1. Dalvikに変換されたJARをAndroidプロジェクトに含めます。
  2. プロジェクトのソースコードを開発(つまり、コンパイル)するときにサードパーティのクラスを見つけるために、EclipseでJava定義を使用できるようにします。

ラス、あなたはおそらく別の別の質問を開始する必要があります。この「答え」は、ここに座っているように見えます。
ポールグレゴワール2010

3
それで、質問の一部を少し書き直しました。私は両方の問題がサードパーティのライブラリを追加しようとすることから生じると本当に思うので、私は簡単なことをする誘惑に抵抗しました(ここであなたが提案すること)。最初のものも。ありがとう。
ラスベイトマン

Androidの正式なドキュメントでこれについてもっと明確なものがあれば(まだそれにつまずいていない)、他のフォーラムの他の回答にたどり着いたのですが、問題を見逃さないでください。BlackBerryでは、この同じ問題が大きな悪夢であり、解決方法に関する信頼できる情報を誰も提供していないことに注意してください。そこで何をするかわかりません。
ラスベイトマン

2
こんにちは@RussBateman上記の手順を試してみましたが、Androidプロジェクトにライブラリjarを正常に含めることができたため、コンパイル時にライブラリクラスにプロジェクトからアクセスできましたが、プロジェクトを実行するとエラーが発生しますコンソールで:「Dalvik形式への変換はエラー1で失敗しました」..そして私のプロジェクトは起動しませんでした!
Zeba

特定の状況下ではこれは機能しません...私が何をしたか正確に覚えていません、libsフォルダーを削除し、それを追加しました...今、あなたが言ったすべてを行い、libsを追加し、jarをインポートし、ビルドパスに追加しました。 。コンパイラエラーはなくなりましたが、クラスが見つからないというランタイム例外が発生します:(
Ixx

20

サードパーティのjarがプロジェクトの「libs」フォルダーにあり、アプリケーションをパッケージ化するときに.apkに配置されることを確認します。jarの何かがサポートされていない場合、デバイスでランタイムエラーが発生する可能性がありますが、それ以外の場合、これで大きな成功を収めています。


1
そのすべての経験について、私は以前に同じ問題を抱えていました:)
Paul Gregoire

Sirに感謝しますが、libsフォルダに、Mavenリポジトリまたはどこかにすでにある外部Jarファイルのコピーが必要であることを確認するのは面倒です。
ass

1
残念ながら、これは自動的に機能しなくなりました。パッケージファイルにライブラリを含めるようにeclipseに指示する必要もあります。
Neil Townsend

それはいつ変わりましたか?これは、私たちが慣れ親しんでいるものに対する大きな変化です。
ポールグレゴワール2013

5

ライブラリプロジェクトの設定

ライブラリプロジェクトは標準のAndroidプロジェクトであるため、新しいアプリケーションプロジェクトと同じ方法で新しいプロジェクトを作成できます。

ライブラリプロジェクトを作成するとき、図1に示すように、アプリケーション名、パッケージを選択し、必要に応じて他のフィールドを設定できます。

次に、プロジェクトのプロパティを設定して、ライブラリプロジェクトであることを示します。

パッケージエクスプローラーで、ライブラリプロジェクトを右クリックし、[プロパティ]を選択します。[プロパティ]ウィンドウで、左側にある「Android」プロパティグループを選択し、右側にあるライブラリプロパティを見つけます。「is Library」チェックボックスを選択して、「適用」をクリックします。[OK]をクリックして[プロパティ]ウィンドウを閉じます。これで、新しいプロジェクトがライブラリプロジェクトとしてマークされました。以下のセクションで説明するように、ソースコードとリソースをそこに移動することができます。


4

ADTバージョン22を使用している場合は、プロジェクトのビルドパスの[注文とエクスポート]タブでAndroidの依存関係とAndroidのプライベートライブラリを確認する必要があります


2

まず、接頭辞の欠落の問題です。

サードパーティからのレイアウトファイルで何かを使用する場合は、その接頭辞も使用する必要がある場合があります。「droidfu:」のようなものは、以下のXML構成のいくつかの場所で発生します。

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

これはJARから出てきますが、新しい「xmlns:droidfu」を追加する必要もあります。

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

または、バインドされていないプレフィックスエラーが発生します。私にとって、これはサードパーティのライブラリのページから提供されたすべての例をコピーして貼り付けることができなかったためです。


1

XMLの解析エラー:バインドされていないプレフィックス

リソース '/ playteddy / res'は存在しません。

上記の2つのエラーが発生し、最後に解決しました。

プロジェクトを右クリック->プロパティ-> Javaビルドパス-> googleadmobadsdk(選択して上部に配置)すると、実行して問題が解決します。それは私のランタイムエラーを解決しました。


0

ソースをyourtワークスペース外のフォルダに配置します。プロジェクトエクスプローラーを右クリックし、[インポート...]を選択します。

プロジェクトをワークスペースにAndroidプロジェクトとしてインポートします。ビルドしてみて、ライブラリプロジェクトとしてマークされていることを確認してください。また、コンパイルエラーが発生する場合は、Google APIサポートでビルドされていることを確認してください。

次に、プロジェクトエクスプローラーでメインプロジェクトを右クリックします。プロパティを選択し、左側でAndroidを選択します。下のライブラリセクションで、[追加]をクリックします。

mapview-balloonsライブラリがプロジェクトに追加できるようになりました。


0

Eclipseでビルドパスに移動し、[order and export]をクリックしてから、ライブラリ/ jarを確認してから、[上へ]ボタンをクリックしてリストの一番上に移動し、最初にコンパイルします。

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