"Android ネイティブライブラリビ ルド Tips" on "Trick or Treat" (TechBooster新刊)

10/8の技術書典5が近づいてきて、例によって台風が押し寄せてきて、スタッフ業がてんやわんやしていますが、進捗どうでしょうか? 最悪でも致命傷で何とかすませたいところですネ。

さて先日のエントリではわれわれのサークルの新刊のお知らせを出しましたが、今日はTechBoosterの新刊 Trick or Treat に記事を出したのでお知らせです。

techbookfest.org

今回はAndroidネイティブライブラリビルドTipsというタイトルで、特にAndroid向けに書かれているわけでもないLinux用ネイティブライブラリを、Android NDKを使って、ちゃんとAndroid Studioからデバッグできるようにビルドする方法をまとめました。内容はほぼそれだけですが、全部で12ページくらいあります。

NDKでndk-build以外のやり方で書かれたライブラリをビルドするには、NDKのツールチェインをクロスコンパイラの流儀に沿って使わなければならないのですが、Android NDKで公式にサポートしているcmakeに基づくビルドであっても手こずったりしますし、autotoolsなどが使われているとさらに面倒です。部分的にクロスコンパイルできていなくてハマったり、x86ビルドがなぜかAndroidに無いglibc依存になっていたり、あるいは共有ライブラリで依存関係があったりとかすると沼です(Linux環境では共有ライブラリは大概Androidでサポートされないシンボリックリンクになりますし)。

さらに、ビルドだけ何とか出来ても、デバッグシンボルをちゃんと埋め込むようにビルドする、さらにはビルド中に依存ライブラリがある場合はそれらもデバッグシンボルを埋め込んでビルドする…といったふうに、さまざまなポイントでデバッグシンボルが抜け落ちることがあります。

というわけで、さまざまな落とし穴に言及しつつ、Android Studioデバッグできるような*.soをビルドできるように、12ページでまとめています。あとついでにJavaやXamarin、Kotlin/Nativeなどから呼び出す時に困りそうなAPI設計のパターンについてもちょろっと言及しました。

本当はこの辺をメインに書いてうちの新刊のネタにするつもりだったわけですが、Xamarinっぽくなかったのでボツとして、ちょうどAndroidネタを募集していたTechBoosterの方で再利用したというわけです。

そんなわけで、Android NDKネタですが、割と珍しい切り口になっているのではないかと思います。興味がわいてきたという皆さんはぜひ10/8の技術書典5に買いに来てください。TechBoosterは「あ11」です