Androidプロジェクトで外部JARを使用するにはどうすればよいですか?


326

Androidプロジェクトを作成し、外部JAR(hessian-4.0.1.jar)をプロジェクトに追加しました。次に、JARをビルドパスに追加し、[注文とエクスポート]で確認しました。

注文とエクスポートは無視されているようですが、実行時に外部JARのすべてのクラスが欠落しています。

Eclipseプラグインを使用してAndroidアプリケーションを構築するときに、外部JARから必要なクラスを適切に含めるトリックはありますか?antやMavenを使用したくない。


1
あなたがすでに知っているように:これはhessian-4.0.1.jarの依存関係が原因です。AndroidでHessianを使用する場合は、Hessdroid(code.google.com/p/hessdroid)を使用してください。あまりアクティブではありませんが、Android 4.0でも動作します。
Ice09

1
外部jarを使用する際の一般的な問題については、「Android上のJavaライブラリのコードに対するNoClassDefFoundError」も参照してください。シンプルなソリューション
Flow

回答:


443

Eclipseの場合

AndroidプロジェクトまたはJavaプロジェクトに外部JARを追加する良い方法は次のとおりです。

  1. libsプロジェクトのルートフォルダーにというフォルダーを作成します
  2. JARファイルをフォルダーにコピーlibsます。
  3. 次に、Jarファイルを右クリックし、[ビルドパス]> [ビルドパスに追加]を選択します。これにより、プロジェクト内に「参照ライブラリ」というフォルダーが作成されます。

    これにより、プロジェクトを別のコンピューターに転送するときに、ハードドライブで参照されているライブラリ失われることはありません

Android Studioの場合

  1. プロジェクトエクスプローラーのAndroidビューにいる場合は、以下のようにプロジェクトビューに変更します。

画像がありません

  1. 外部ライブラリを追加するモジュールを右クリックして、[ 新規]> [Directroy]を選択し、「libs」という名前を付けます。
  2. blah_blah.jarを「libs」フォルダにコピーします
  3. blah_blah.jarを右クリックして、「ライブラリとして追加...」を選択します。これにより、build.gradleコンパイルファイル( 'libs / blah_blah.jar')としてエントリが自動的に追加され、gradleが同期されます。これで完了です

注意:サードパーティのライブラリを使用している場合は、Gradleスクリプトの実行時にGradleスクリプトがJARと依存関係JARを自動的にダウンロードする推移的な依存関係を使用することをお勧めします。

例:「com.google.android.gms:play-services-ads:9.4.0」をコンパイルします

Gradle Dependency Mangementの詳細を読む


49
最近のEclipse / ADTバージョンを使用する場合、外部jarはlibs(ではなくlib)というフォルダーにある必要があることに注意してください
THelper

4
@THelper-ありがとうございます!正解です。フォルダには「lib」ではなく「libs」という名前を付ける必要があります。私はこの問題に頭をぶつけていました。
カミーユセヴィニー2012

7
SDKの最近のバージョンでは、手順3(JARを手動でビルドパスに追加する)は不要です。ただし、ファイルをドロップしたときにEclipseが開いているようなIDEがある場合は、プロジェクトを更新する必要があります(パッケージエクスプローラーのF5またはコンテキストメニューの更新、あるいはその両方)。
Jon Adams

4
コマンドラインからどのように行うのですか?どの構成ファイルを編集する必要がありますか?
Kristian Spangsege

13
このアプローチは2012年の初めから古くなっていlibs/ます。JAR​​をに追加するだけです。ビルドパスを手動で変更しないでください。
CommonsWare 2013年

127

はい、使用できます。方法は次のとおりです。

  1. プロジェクト->右クリック->インポート->ファイルシステム-> yourjar.jar
  2. プロジェクト->右クリック->プロパティ-> Javaビルドパス->ライブラリ-> Add Jar-> yourjar.jar

このビデオは、問題が発生した場合に役立ちます。


5
このアプローチは2012年の初めから古くなっています。JARをlibs /に追加するだけです。ビルドパスを手動で変更しないでください。
CommonsWare 2013年

ビルドパスを追加する様々な方法を試しました。この方法でのみ、あるプロジェクトを別のPCに移行した後にClass not found例外を修正できます
ミッキー

最初のソリューションは古く、AS WELLとして機能しません。
Yousha Aleayoub 2015

5

現在SDK 20.0.3を使用していますが、以前のソリューションはどれも機能しませんでした。

