web-dev-qa-db-ja.com

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

これは、サードパーティライブラリ(JAR)をEclipseのAndroidプロジェクトに追加することに関する2部構成の質問です。

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

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

私はそのJARからクラスを使用しようとしているので(そして何らかの形で定義されたプレフィックスが必要です)。どうしたの?

第二に、(それを修正した後-答えは以下に与えられます)、私のアプリケーションはAndroidで動作せず、デバッガ(LogCat)を介して、私が消費しようとしているクラスが動作しないことを発見します存在します。

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

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

これらの2つの質問は、以下で自分で答えるので修辞的です。このフォーラムの他の投稿は問題に忍び寄っており、他の場所では議論がありますが、私は次の人がやってくるのにより明確に役立つことができると感じています。

129
Russ Bateman

次に、クラスが欠落している問題について説明します。

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

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

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

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

注意

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

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

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

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

20
Paul Gregoire

ライブラリプロジェクトのセットアップ

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

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

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

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

5
koke

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

4
ajaykoppisetty

まず、欠落しているプレフィックスの問題。

サードパーティ製のレイアウトファイルで何かを使用する場合、以下のXML構造のいくつかの場所で発生する「droidfu:」などのプレフィックスも使用する必要があります。

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

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

2
Russ Bateman

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

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

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

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

1
sujan

Eclipseでビルドパスに移動し、順序とエクスポートをクリックし、ライブラリ/ jarを確認してから、上ボタンをクリックしてリストの一番上に移動し、最初にコンパイルします。

0
Sam Adamsh

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

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

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

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

0
Leander