バージョン3.1(Honeycomb)で導入されたAndroidRTPAPIを以前のバージョンにバックポートしたいと思います。バージョン4.0のソースをダウンロードしたところ、これらのAPIにはJavaコードとネイティブコードの両方が含まれていることがわかりました。NDKを使用してネイティブコードをビルドするには、特定の共有ライブラリが必要です。
Android.mkファイルによると、これらは、、、、libnativehelper
およびです。これらすべてのソースはソースコードに含まれていますが、それらを構築することは困難でした。それぞれが他の多くの共有ライブラリを必要としました。たとえば、次の共有ライブラリ が必要です:、、、、、、、、、、、、、。_libcutils
libutils
libmedia
libmedia
libui
libcutils
libutils
libbinder
libsonivox
libicuuc
libexpat
libcamera_client
libstagefright_foundation
libgui
libdl
だから私の質問は、元の4つの共有ライブラリを取得する方法はありますか?ソース全体を構築する必要がありますか?
3 に答える
、、などlibutils
の標準のAndroid共有ライブラリを使用するネイティブコードを作成する必要があるとします。次の手順を実行します。libcutlis
libmedia
AOSP
ターゲットバージョンでリポジトリをインストールします。- ソースコードを。の下の適切なディレクトリに追加します
./frameworks/base
。
あなたの場合、別のフォルダを作成してAndroid.mk
、もちろん適切に配置する方が簡単かもしれません。 - これらの標準共有ライブラリの必要な関数が以前のバージョンに存在しない場合、コンパイルエラーが発生する可能性があります。
- コードの一部としてコードをビルドする
AOSP
と、必要なライブラリがビルドされ、それらが自動的にリンクされます。
PSこれを実現するには、Linuxベースのビルドホストを使用することをお勧めします。
cygwinターミナルを使用して、ネイティブ部分、つまりjniフォルダーをビルドします。cygwinを使用してビルドするには、cygdriveコマンドを使用してjniフォルダーに移動します。次に、ndk-buildと入力します。正常に完了すると、共有ライブラリ、つまり.soファイルがlibsフォルダーに作成されます。
私はあなたの問題を理解することができます、あなたはデバイスまたはエミュレーターの/ system/libからライブラリーを引き出すことができます。ただし、システム権限が必要です。しかし、あなたはアプリケーションをインストールすることによってそれを行うことができます。それ以外の場合は、Linuxプラットフォームでソースコードをビルドします。2つまたは3つのコマンドを使用するだけで、ビルドプロセスは非常に簡単です。初めて構築するには長い時間が必要です。その後、ビルドに非常に短い時間が必要になり、変更されたコードのタイムスタンプに従ってのみビルドされます。 こちらをご覧ください