2011-02-08 12 views
5

私はC++でライブラリを作成し、テストしました。ソースコードを直接追加すると、コードはAndroidアプリケーションでも機能します。一般的なオペレーティングシステム用のスタティックライブラリとダイナミックライブラリをコンパイルした経験はありますが、このようなモバイルシステム用にコンパイルした経験はありません。私はいくつかの研究をしてきましたが、私はまだこのアプローチにどのようにして正確に迷っています。たとえば、ndk-buildで使用するmakefileをビルドするか、Androidのコンパイラを直接呼び出すかはわかりません。Android用に独自のC++ライブラリをコンパイルするにはどうすればよいですか?

私はthis questionを見ましたが、私の状況にはあまり合いません。私はちょうどビルドを実行してlibfoo.aを吐き出したいと思っています(libfoo.soも作りたいですが、libfoo.aは今私にとって大きな関心事です)。その質問の勝利の答えの例は、最終的なアプリケーションを構築するための1つのステップ/モジュールとしてライブラリを構築します。私はちょうど見るためにそれをやってみたが、私は運がなかった。

誰でもこの取り組みをガイドできますか?

CLARIFICATION - 私はライブラリをビルドしてすぐにアプリケーションにパイプしたくありません。複数の将来のAndroidアプリケーションでリンクできる.aまたは.soファイルが必要です。

答えて

3

空のコードでダミーのJavaファイルを作成し、C++コードにandroid_main関数があることを確認してください。 ndk-buildを使用してビルドします。結果として得られるapkはあなたのライブラリをアプリケーションにします。

android-ndk-r5/samplesディレクトリのサンプルを参照してください。サンプルネイティブビットマップを参照してください。

+1

なぜライブラリをアプリケーションに変えたいのですか? – TheBuzzSaw

+0

ライブラリは圧縮され、apkファイルに含まれます。 –

+0

これは理解しやすくなります[http://kvurd.com/blog/compiling-a-cpp-library-for-android-with-android-studio/] – CoDe

1

共有ライブラリが受け入れられず、静的になりたいのはなぜですか(それはなぜ重要なのですか)。おそらく、これを行う最も簡単な方法は、追加できるソースコードを提供することですプロジェクト。

ndkビルドシステムには特別なものはありません。それは、正常なアンドロイドアーキテクチャの組み合わせに必要なファイルをビルドするために発行する正しいコマンドを知っていること以外は特別なことではありません。本当に別のことをしたいのであれば、アンドロイドビルドシステムの操作をログに記録して共有ライブラリを作成し、静的ライブラリを作成するための類似の手順を実行する独自のMakefileを作成することができます。しかし、新しいアンドロイド版では、根本的な前提やターゲットコレクションが変わるたびにMakefileを更新する必要があります。

+0

それはdoesn ' t *は静的である必要があります。私はそれが好きです。要するに、私は他のAndroidアプリケーション(特にC/C++ NDK部分)で使用するためのAPIを作成したいと思っています。 – TheBuzzSaw

関連する問題