配布用のAndroid Jarライブラリを作成する


160

Android Libraryプロジェクトを知っています。これにより、必要に応じてAndroidアプリケーションに取り込むことができる共有ソースプロジェクトを作成できます。ただし、そのためにはソースが利用可能である必要があります。

従来のJARのような他のAndroidプロジェクトで使用できるクローズドソースライブラリをビルドして配布する方法を探しています。これにはAndroidコンパイラを使用する必要があるため、これは通常のJava JARファイルではありません。FWIW、JARにリソース/レイアウトを埋め込む必要はありません。

http://andparcel.com/を見たことがありますが、これは回避策のように感じます。Googleが「公式にサポート」しているものを使用したいと思います。また、構築したJARがAndroid SDKの新旧バージョンと互換性があることを確認する必要があります(つまり、ターゲットプラットフォームのバージョンを設定する方法などが必要です)。

最新のAndroidツールセットでは、JARバイナリの作成/使用が可能ですか?私がそれをどのように行うことができるかに関するいくつかのドキュメントを指すことができますか?


あなたの質問に対する答えはありますか?私にも同様の要件があります。jarファイルを作成する方法を教えてください。
Krishnabhadra、2012年

Android用の.jarを配布するには、Android dxコンパイラーは必要ありません。通常のJavaコンパイラーが機能します。jarを配布する場合、アプリのビルド時にjarがdxバイトコードに変換されます。
ThomasW 2012

回答:


49

リソースを持たないAndroidライブラリプロジェクトを作成する場合、ADT(r16で最初に通知)は、プロジェクトと同じ名前の.jarを「bin」フォルダーに作成します。



1
これでjarが取得されますが、resourcesフォルダーをまだ配布する必要がありますか?アクションバーのシャーロックをjar化しようとすると、アクションバーのリソースが見つからないため、私のプロジェクトはコンパイルされません。
Nathan Schwermann、2013

1
@schwizこれは非リソースプロジェクトでのみ機能します(回答で述べたように)。それ以外の場合は、標準のAndroidライブラリプロジェクトとしてインポートする必要があります。
Freddroid、2013

1
これはまだ本当ですか?フォルダに表示さmyapp.jarれません/bin。ありますがclasses.jar、それではありませんよね?
garbagecollector 2013年

最新のADTを実行していますが、/ binフォルダーに<プロジェクト名> .jarが残っています。しかし、プロジェクトがリソースに依存している場合、それは良いことではなく、プロジェクトをライブラリプロジェクトとして含める必要があります(ただし、.jarを取得します。)
Freddroid

23

Androidは特別な種類のAndroid-JARを提供していません。しかし、あなたができることは、プロジェクトにbuild.xmlを追加して、antでJARをビルドすることです。

私のbuild.xmlは次のようになります。

<project name="MyAndroidLib" default="dist" basedir=".">
  <description>
This is my Android lib
  </description>
  <!-- set global properties for this build -->
  <property name="src" location="src" />
  <property name="bin" location="bin" />

  <target name="jar">
    <jar destfile="MyAndroidLib.jar" basedir="bin/classes/">
      <!-- replace 'com' by what ever you are using -->
      <!-- as first part of the package name -->
      <!-- e.g. de, org, ... -->
      <!-- the ** is important to include the directory recursively -->
      <include name="com/**" />
    </jar>
  </target>
</project>

ant jarプロジェクトのメインフォルダーで実行してJARをビルドします。


これを試してJARファイルを構築することはできましたが、ライブラリをJARにエクスポートするときと比較すると、サイズが奇妙でした(343バイトのみ)。どのフラグが欠けているかについて何か考えはありますか?
シェーン・オリバー

アーカイブプログラム(JARはZIP)を使用してJARの内容を確認し、不足しているものを確認して追加できます。詳細については、こちらをご覧ください:ant.apache.org/manual/Tasks/jar.html
white_gecko

5
最新のAndroid SDKを使用すると、Javaファイルはにコンパイルされるためbin/classes、次のように<jar destfile="MyAndroidLib.jar" basedir="bin/">なります<jar destfile="MyAndroidLib.jar" basedir="bin/classes/">
Theo

17

「通常の」Javaプロジェクトを作成し、そこからAndroid.jarをインポートできます。その後、SDKのすべてのコンポーネントにアクセスできます。次に、プロジェクトをjarとしてエクスポートし、Androidアプリからロードします。これはうまく機能し、それを行うのはかなり簡単な方法のようです。


1
その場合、サービス、アクティビティ、broadcastreceivers、intentfiltersなどのライブラリのコンポーネントを宣言する方法。クライアントアプリケーションは、これらすべての宣言をマニフェストで保持する必要がありますか?
Ron

@ferostar android.jarをJavaプロジェクトにインポートするにはどうすればよいですか?
Krishnabhadra

ライブラリにリソースがある場合、R.javaを生成してJARに追加する方法

15

jarを作成するプロジェクトのプロパティに移動します。[Android]タブをクリックします。Isライブラリでチェックを入れます。これで、binフォルダーにある.jarファイルを確認できます。使用する場所でそれを使用してください。


2
LibraryProjectにリソースがない場合、これは機能するようです。それをリソースと連携させる方法はありますか?
Nathan Schwermann、2013

ライブラリプロジェクトが他のプロジェクトに依存している場合、これは悪い答えです。これらの参照は取得されません。
stevebot 2015

10

Googleが「公式にサポート」している唯一のソリューションはライブラリプロジェクトであり、ソースコードを配布する必要があります。JARは通常の方法で作成できますが、その中にリソースを含めたり参照したりすることはできません。

