これは、サードパーティライブラリ(JAR)をEclipseのAndroidプロジェクトに追加することに関する2部構成の質問です。
質問の最初の部分は、サードパーティのJAR(ライブラリ)をAndroidプロジェクトに追加しようとすると、最初に次の問題が発生します。
XMLの解析エラー:バインドされていないプレフィックス
私はそのJARからクラスを使用しようとしているので(そして何らかの形で定義されたプレフィックスが必要です)。どうしたの?
第二に、(それを修正した後-答えは以下に与えられます)、私のアプリケーションはAndroidで動作せず、デバッガ(LogCat)を介して、私が消費しようとしているクラスが動作しないことを発見します存在します。
原因:Java.lang.ClassNotFoundException:com.github.droidfu.widgets.WebImageView ...
なぜ、Eclipseでコンパイルまたはリンカーエラーが発生しないのに、エミュレーターでこの問題が発生するのですか?
これらの2つの質問は、以下で自分で答えるので修辞的です。このフォーラムの他の投稿は問題に忍び寄っており、他の場所では議論がありますが、私は次の人がやってくるのにより明確に役立つことができると感じています。
次に、クラスが欠落している問題について説明します。
私はEclipse Java EE開発者であり、ビルドパスの「ユーザーライブラリ」メカニズムを介してサードパーティライブラリを追加する習慣を長年にわたって持っています。もちろん、サードパーティのライブラリを追加するには少なくとも3つの方法がありますが、私が使用するものは最もエレガントです。
ただし、Dalvik "JVM"が通常のJavaコンパイルクラスを処理できないAndroidの場合、これは機能しませんが、特別な形式に変換する必要があります。これは、私がやりたくない方法でライブラリを追加しても発生しません。
代わりに、サードパーティライブラリをインポートするための(広く利用可能な)指示に従い、ビルドパスを使用して追加します(これにより、コンパイルのためにEclipseに認識されます)。手順は次のとおりです。
注意
Libがすでにビルドパスに含まれている場合、ステップ5は必要ない場合があります。追加する前に、まずその存在を確認してください。
ここで行ったことは、2つのことを実現します。
サードパーティのjarがプロジェクトの「libs」フォルダーにあり、アプリケーションをパッケージ化するときに.apkに配置されることを確認してください。 jar内の何かがサポートされていない場合、デバイスでランタイムエラーが表示される場合がありますが、それ以外はこれで大成功しています。
ライブラリプロジェクトのセットアップ
ライブラリプロジェクトは標準のAndroidプロジェクトであるため、新しいアプリケーションプロジェクトと同じ方法で新しいプロジェクトを作成できます。
ライブラリプロジェクトを作成する場合、図1に示すように、アプリケーション名、パッケージを選択し、必要に応じて他のフィールドを設定できます。
次に、プロジェクトのプロパティを設定して、それがライブラリプロジェクトであることを示します。
パッケージエクスプローラーで、ライブラリプロジェクトを右クリックし、[プロパティ]を選択します。 [プロパティ]ウィンドウで、左側の[Android]プロパティグループを選択し、右側のライブラリプロパティを見つけます。 「ライブラリ」チェックボックスを選択し、「適用」をクリックします。 [OK]をクリックして[プロパティ]ウィンドウを閉じます。これで、新しいプロジェクトはライブラリプロジェクトとしてマークされました。以下のセクションで説明するように、ソースコードとリソースをそこに移動し始めることができます。
ADTバージョン22を使用している場合は、プロジェクトビルドパスのorder&ExportタブでAndroid依存関係とAndroidプライベートライブラリを確認する必要があります
まず、欠落しているプレフィックスの問題。
サードパーティ製のレイアウトファイルで何かを使用する場合、以下の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"
...>
または、バインドされていないプレフィックスエラーが表示されます。私にとって、これはサードパーティのライブラリのページから提供されたすべての例をコピーして貼り付けるのに失敗しました。
XMLの解析エラー:バインドされていないプレフィックス
リソース「/ playteddy/res」は存在しません。
上記の2つのエラーが発生し、最終的に解決しました。
プロジェクトを右クリック->プロパティ-> Javaビルドパス-> googleadmobadsdk(選択して最上位に配置)を実行すると、問題が解決します。ランタイムエラーが解決されます。
Eclipseでビルドパスに移動し、順序とエクスポートをクリックし、ライブラリ/ jarを確認してから、上ボタンをクリックしてリストの一番上に移動し、最初にコンパイルします。
ソースをワークスペース外のフォルダーに配置します。プロジェクトエクスプローラーを右クリックし、「インポート...」を選択します
ワークスペースにプロジェクトをAndroidプロジェクトとしてインポートします。ビルドして、ライブラリプロジェクトとしてマークされていることを確認してください。また、Google APIサポートでビルドされていることを確認してください。ビルドされていない場合、コンパイルエラーが発生します。
次に、プロジェクトエクスプローラーでメインプロジェクトを右クリックします。プロパティを選択し、左側のAndroidを選択します。以下のライブラリセクションで、[追加]をクリックします。
これで、mapview-balloonsライブラリがプロジェクトに追加できるようになります。