CatHand Blog

アプリ開発やMac弄り

Androidアプリでリリースビルドだけクラッシュする問題

MyScriptという手書き文字認識のライブラリがあります。

developer.myscript.com

 Androidのライブラリを使っていたのですが、リリースビルドだけクラッシュする問題に悩まされていました。

  • MyScriptのサンプルアプリはクラッシュしない
  • デバッグビルドだとクラッシュしない
  • debuggable=false にするとクラッシュしない
  • エミュレータだとリリースビルドでもクラッシュしない
  • 実機だとリリースビルドでクラッシュ
  • ログをみたかんじ、ndk関係で落ちているっぽい

MyScriptのサンプルアプリと設定を見比べていってクラッシュする、しないを試行錯誤した結果、gladle pluginのバージョンを `3.3.1` から `3.6.1` にするとクラッシュするようになることがわかりました。

さらに、リリースノートを確認して怪しい変更がないか調べていきます。

developer.android.com

で、怪しいところを発見。

Native libraries packaged uncompressed by default

When you build your app, the plugin now sets extractNativeLibs to "false" by default. That is, your native libraries are page aligned and packaged uncompressed.

manifest で extractNativeLibs を false にしたところ、gradle plugin 3.6.1 でリリースビルドしてもクラッシュしなくなりました。