質問: C ++ライブラリプロジェクトから共有ライブラリを参照するAndroidネイティブプロジェクト 私は2つのプロジェクトを持っています: 1 - Androidネイティブプロジェクト 2 - C/C ++プロジェクト 共有ライブラリファイル(.so)をC/C ++プロジェクトにビルドしています。これらの.soファイルをAndroidネイティブプロジェクトで使用したいと考えています。 これらのライブラリファイルをあるプロジェクトから別のプロジェクトにコピー&ペーストすることは望ましくありません。 まず第一に、C ++ライブラリプロジェクトへの参照などを使用して、ネイティブAndroidプロジェクトのこれらの.soファイルを使用することが可能ですか? .soファイルをC ++ライブラリプロジェクトからAndroidネイティブプロジェクトに自動的にコピーする方法を見つける方が簡単でしょうか?
回答: まず、ARMのためにあなたのライブラリを再コンパイルする必要があります。 ndkの "スタンドアロンツールチェイン"機能を使用することができます。 ndk dir(docs/STANDALONE-TOOLCHAIN.html)に詳細について説明しているドキュメントがあります。私はプロジェクトでlibexpatを使う必要があったので、スタンドアロンのツールチェーンを使ってexpatをコンパイルするためのbashファイルを作成しました: ``` NDK_PATH=/android-ndk-r7 NDK_GCC=${NDK_PATH}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc export CC="${NDK_GCC} --sysroot=${NDK_PATH}/platforms/android-8/arch-arm" export CFLAGS='-mthumb' export LDFLAGS='-Wl,--fix-cortex-a8' ./configure --host=arm-eabi make ``` それで、どこにでもコピーしてAndroid.mkから参照することができます: ``` LOCAL_LDLIBS := \ -Lvendor/expat/sdk/lib/android \ -lexpat ``` 私はexpatを構築し、それを静的にリンクしていたので、結果をコピーすることについて心配する必要はなかったことに注意してください