LoginSignup
4
6

More than 5 years have passed since last update.

AOSPの一部をAndroid NDKだけでビルドする

Last updated at Posted at 2015-03-16

ノートマシンなどではAOSPを全部持ってくるとディスク容量が厳しいので、一部のツールやライブラリをAndroid NDKだけでビルドしたいなーと思っていました。今回少しだけ試行錯誤してみたので、その結果を記録しておきます。

external/netcat

$ git clone https://android.googlesource.com/platform/external/netcat
$ cd netcat
$ ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk APP_ABI=armeabi TARGET_PLATFORM=android-18

運が良ければ上のようにmake変数を指定すればビルドできるでしょう。

ビルドが成功すると、obj/local/armeabi/以下にバイナリとオブジェクトファイルができます。他のアーキテクチャ用のバイナリも同様に作成できます。

external/bzip2

少しの修正でビルドできるパターン。

$ git clone https://android.googlesource.com/platform/external/bzip2
$ cd bzip2
$ ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk APP_ABI=armeabi TARGET_PLATFORM=android-18
Android.mk:46: /Users/hnw/Development/android-ndk-r9/build/core/build-host-static-library.mk: No such file or directory
make: *** No rule to make target `/Users/hnw/Development/android-ndk-r9/build/core/build-host-static-library.mk'.  Stop.
$

AOSPではホスト用のバイナリも生成できますが、Android NDKではホスト環境むけのビルドはサポートしていないためにエラーが出ています(参照:cannot find 'build-host-static-library.mk' - Google グループ)。Android.mkを下記のようにコメントアウトすればターゲット用のライブラリだけをビルドできます。

# include $(BUILD_HOST_STATIC_LIBRARY)

external/strace

厄介なパターンもあります。straceを同様にビルドしようとすると失敗します。

Compile thumb  : strace <= access.c
Compile thumb  : strace <= affinity.c
Compile thumb  : strace <= aio.c
./aio.c: In function 'sys_io_submit':
./aio.c:193:3: warning: #warning "libaio.h is not available => no io_submit decoding" [-Wcpp]
Compile thumb  : strace <= bjm.c
./bjm.c:37:22: fatal error: sys/user.h: No such file or directory
compilation terminated.
make: *** [obj/local/armeabi/objs/strace/bjm.o] Error 1

sys/user.hはAndroid NDKには含まれていないためビルドを継続できません。一方でAOSPではbionic/libc/include/sys/user.hが存在するため、正しくビルドできます。

Android NDKを真面目に更新して欲しいと思うのは僕だけなんですかね…。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6