MN #68 PDFium, Java

05:08. 機能は睡眠確保のためにスキップして目覚ましをとめた、はいいが昨晩戻し忘れた...

  • PDFium, shared_library は動いたので次はツリーの中で Java をビルドしてみるべし。
  • 手強い・・・ third_party 依存が多いがこれぜんぶコピーするの?的になってる・・・。
  • 時間切れ。


Stepping back, ほんとに Chromium ビルドシステムの中で Java をビルドすべきなのかなあ。

  • 調べたところ、どのみち AAR までは一撃ではたどり着けなそう。Cronet は zip と jar を生成したのち何らかのスクリプトで AAR を作っている模様。
  • GN は複数 CPUarch の同時ビルドに対応しておらず、これが JNI つき AAR ビルドの大きなブロッカーになっている。
  • 主要な動機は一撃でビルドしたいのと jni_generator を使いたいだが、これは android_library() に加えて更にたくさんの依存関係を pull する疑惑がある。そして既に依存の一部は DEPS で pull できずコピーを強いられている。厳しい。
    • Chromium の Java ビルドはビルドの成果物にやたら前処理や後処理をするので、Stub でごまかすのが難しい。

という点を踏まえるとフル GN は諦め、

  • SO のビルドまでは GN/Ninja でやり、Java は Gradle なり Bazel なりでビルドする。
    • GN で SO をビルド、しかるべき場所にコピーするスクリプトを書き、Gradle/Bazel からビルドの一部として呼び出す。
  • jni_generator は諦め、手で RegisterNative する。

という路線に切り替えるのが良さげ。明日やる。まずは JNI と NDK つきでコードをビルドしましょう。

今の仕事が辛くなったら Chrome for Android に逃げ込むのもアリかなとおもってたけど、これはこれで厳しそうだなあ。我に安住の地なし。