2020年3月14日土曜日

コマンドラインでAndroid NDK向けにライブラリをビルドする

Android NDK向けのライブラリのビルド手順を探すと,基本的にはAndroid Studioでプロジェクトを作って,ビルドする,という情報が多い.

しかし!

Windowsのコマンドラインだけでビルドしたいのである.

というわけで,Android Stuidoがやってくれている作業を何とか再現してみる.

今回ターゲットにしたのは,libogg.Xiph.Org Foundationによって公開されているパテントフリーのマルチメディアコンテナフォーマットを扱うライブラリらしい.ぶっちゃけ,自分が使っているわけではないのでよく知らない.

取り合えず,このライブラリはCMake対応済みなので,最初のとっかかりとして楽だった.

まず,Javaの実行環境を用意する.OpneJDKをダウンロードしておいて,そのbinを含むフォルダへのパスをJAVA_HOMEとして設定しておく.

次に,Android SDK(Android Studioのダウンロードページの下の方にCommand line tools onlyとしてダウンロードリンクがある)をダウンロードし,展開すると,toolsフォルダがあるので,そのtoolsフォルダへのパスをANDROID_SDK_ROOTとする.

ANDROID_SDK_ROOT/binへのパスを環境変数PATHに足しておく.

sdkmanagerが実行できるようになるので,次のように必要なものをインストールする.

> sdkmanager "ndk;21.0.6113669"

すると,ANDROID_SDK_ROOT/ndk/21.0.6113669というフォルダが出来ているので,このフォルダをANDROID_NDK_HOMEとする.

次に,CMakeをインストールする.公式にAndroidに対応したのが3.7以降なので,3.7以降をインストールしておく.できれば最新版が望ましい.インストールの際は,全体で利用できるようにシステム環境変数のPATHにパスを登録しておくと,そのあとのあちこちで問題にならないかもしれない.

また,Ninja(https://ninja-build.org/)をダウンロードしておいて,適当にPATHに登録しておく.

次に,liboggのソースコードをダウンロードし,展開しておく.このフォルダへのパスをOGG_ROOTとする.

さて,ビルド用のフォルダはOGG_ROOTの外に作った方が良い.CMakeが生成する様々なファイルとliboggのファイルの区別がつきやすいからだ.

build/libogg-androidとでもしておこう.このフォルダに移動したら,ようやくCMakeを実行する.

> CMake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_TOOLCHAIN_FILE=ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=21 -DANDROID_ABI=arm64-v8a -DANDROID_LD=lld OGG_ROOT
> ninja

これで,libogg.aが出来ているので,あとはコレをAndroid NDKを利用しているアプリのプロジェクトに組み込めば良い.

-DANDROID云々の部分については,https://developer.android.com/ndk/guides/cmake を参照する.

LDをlldにしているのは好みの問題なのでご自由に.

最適化されたバージョンが欲しければ,-DCMAKE_BUILD_TYPE=Releaseとすれば良い.

0 件のコメント:

コメントを投稿