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 に逃げ込むのもアリかなとおもってたけど、これはこれで厳しそうだなあ。我に安住の地なし。