残念ながら、ソースコードの要件を回避する手段として、パッケージ化されたJARをライブラリプロジェクトに含めることも不可能だと思います。


「通常の方法でJARを作成できますが、その中にリソースを含めたり参照したりすることはできません。」<-Androidクラスを参照したり、Androidコンパイラを使用したりすると、Eclipseでは正しく機能しないようです。それを機能させる方法についての手がかり?
psychotik

5
Eclipseで通常のJavaプロジェクトを作成し、ビルドパスにandroid.jarを追加して、[エクスポート]-[Java]-[Jarファイル]を選択します。
Jeff Gilfelt、2011

@JeffGilfeltと、例でandroid-13 sdkディレクトリにandroid.jarを含める場合、より高いAPIレベルのプロジェクトでjarライブラリを引き続き使用できますか?
フランマルゾア2012年

10

Android Studio 1.2の最新ビルドでは、JARライブラリの作成がポイントアンドクリックと同じくらい簡単になりました。

従うべき手順:

  • Goto File-> New-> New Module ここに画像の説明を入力してください
  • オプションリストの最後にある[Javaライブラリ]を選択します ここに画像の説明を入力してください
  • jar libの名前とクラスの名前を入力して、完了ボタンを押してください ここに画像の説明を入力してください
  • それでおしまい !

次のステップでは、Jarライブラリを依存関係としてアプリに追加します。そのように単純

  • Goto File-> Project Structure-> Select 'app'-> Select 'Dependency'
  • 下部にある「+」を選択->「モジュールの依存関係」を選択 ここに画像の説明を入力してください
  • 上記で作成したjar libモジュールを選択します ここに画像の説明を入力してください ここに画像の説明を入力してください
  • [OK]を選択すると、それで終わりです。

....または、以下の行をApp Gradleファイルに追加することもできます

dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar']) // Default Gradle Task, should be already present
      compile 'com.android.support:appcompat-v7:21.0.3' // Default Gradle Task, should be already present

      compile project(':nameOfYourJarLibraryModule') // This is your jar library module
 }

Googleは、サポートされているJARがAndroid Studioに戻されたにもかかわらず、Android Archive(AAR)を宣伝しています。AARとJARの違いを確認するには、このリンクを参照してください


これが新しいjarファイルを作成する方法がわかりません。Androidプロジェクトのライブラリとして使用される新しいモジュールを作成しているようです
Jejefcgb

何?!何もないところから新しいjarを作成しますか?
Ewoks

@Ewoks:モジュールを作成したら、クラスを追加する必要があります。完了したら、依存関係として追加します
Nishant。

2
質問は次のとおりです。ソースコードを含む充実したライブラリがあります。jarを作成して、jar全体をライブラリのソースコード全体ではなく別のプロジェクトで使用する方法。または、何かを見落としましたか?
Ewoks 2015年

2
@ニシャント。私のために働いた!ありがとう!
ramires.cabral 2017年

6

これを試してください:これは機能します

1)IsLibraryフラグの選択を解除して、ライブラリプロジェクトを通常のプロジェクトにします。

2)Androidアプリケーションとしてプロジェクトを実行します。(エラーは表示されません)

3).jarファイルは.apkとともにbinフォルダーにあります。

4)ライブラリを使用する.jarを提供します。

5)外部jarをビルドパスにインポートするように伝えます。

これはすべてのリソースで正常に動作します。幸運を祈ります。


1
この投稿を修正する必要があります。JARファイルにはコードのみを含めることができ、Androidリソースは含めることができません。リソースが含まれている/必要な場合は、ライブラリプロジェクトを開いたままにする必要があり、単純なJARファイルを使用するだけではできません。
cody

@cody:リソースと一緒にjarファイルを生成し、別のプロジェクトで使用するにはどうすればよいですか?
Mahantesh M Ambi 2015

1

ADTは、プロジェクト内の一致するすべてのソースファイルとディレクトリのすべてのクラスファイルを含むbinフォルダーを作成します。jarコマンドを使用して、これらのクラスファイルとディレクトリを含むjarアーカイブを作成し、ライブラリを推定できますが、もちろんクラスファイルのプラットフォームレベルは、プロジェクトビルドの現在のレベルのみを対象としています。プラットフォームレベルごとに異なるjarファイルが必要です。ただし、これについてのすばらしい点は、R.classファイルがプロジェクトディレクトリツリーに含まれているため、そのリソースにアクセスできることです。これがアンドロイドで物事を行う公式な方法かどうかはわかりませんが、私にとってはうまくいきました。


0

このプロジェクトでは、/ system / frameworkにインストールされ、このapkをデフォルトのクラスパスに追加するapkを作成します(apkbuilderを使用)。jarを使用してアプリケーションをコンパイルするために、jarファイルを作成しています(jar cを使用)。

注:ライブラリにはリソースがありません。


0

.jarは、.classファイルを含む単なる.zipファイルです(.jarファイルの拡張子を.zipに変更して、結果を確認できます)。 簡単に、.classファイルを圧縮することにより、任意の目的で任意の.jarライブラリを作成できます。


厳密には当てはまりません。微妙な違い(主にZIP内のエントリの順序については、en.wikipedia.org
wiki / JAR_(file_format

0

手順:

1)project.propertiesファイルを開く

2)付加価値 android.library=true

3)ファイルを保存する

4)プロジェクトのEclipseメニューから、ビルドを自動的に選択し、クリーンを選択します

結果: 真新しいjarbinの下に作成されます。

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