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を読み込む分には特に問題なく使えます)
Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

baba

ゆとりプログラマー。 高校時代から趣味でプログラミングを初め、そのままコードを書き続けて現在に至る。慶應義塾大学環境情報学部(SFC)卒業。BPS設立初期に在学中から参加している最古参メンバーの一人。得意分野はWeb全般、Ruby on Rails、Androidアプリケーションなど。最近はBlinkと格闘中。軽度の資格マニアで、情報処理技術者試験(高度10区分)などを保有。

babaの書いた記事

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