86

いくつかのライブラリ ソースをダウンロードしましたが、Android Studio を使用して Jar ファイルとしてエクスポートしたいと考えています。Androidスタジオを使用してjarファイルにエクスポートする方法はありますか?

編集:

jarとしてエクスポートしたいライブラリはAndroidライブラリです。これは「StandOut」と呼ばれ、GitHub からダウンロードできます。 https://github.com/pingpongboss/StandOut

4

7 に答える 7

86

Android ライブラリを jar ファイルとしてエクスポートすることはできません。ただし、aarファイルとしてエクスポートすることは可能です。Aarファイルは、Android ライブラリの新しいバイナリ形式です。それらに関する情報は、Google I/O のNew Build System ビデオにあります。

まず、Android Studio でライブラリをビルドするかgradle build、ライブラリのルート ディレクトリから発行されるコマンドラインからライブラリをビルドします。

これにより、<yourlibroot>/libs/build/yourlib.aarファイルが作成されます。

この aar ファイルはライブラリのバイナリ表現であり、ライブラリの代わりに依存プロジェクトとしてプロジェクトに追加できます。

aar ファイルを依存関係として追加するには、それを Maven Central またはローカルの Maven リポジトリに公開してから、プロジェクトのgradle.buildファイルで aar ファイルを参照する必要があります。

ただし、この手順は少し複雑です。ここでその方法についての良い説明を見つけました:

http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds

于 2013-06-16T09:56:52.640 に答える
12

このチュートリアルを使用して、Android Studio で jar ファイルをエクスポートできました: https://www.youtube.com/watch?v=1i4I-Nph-Cw 「Android Studio から Jar をエクスポートする方法」

回答を更新して、Android Studio で JAR をエクスポートするためのすべての手順を含めました。

1) Android アプリケーション プロジェクトを作成し、app->build.gradleに移動します。

2) このファイルで以下を変更します。

  • apply plugin: 'com.android.application'を変更して、apply plugin: '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)実行ウィンドウにビルド成功メッセージが表示されたら、通常のファイル エクスプローラーを使用して、次のパスを使用してエクスポートされた jar に移動します: C:\Users\name\AndroidStudioProjects\ProjectName\app\release このディレクトリに jar ファイルが表示されます。

幸運を :)

于 2015-11-29T14:35:37.260 に答える
9

これは、いくつかの拡張機能を備えた、わずかに異なる別の回答です。

このコードは、.jar を .aar から取り出します。個人的には、これにより、.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 Open Source Project hereでようやく見つけました。

于 2015-01-23T05:10:26.003 に答える