いくつかのライブラリソースをダウンロードしましたが、AndroidStudioを使用してJarファイルとしてエクスポートしたいと思います。Android Studioを使用してjarファイルにエクスポートする方法はありますか?
編集:
jarとしてエクスポートしたいライブラリはAndroidライブラリです。これは「StandOut」と呼ばれ、GitHubからダウンロードできます。 https://github.com/pingpongboss/StandOut
いくつかのライブラリソースをダウンロードしましたが、AndroidStudioを使用してJarファイルとしてエクスポートしたいと思います。Android Studioを使用してjarファイルにエクスポートする方法はありますか?
編集:
jarとしてエクスポートしたいライブラリはAndroidライブラリです。これは「StandOut」と呼ばれ、GitHubからダウンロードできます。 https://github.com/pingpongboss/StandOut
回答:
Androidライブラリをjarファイルとしてエクスポートすることはできません。ただし、aar
ファイルとしてエクスポートすることは可能です。Aar
ファイルはAndroidライブラリの新しいバイナリ形式です。それらに関する情報は、Google I / O、新しいビルドシステムのビデオにあります。
まず、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 Studio0.3.7を使用しました。そのステップでいくつかの問題が発生しました。つまり、gradle
Volleyライブラリのソースコードをインポートする前に、新しいAndroidプロジェクトからフォルダーをコピーする必要がありました。これは、使用するソースコードによって異なる場合があります。
build.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
プロジェクトルートからコマンドを実行します。私の場合、新しいAndroidプロジェクトからライブラリプロジェクトルートにファイルをコピーする必要がgradlew.bat
ありましたgradle
。コンパイルしたライブラリファイルmyCompiledLibrary.jar
はbuild\libs
ディレクトリにあります。
誰かがこれがお役に立てば幸いです。
編集:
これは機能しますが、複数のモジュール(アプリケーションモジュールを含む)が同じものに依存している複数のモジュールでプロジェクトをコンパイルしているときに、ライブラリの重複例外が発生します jar
ファイルに(たとえば、モジュールにはbuild.gradle
、特定のモジュールで参照されている独自のライブラリディレクトリがあります) 。
複数のモジュールで単一のライブラリを使用する必要がある場合は、次のアプローチを使用することをお勧めします: Androidgradleビルドとサポートライブラリ
res
フォルダが必要な場合、AARファイルはまさにそれです-res
フォルダをサポートするJARファイル。
Android Studio V1.0以降、jarファイルは次のプロジェクトリンク内で利用できます。
デバッグバージョン: "your_app" \ build \ Intermediates \ bundles \ debug \ classes.jar
リリースバージョン: "your_app" \ build \ Intermediates \ bundles \ release \ classes.jar
JARファイルはビルド手順で作成されます。AndroidStudioGUIでは、[ビルド]-> [プロジェクトの作成]から作成され、CMD行からは「gradlewビルド」になります。
以下を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とjavadocjarがビルドされます。build/libs/
コマンドでます。これフォルダーにます。
編集: Android Gradleツール1.10。+では、AndroidSDKディレクトリの取得が以前とは異なります。以下を変更する必要があります(Vishalに感謝します!):
android.sdkDirectory
の代わりに
android.plugin.sdkDirectory
このチュートリアルを使用して、Android Studioでjarファイルをエクスポートできました:https: //www.youtube.com/watch?v = 1i4I-Nph-Cw 「AndroidStudioからjarをエクスポートする方法」
AndroidStudioでJARをエクスポートするためのすべての手順を含めるように回答を更新しました。
1)Androidアプリケーションプロジェクトを作成し、app-> build.gradleに移動します
2)このファイルの以下を変更します。
プラグインの適用を変更: 'com.android.application'プラグインを適用するには: 'com.android.library'
以下を削除します:applicationId、versionCode、versionName
次のコードを追加します。
// Task to delete old jar
task deleteOldJar(type: Delete){
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)このファイルで今すぐ同期をクリックすることを忘れないでください(右上または同期ボタンを使用)。
4)Gradleタブ(通常は右中央)をクリックし、下にスクロールして exportjarます
5)実行ウィンドウにビルド成功メッセージが表示されたら、通常のファイルエクスプローラーを使用して、パスC:\ Users \ name \ AndroidStudioProjects \ ProjectName \ app \ release を使用してエクスポートされたjarに移動します。このディレクトリにjarファイルが表示されます。
幸運を :)
これは、いくつかの機能強化を加えた、さらに別のわずかに異なる答えです。
このコードは、.aarから.jarを取り出します。個人的には、.jar経由で出荷されるビットが.aar経由で出荷されるビットと同じであるという自信が少しあります。これは、ProGuardを使用している場合、出力jarが必要に応じて難読化されることも意味します。
また、すべてのビルドバリアントのjarを作成するスーパー「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 Studioにより、リソースファイルなしで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.プロジェクトルートでgradlewmakeJarを実行します
運が良ければ、ディレクトリの下にビルド/ libs /としてライブラリが表示されます。
================================================== ==========
以下のようにコマンドラインで「ソケットタイムアウト例外」として問題が発生した場合は、
この手順に従って、右側のGradleウィンドウを開き、AndroidStudioで[makeJar]をクリックします。
次に、build / libs dirに移動すると、jarファイルが表示されます。
それがあなたに役立つことを願っています。
幸運を @。@
ルナ