web-dev-qa-db-ja.com

Android St​​udioプロジェクトから.jarを作成する方法

私はAndroidStudioを使用していますが、このプロジェクトは次のとおりです:

enter image description here

青い円の中にあるのはmyLibです。 myLibは、赤い円の内側にある外部ライブラリと、Apacheパッケージ(緑色の円)も使用する必要があります。

したがって、このすべてを単一の.jarにしたいので、別のプロジェクトで使用できます。

ステップバイステップのガイドは本当にありがたいです、私は開発者の世界の初心者です。

ありがとう!

93
dum4ll3
  • ライブラリプロジェクトのbuild.gradleを開く enter image description here

  • Build.gradleにdeleteJarとcreateJarの2つのタスクを記述し、ルールcreateJar.dependsOn(deleteJar、build)を追加します enter image description here

上記のコード:

task deleteJar(type: Delete) {
    delete 'libs/jars/logmanagementlib.jar'
}           

task createJar(type: Copy) {
    from('build/intermediates/bundles/release/')
    into('libs/jars/')
    include('classes.jar')
    rename('classes.jar', 'logmanagementlib.jar')
}

createJar.dependsOn(deleteJar, build)
  • 右からgradleパネルを展開し、yourlibrary-> othersの下のすべてのタスクを開きます。そこで、createJarとdeleteJarの2つの新しいタスクが表示されます enter image description here

  • CreateJarをダブルクリックします enter image description here

  • タスクが正常に実行されたら、createJarタスクに記載されているパスから生成されたjarを取得します。つまり、libs/xxxx.jar enter image description here

  • 新しく生成されたjarを必要なプロジェクトのlibフォルダにコピーします->右クリック->「ライブラリとして追加」を選択します

128
Abhinav Tyagi

GradleでコードをプレーンJavaモジュールとして設定した場合、Gradleに内容を含むjarファイルを提供するのは非常に簡単です。そのjarファイルにはコードのみが含まれ、依存する他のApacheライブラリは含まれません。この方法で配布することをお勧めします。ライブラリ内に依存関係をバンドルするのは少し奇妙であり、それらのライブラリのユーザーが独自にそれらの依存関係を含める必要があるのはより一般的です(そうでなければ、それらのプロジェクトの衝突がすでにライブラリのコピーをリンクしているので、おそらく異なるバージョンの)。さらに、ライブラリを公開する場合に、他の人のコードを再配布することに関する潜在的なライセンスの問題を回避できます。

また、jarにコンパイルする必要があるコードを取得し、それをJava St​​udioの別のプレーンAndroidモジュールに移動します。

  1. ファイル メニュー> 新しいモジュール... > Javaライブラリ
  2. ウィザードでライブラリ、Javaパッケージ名、およびクラス名を設定します。 (クラスを作成したくない場合は、モジュールが作成されたら削除できます)
  3. Androidコードで、新しいモジュールの依存関係を設定して、新しいライブラリのコードを使用できるようにします。
  4. ファイル > プロジェクト構造 > モジュール > (Androidモジュール) > 依存関係 > + > モジュールの依存関係。以下のスクリーンショットを参照してください。 enter image description here
  5. 表示されるダイアログのリストからモジュールを選択します。 enter image description here

うまくいけば、プロジェクトが正常にビルドされるはずです。ビルドを実行すると、Javaライブラリのjarファイルが ビルド/ライブラリ モジュールのディレクトリ内のディレクトリ。 jarファイルを手動でビルドする場合は、そのを実行できます jar Gradleウィンドウからファイルタスクをビルドします。 enter image description here

56
Scott Barta

GradleにはTaskの下に既にotherがあります

enter image description here

次に、createFullJarReleaseまでスクロールしてクリックします。

Gradle Tasks

その後、プロジェクトのこのフォルダーにアーティファクトが見つかります

Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar

17
Haroun Hajem

これをJavaモジュールのbuild.gradleに追加するだけです。アーカイブに依存ライブラリが含まれます。

mainClassName = "com.company.application.Main"

jar {
  manifest { 
    attributes "Main-Class": "$mainClassName"
  }  

  from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
  }
}

これにより、[module_name]/build/libs/[module_name] .jarファイルが作成されます。

9
Bao Le

.jarファイルは、アプリケーションのコンパイル/実行時に自動的に生成されます。

Class.jarファイルはroot_folder/app/build/intermediates/bundles/debugから見つけることができます

jar file location

0
task deleteJar(type: Delete) {
    delete 'libs/mylibrary.jar'
}           

task exportjar(type: Copy) {
    from('build/intermediates/compile_library_classes/release/')
    into('libs/')
    include('classes.jar')
    rename('classes.jar', 'mylibrary.jar')
}

exportjar.dependsOn(deleteJar, build)
0

私が見つけた方法は、プロジェクトコンパイラの出力を見つけることでした(プロジェクト構造>プロジェクト)。次に、jarにしたいモジュールのコンパイル済みフォルダーを見つけ、Zipで圧縮し、出力の拡張子をZipからjarに変更します。

0
yaniv

AndroidStudioからgradleタスクを実行する場合

assembleRelease 

またはターミナル経由

./gradlew <moduleName>:assembleRelease

その後、.aar<modulePath>/build/outputs/aar/<Name>.aarを見つけることができます

その後、コマンドラインツールを使用して追加の操作(例:.jarの作成)を行うことができます

0
yoAlex5