2017-04-17 6 views
0

現在、Ant/ndk-buildからGradle/CMakeにプロジェクトを移行しています。私はAndroid Studioからコンパイルするのではなく、コマンドラインからコンパイルしています。私はすでに大きなプロジェクトをGradleに移行しました。しかし、完成したAPKではなく、最終製品が共有オブジェクトだけのライブラリプロジェクトを移行する必要があります。Android用共有オブジェクトの作成

私はAPKの結果ではなく、共有オブジェクトのAndroidプロジェクトをコンパイルする最良の方法は何ですか?常にAPKをコンパイルするように見えますが、この場合は必要ありません。だから私はちょうど述べたようにCMakeを使用する必要がありますhere?しかし、おそらくSDK/NDKのアップデートごとに変更されるあらゆる種類の内部パスを渡さなければならないので、Gradleがおそらく私のために自動的に管理するCMakeには複雑です。

Android Studioを使用せずにコマンドラインからAndroidの共有オブジェクトをコンパイルするにはどうすればよいですか? GradleをライブラリモードにしてAPKをアセンブルしない方法がありますか?

+0

「いつでも私のためにAPKをコンパイルするように見えますが、この場合は必要ありません」 - いいえ。 Gradleは、Gradleプラグインを使用してコンパイルするように指示します。 「おそらくGradleをライブラリモードにする方法はありますか? - Androidライブラリモジュールがあります:https://developer.android.com/studio/projects/android-library.htmlを参照してください。 – CommonsWare

+0

しかし、共有オブジェクトをコンパイルするために特別に設計されたプラグインはありますか、ここでどうすればよいですか?あなたがリンクしているAndroidライブラリプラグインは、私が欲しくないAARファイルを作成するのでここでは役に立ちません。私はちょうど追加のアクションが起こっていない共有オブジェクトに* .cファイルの束をコンパイルしたいだけです。 – Andreas

+1

"* .cファイルを大量の共有オブジェクトにコンパイルして、何も追加のアクションを起こさずにしたいだけです" - 最近のAndroidパターンは、それらの共有オブジェクトを含むAARを作成することです(それらを使用するJNIコード)、AARを適切なメタデータ(例えば、バージョン情報、推移的依存関係)を伴うアーティファクト・リポジトリに入れることができる。それがあなたが望むものでないなら、それはあなたの選択ですが、AFAIK Android Studioはあなたが望むものをサポートしていません。私はGradleでそれをするためのレシピはありません。 – CommonsWare

答えて

1

プロジェクトのルートディレクトリからgradlew buildNativeを実行してください。 * .cファイルをビルドします。これはNDKの単なるラッパーであるため、app/src/main/jniディレクトリからndk-buildを実行するのと同じ出力を生成します。

これは、ソースファイル、ヘッダーファイル、およびメイクファイルがapp/src/main/jniであることを前提としています。結果はあなたの* .soファイルになります。

+0

これはまだ 'ndk-build'に依存しています。最適には、GradleとCMakeのみを使用し、 'ndk-build'は使用しないでください。 – Andreas

+0

'ndk-build'を使用します。しかし、CMakeを使って 'gradle buildNative'を実行すると、CMakeスクリプトをラップして.soファイルを生成すると思います。私は数週間前にあなたのポストで言及したのと同じ[CMake link](https://developer.android.com/ndk/guides/cmake.html)を使ってAndroidプロジェクトを構築しました。それは良い指針です。 – Martin

+0

それはうまくいくはずです。ありがとう! – Andreas

関連する問題