Tech Racho エンジニアの「?」を「!」に。
  • 開発

Android用にlibxml2をビルドする

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を読み込む分には特に問題なく使えます)

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。