ライブラリのソースをダウンロードし、それをJarファイルとして書き出したい。 Android Studioを使用しています。Android Studioを使用して、jarファイルにエクスポートする方法はありますか?
を編集します。
jarで書き出したいライブラリは、Androidのライブラリです。 GitHubからダウンロードすることができます。 https://github.com/pingpongboss/StandOut
Androidのライブラリはjarファイルとしてエクスポートすることはできません。しかし、aar
ファイルとしてエクスポートすることは可能です。Aar`ファイルは、Androidライブラリの新しいバイナリフォーマットです。Google I/OのNew Build System videoに、このファイルについての情報があります。
まず、Android Studioでライブラリをビルドするか、コマンドラインからライブラリのルートディレクトリからgradle build
を実行します。
この結果、<yourlibroot>/libs/build/yourlib.aar
ファイルが作成されます。
このaarファイルはライブラリのバイナリ表現であり、依存プロジェクトとしてライブラリの代わりにプロジェクトに追加することができます。
aarファイルを依存関係として追加するには、mavenセントラルまたはローカルのmavenリポジトリに公開し、プロジェクトのgradle.build
ファイル内でaarファイルを参照する必要があります。
しかし、このステップは少し複雑です。その方法については、ここに良い説明がありました。
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
このソリューションのアプローチで、ライブラリのソースコードをコンパイルした .jar
ファイルをビルドすることができました。
https://stackoverflow.com/a/19037807/1002054
以下は、私が行ったことの内訳です。
この場合はボレー文庫でした
Android Studio 0.3.7を使用しました。Volleyライブラリのソースコードをインポートする前に、新しいandroidプロジェクトからgradle
フォルダをコピーする必要があったため、このステップでいくつかの問題が発生しました。
// If your module is a library project, this is needed
//to properly recognize 'android-library' plugin
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.3'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 17
buildToolsVersion = 17
sourceSets {
main {
// Here is the path to your source code
java {
srcDir 'src'
}
}
}
}
// This is the actual solution, as in https://stackoverflow.com/a/19037807/1002054
task clearJar(type: Delete) {
delete 'build/libs/myCompiledLibrary.jar'
}
task makeJar(type: Copy) {
from('build/bundles/release/')
into('build/libs/')
include('classes.jar')
rename ('classes.jar', 'myCompiledLibrary.jar')
}
makeJar.dependsOn(clearJar, build)
gradlew makeJar
コマンドを実行します。私の場合、新しいアンドロイドプロジェクトから gradlew.bat
と gradle
ファイルをライブラリプロジェクトのルートにコピーする必要がありました。
buildlibsディレクトリに、コンパイルしたライブラリファイル
myCompiledLibrary.jar` があるはずです。
どなたかのお役に立てれば幸いです。
*編集部:***。
しかし、この方法では、複数のモジュールを含むプロジェクトをコンパイルする際に、ライブラリの重複による例外が発生します。
一つのライブラリを複数のモジュールで使用する必要がある場合は、この方法を使用することをお勧めします。 https://stackoverflow.com/questions/16746558/android-gradle-build-and-the-support-library/17153240#17153240
Android Studio V1.0以降、jarファイルは次のプロジェクトリンク内で利用できます。。
debug ver: "your_app" \ build \ intermediates \ bundles \ debug \ classes.jar。
リリースver: "your_app" \ build \ intermediates \ bundles \ release \ classes.jar。
JARファイルはビルド手順で作成されます。 Android Studio GUIでは、Build-> Make Projectから、CMDラインからは「gradlew build」です。
build.gradleに以下を記載する。
android.libraryVariants.all { variant ->
task("generate${variant.name}Javadoc", type: Javadoc) {
description "Generates Javadoc for $variant.name."
source = variant.javaCompile.source
ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
}
task("javadoc${variant.name}", type: Jar) {
classifier = "javadoc"
description "Bundles Javadoc into a JAR file for $variant.name."
from tasks["generate${variant.name}Javadoc"]
}
task("jar${variant.name}", type: Jar) {
description "Bundles compiled .class files into a JAR file for $variant.name."
dependsOn variant.javaCompile
from variant.javaCompile.destinationDir
exclude '**/R.class', '**/R$*.class', '**/R.html', '**/R.*.html'
}
}
そして、gradleを実行することができます。/gradlew clean javadocRelease jarReleaseと実行すると、Jarとjavadoc jarが
build/libs/` フォルダに構築されます。
EDIT: android gradle tools 1.10.+ では、android SDK dir の取得が以前と異なります。以下のように変更する必要があります(Vishalさんありがとうございます!)。
android.sdkDirectory
代わりに
android.plugin.sdkDirectory
このチュートリアルを使用して、Android Studioにjarファイルをエクスポートできました。 https://www.youtube.com/watch?v = 1i4I-Nph-Cw。 「Android StudioからJarをエクスポートする方法」。
Android StudioにJARをエクスポートするためのすべての手順を含めるように、回答を更新しました。
1)Androidアプリケーションプロジェクトを作成し、 app-> build.gradle に移動します。
2)このファイルで以下を変更します。
-プラグインを適用する: 'com.android.application' をプラグインを適用する: 'com.android.library' に変更します。
-以下を削除します: applicationId、versionCodeおよびversionName 。
-次のコードを追加します。
//古い瓶を削除するタスク。 タスクdeleteOldJar(タイプ:Delete){。 'release / AndroidPlugin2.jar'を削除します。 }。
// task to export contents as jar
task exportJar(type: Copy) {
from ('build/intermediates/bundles/release/')
into ('release/')
include ('classes.jar')
rename('classes.jar', 'AndroidPlugin2.jar')
}
exportJar.dependsOn(deleteOldJar, build)
3)このファイルで sync をクリックすることを忘れないでください(右上または同期ボタンを使用)。
4)[Gradle]タブ(通常は中央右)をクリックし、 exportjar までスクロールします。
5)実行ウィンドウにビルド成功メッセージが表示されたら、通常のファイルエクスプローラーを使用して、次のパスを使用してエクスポートされたjarに移動します。 C:\ Users \ name \ AndroidStudioProjects \ ProjectName \ app \ release 。 このディレクトリにjarファイルが表示されます。
幸運 :)。
ここに、いくつかの拡張機能を備えた、少し異なる別の答えがあります。
このコードは、.aarから.jarを削除します。 個人的には、.jar経由で出荷されるビットが.aar経由で出荷されるビットと同じであるという確信が少しあります。 これは、ProGuardを使用している場合、出力ジャーが必要に応じて難読化されることも意味します。
また、すべてのビルドバリアントに瓶を作るスーパー "makeJar"タスクも追加しました。
task(makeJar) << {
// Empty. We'll add dependencies for this task below
}
// Generate jar creation tasks for all build variants
android.libraryVariants.all { variant ->
String taskName = "makeJar${variant.name.capitalize()}"
// Create a jar by extracting it from the assembled .aar
// This ensures that products distributed via .aar and .jar exactly the same bits
task (taskName, type: Copy) {
String archiveName = "${project.name}-${variant.name}"
String outputDir = "${buildDir.getPath()}/outputs"
dependsOn "assemble${variant.name.capitalize()}"
from(zipTree("${outputDir}/aar/${archiveName}.aar"))
into("${outputDir}/jar/")
include('classes.jar')
rename ('classes.jar', "${archiveName}-${variant.mergedFlavor.versionName}.jar")
}
makeJar.dependsOn tasks[taskName]
}
好奇心 ⁇ 盛な読者のために、com.android.libraryプラグインが.aarファイルの名前付けに使用する正しい変数とパラメーターを決定するのに苦労しました。 Androidオープンソースプロジェクトここでようやく見つけました。
Androidスタジオでは、リソースファイルなしでAndroidライブラリプロジェクト用のjarファイルをエクスポートできます。 また、最近会ったことも必須です。
1。 build.gradleファイルを構成します。
// Task to delete old jar
task clearJar(type: Delete){
delete 'release/lunademo.jar'
}
// task to export contents as jar
task makeJar(type: Copy) {
from ('build/intermediates/bundles/release/')
into ('build/libs/')
include ('classes.jar')
rename('classes.jar', 'lunademo.jar')
}
makeJar.dependsOn(clearJar, build)
2。 プロジェクトルートの下でgradlew makeJarを実行します。
運が良ければ、dirの下のlibsがbuild / libs /として表示されます。
===============================================================================================================================================================================================================================================================
以下のコマンドラインで「ソケットタイムアウト例外」として問題が発生した場合。
。。
この手順に従って、右側のGradleウィンドウを開き、Androidスタジオで[makeJar]をクリックします。
。。
。。
次に、build / libs dirに移動します。jarファイルが表示されます。
それがあなたにとって役立つことを願っています。
幸運@。@。
ルナ。