【Android】ndk-buildの実行時に情報を出力する

By | 2016年3月30日

NDKのソースをndk-buildコマンドでビルドをするとき、Android.mkに書いた内容が間違っていてビルドが上手くいかないことがある。
こうしたときはエラーメッセージを調べつつ原因を探していくことになるのだが、ビルドがどこまで進んだか、とかビルド中に使われた変数の値がどうなっているか、などが分かれば間違った原因を探るための手掛かりになる。
そうした用途に便利なのが$(error), $(warning), $(info)である。これらは元々Makefileの関数だが、Android.mkでもそのまま使える。実際には以下のようにして使う。

$(error エラー時のメッセージ)
$(warning ワーニング時のメッセージ)
$(info メッセージ)

早速試してみよう。
まずは適当なフォルダを作り、以下のような構成にする。

{project_folder}
└── jni
    └── Android.mk

jniフォルダはNDKのデフォルトのソースフォルダで、本来はこの下にc/c++で書いたソースコードを置いていく。
このフォルダが無いと、ndk-buildを実行したときに「 Could not find application project directory !」というエラーとなってしまうので、とりあえず今は空のフォルダを作っておく。

Android.mkには以下の内容を記述する。

HOGE := this is hoge!

$(info This is info mesage! HOGE:$(HOGE))
$(warning This is warning mesage!)
$(error This is error mesage!)

上記では$(info)の例として、変数HOGEにセットされた値を表示している。
ファイルを保存したら、プロジェクトのルートフォルダでndk-buildコマンドを実行する。
結果は以下のようになる。

$ pwd
{project_folder}
$ ndk-build
This is info mesage! HOGE:this is hoge!
jni/Android.mk:4: This is warning mesage!
jni/Android.mk:5: *** This is error mesage!.  中止.

この実行結果から以下のことが分かる。
・infoは単にメッセージを出力する。
・warningはメッセージに加え、ファイル名と行数を表示する。
・errorはメッセージに加え、ファイル名と行数を表示するとともに、その個所で停止する。

これらの関数を効果的に使うことで、不具合が起きている個所を特定するのが容易になるだろう。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です