Android NDKで開発していて、libxmlを使いたいことはよくありますよね。
Configureのオプションを設定したりすればいけますが、バージョン依存など気をつけることが多いので、androidのソースから持ってくるのがお手軽です。
repoで落としてくるのは重いので、以下からexternal/libxml2だけをgitで取得できます。
https://github.com/android/platform_external_libxml2
ただし、これだとBUILD_HOST_STATIC_LIBRARYを定義する必要があったり、ICUが必須になっていたりとめんどくさい部分もあります。
とにかくAndroidで使えるlibxml.aやlibxml.soが欲しい!というときのために、Android.mkだけ書き換えたバージョンを作ってみました。
それほど更新されるものでもないので、お手軽さ重視です。
https://github.com/babatakao/platform_external_libxml2
簡単なビルド手順
$ git clone git://github.com/babatakao/platform_external_libxml2.git $ cd platform_external_libxml2 $ ndk-build
これだけです。
できあがったobj/local/armeabi/libxml.aをコピーして、任意のプロジェクトで使えます。
(結局ヘッダファイルは必要になるのですが...)
.soが欲しいときは、jni/Android.mkの最後の「BUILD_STATIC_LIBRARY」を「BUILD_SHARED_LIBRARY」に書き換えてください。
オリジナルのplatform_external_libxml2からの変更点は以下です。
- 単体でビルドできるように、Android.mkのパス(jni以下へ)と内容を修正
- ICU依存がめんどくさいので、無効化(UTF-8のXMLを読み込む分には特に問題なく使えます)