Eclipse Androidプロジェクトにライブラリ/瓶を追加する
-
30-09-2019 - |
質問
これは、EclipseのAndroidプロジェクトにサードパーティライブラリ(JAR)を追加することに関する2部構成の質問です。
質問の最初の部分は、Androidプロジェクトにサードパーティの瓶(ライブラリ)を追加しようとすると、最初に問題が発生します。
XMLの解析エラー:Unboundプレフィックス
私はその瓶からクラスを使用しようとしているためです(そして、何らかの形で定義されたプレフィックスが必要です)。どうしたの?
第二に、(それを修正した後、答えは以下に記載されています)、私のアプリケーションはAndroidで動作せず、デバッガー(LogCat)を介して私が消費しようとしているクラスが存在しないことを発見します。
原因:java.lang.classnotfoundexception:com.github.droidfu.widgets.webimageView ...
なぜ、Eclipseでコンパイルやリンカーエラーが発生しないのに、エミュレータにこの問題が発生しますか?
これらの2つの質問は修辞的です。なぜなら、私は以下で自分自身に答えるつもりだからです。このフォーラムの他の投稿は問題に忍び寄っており、他の場所では議論がありますが、次の男が一緒に来るためにもっと明確に役立つことができると感じています。
解決
欠落しているクラスの問題のために。
私はEclipse Java EE開発者であり、ビルドパスの「ユーザーライブラリ」メカニズムを介して長年にわたってサードパーティライブラリを追加する習慣に陥っています。もちろん、サードパーティライブラリを追加する方法は少なくとも3つあります。私が使用しているものは、私の謙虚な意見で最もエレガントなものです。
ただし、これは、Dalvik "JVM"が通常のJavaコンパイルされたクラスを処理できないAndroidでは機能しませんが、特別な形式に変換する必要があります。これは、私がそれをしない方法でライブラリを追加したときに起こりません。
代わりに、サードパーティライブラリをインポートするための(広く利用可能な)指示に従ってから、ビルドパスを使用して追加します(これにより、編集目的でEclipseに知られています)。これがステップバイステップです:
- ホスト開発システムにライブラリをダウンロードしてください。
- 新しいフォルダーを作成し、 libs, 、Eclipse/Androidプロジェクトで。
- 右クリック libs インポート] - > [一般] - > [ファイルシステム]を選択してから、次に、ファイルシステムを参照してライブラリの[親]ディレクトリ(つまり、ダウンロードした場所)を見つけます。
- OK]をクリックし、左ペインのディレクトリ名(チェックボックスではなく)をクリックし、右ペインの関連する瓶をチェックします。これにより、図書館は(物理的に)プロジェクトになります。
- プロジェクトを右クリックして、[パス]を[> [ビルド]パスの構成を選択し、[ライブラリ]タブをクリックして、JARを追加し、新しい瓶にナビゲートします。 libs ディレクトリとそれを追加します。 (偶然にも、これはあなたの新しい瓶がAndroidで使用するために変換される瞬間です。)
ノート
LIBがすでにビルドパスに含まれている場合、ステップ5は必要ない場合があります。追加する前に、最初にその存在を確認してください。
ここでやったことは2つのことを達成します:
- AndroidプロジェクトにはDalvikで構成された瓶が含まれています。
- Javaの定義をEclipseで利用できるようにして、プロジェクトのソースコードを開発する(つまり、コンパイル)際にサードパーティのクラスを見つけるために使用できます。
他のヒント
サードパーティの瓶がプロジェクト「Libs」フォルダーにあることを確認し、アプリケーションをパッケージ化するときにそれらが.apkに入れられることを確認します。瓶内の何かがサポートされていない場合、デバイスにランタイムエラーが表示される場合がありますが、それ以外はこれで大成功を収めました。
ライブラリプロジェクトのセットアップ
ライブラリプロジェクトは標準的なAndroidプロジェクトであるため、新しいアプリケーションプロジェクトと同じ方法で新しいプロジェクトを作成できます。
図1に示すように、ライブラリプロジェクトを作成するときは、アプリケーション名、パッケージ、必要に応じて他のフィールドを設定できます。
次に、プロジェクトのプロパティを設定して、それがライブラリプロジェクトであることを示します。
パッケージエクスプローラーで、ライブラリプロジェクトを右クリックして、プロパティを選択します。 [プロパティ]ウィンドウで、左側の「Android」プロパティグループを選択し、右側のライブラリプロパティを見つけます。 [ISライブラリ]チェックボックスを選択し、[適用]をクリックします。 [OK]をクリックして、プロパティウィンドウを閉じます。新しいプロジェクトは現在、図書館プロジェクトとしてマークされています。以下のセクションで説明されているように、ソースコードとリソースの移動を開始できます。
ADTバージョン22を使用している場合は、プロジェクトビルドパスのOrder&ExportタブでAndroid依存関係とAndroidプライベートライブラリを確認する必要があります。
まず、欠落しているプレフィックスの問題。
サードパーティから来るレイアウトファイルで何かを消費する場合、その接頭辞も消費する必要があるかもしれません。これは「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="..."
/>
これは瓶から出てきますが、新しい「XMLNS:DROIDFU」を追加する必要があります。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:droidfu="http://github.com/droidfu/schema"
...>
または、アンバウンドプレフィックスエラーが表示されます。私にとって、これはサードパーティの図書館のページから提供されたすべての例をコピーして貼り付けることができませんでした。
XMLの解析エラー:Unboundプレフィックス
リソース '/playteddy/res'は存在しません。
上記の2つのエラーを取得し、最後に解決しました。
プロジェクトを右クリック - >プロパティ - > Javaビルドパス - > googleadmobadsdk(選択して上部に置く)、実行して問題が解決します。それは私のランタイムエラーを解決しました。
ソースをワークスペースの外側のフォルダーに入れます。 Project-Explorerで右クリックし、「インポート...」を選択します。
Androidプロジェクトとしてワークスペースにプロジェクトをインポートします。それを構築してみて、それがライブラリプロジェクトとしてマークされていることを確認してください。また、Google APIサポートでビルドされていることを確認してください。そうでない場合は、エラーをコンパイルします。
次に、プロジェクトエクスプローラーのメインプロジェクトを右クリックします。プロパティを選択し、左側のAndroidを選択します。以下のライブラリセクションで、[追加]をクリックします。
MapView-Ballonsライブラリがプロジェクトに追加できるようになりました。
Eclipseでパスを構築し、[注文]をクリックしてエクスポートし、ライブラリ/JARをチェックし、[アップ]ボタンをクリックしてリストの上部に移動して最初にコンパイルします。