hessdroidがhessが失敗した場所で機能する理由は、2つのjarファイルに、異なる仮想マシン用にコンパイルされたjavaが含まれているためです。Javaコンパイラーによって作成されたバイトコードは、Dalvik仮想マシンでの実行が保証されていません。Androidコンパイラーによって作成されたバイトコードは、Java仮想マシンでの実行が保証されていません。

私の場合、ソースコードにアクセスでき、ここで説明した方法を使用してAndroid jarファイルを作成することができました。https//stackoverflow.com/a/13144382/545064


5

OPがEclipseプラグインに関連して彼の質問を終えることは知っていますが、Eclipseを指定していない検索でここに到着しました。Android Studioの場合:

  1. jarlibsディレクトリにファイルを追加(コピー/貼り付けなど)
  2. jarファイルを右クリックして[ ライブラリとして追加...]を選択します
  3. 次のダイアログで[OK]をクリックするか、必要に応じて名前を変更します。

それでおしまい!


4

スタックトレースをよく見ていませんが、問題は外部JARが含まれていないことではありません。

問題は、Androidプラットフォームにjavax.naming。*と、外部JARにも依存関係がある他の多くのパッケージがないことです。

外部JARファイルの追加、およびEclipseでの順序とエクスポートの設定は、Androidプロジェクトで期待どおりに機能します。


3

現在のプロジェクトに移動

右クリック->プロパティ-> Javaビルドパス->ライブラリにJARファイルを追加-> [OK]をクリック

次に、現在のプロジェクトの参照ライブラリファイルに追加されます。


1

AndroidのJava APIは、javax.naming。*および他の多くのjavax。*のものをサポートしていません。依存関係を個別のjarとして含める必要があります。


1

Android Studioを使用している場合は、次のようにします(@Vinayak Bsの回答をコピーして変更しました)。

  1. (パッケージやAndroidの代わりに)プロジェクトのサイドビューでプロジェクトビューを選択します。
  2. プロジェクトのルートフォルダにlibsというフォルダを作成します
  3. JARファイルをlibsフォルダーにコピーします。
  4. サイドビューが更新され、JARファイルがプロジェクトに表示されます
  5. 次に、インポートする各JARファイルを右クリックし、[ライブラリとして追加...]を選択します。これにより、プロジェクトに含まれます。
  6. その後は、コード内の新しいクラスを参照するだけです。 import javax.mail.*

1

Gradleを使用している場合はAndroid Studioで

これをbuild.gradleに追加します

compile fileTree(dir: 'libs', include: ['*.jar'])

jarファイルをlibsフォルダーに追加します


1

Gradleビルドシステムを使用している場合は、次の手順に従います。

  1. Androidアプリのjarそれぞれのlibsフォルダー内にファイルを配置します。あなたは、一般的にそれを見つけるだろうProject> app> libslibsフォルダーがない場合は作成してください。

  2. これをbuild.gradleファイルに追加しますapp。(あなたProjectのものではないbuild.gradle

    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        // other dependencies
    }

    これにはjarlibsフォルダーで使用可能なすべてのファイルが含まれます。

すべてのjarファイルを含めたくない場合は、個別に追加できます。

compile fileTree(dir: 'libs', include: 'file.jar')


0

プロジェクト内にフォルダー(libなど)を作成し、jarをそのフォルダーにコピーします。次に、プロジェクトを右クリックしてビルドパスを構成しビルドパスを選択します

「jarを追加」で 、作成したフォルダーを参照し、jar を選択します。


0

.jarファイルをAndroidプロジェクトのフォルダーにコピーできるとは限りません。
特に、それがワークスペース内の別のプロジェクトの出力であり、更新され続ける場合。

これを解決するには、jarをインポートする(ローカルにコピーする)代わりに、jarをリンクファイルとしてプロジェクトに追加する必要があります。

UIで次を選択します。

プロジェクト->インポート->ファイルシステム-> yourjar.jar->(オプション領域)詳細->ワークスペースにリンクを作成。

リンクは.projectファイルに保存されます。

<linkedResources>
    <link>
        <name>yourjar.jar</name>
        <type>1</type>
        <locationURI>PARENT-5-PROJECT_LOC/bin/android_ndk10d_armeabi-v7a/yourjar.jar</locationURI>
    </link>
</linkedResources>

PARENT-5-PROJECT_LOC は、プロジェクトファイルを基準にして、5つのディレクトリ(../../../../../)を基準にしています。

次に、ライブラリに追加します。
プロジェクト->プロパティ-> Javaビルドパス->ライブラリ-> Add Jar-> yourjar.jar

同じウィンドウで[ 注文とエクスポート ]タブを選択し、jarをマークしてapkに追加します。

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