ログイン新規登録

Qiitaにログインして、便利な機能を使ってみませんか?

あなたにマッチした記事をお届けします

便利な情報をあとから読み返せます

3
0

この記事は最終更新日から3年以上が経過しています。

UnityでAndroidのプラグインのクラスが見つからなくて(ClassNotFoundException)何故か使えないときに怪しむべきProGuard、Minify

投稿日

Androidのプラグイン何故か使えない

俺は完璧に設定しているのにビルドして実行するとClassNotFoundExceptionでAndroidプラグインが使えないことがあって時間を費やしたのですが、いろいろ調べた結果ProGuardのMinifyという処理が原因でした。ClassNotFoundExceptionの原因調べててProGuardまでたどり着かなくね?という懸念があったので共有します。
自分がたどり着いたのはこれにProGuradの記述があったからです。。。

リリースビルドはMinifyが有効になっている

デフォルトの状態でリリースビルドするとProGuardによるMinify処理が行われるようになっているみたいです。
チェックが入っていてMinifyを切るとプラグインの機能が使えるようになりました。
スクリーンショット 2020-10-28 16.45.17.png

ProGuardって何?

ProGuardはアプリのアプリの圧縮、難読化、最適化の機能みたいですね。
アプリの圧縮、難読化、最適化
この処理によってプラグインで使っている機能まで取り去られるみたいなことが起きているみたいです。

ProGuardの設定

ProGuardの設定ファイルを作成することで勝手に処理されない部分を指定できるようになっているようです。Minifyを切ってしまうとこの機能の恩恵が受けられなくなるのでこの方法で対処するのがベターなのではないでしょうか。

スクリーンショット 2020-10-28 16.46.14.png

この Custom Proguard File というチェックをつけるとproguard-user.txtが作成されるのでそれを編集することで設定できます。

proguard-user.txt
-keep class android.support.v4.content.** {
    *;
}

例えばandroid.support.v4.contentでClassNotFoundExceptionが出ていた場合はこんなふうに指定する感じです。この状態でビルドするとMinify対象外になる感じですかね。別の書き方もあるようですので、リンクを参考してください。

まとめ

  • 何故かClassNotFoundExceptionが出たときはMinifyを疑ってみよう。
  • ProGuardの設定で対処しよう。
  • これわかりづらいから何とかならんのか。。。

参考

Unity に Admob 実装した時、Proguard や Minify を無効にせずに Releaseビルドする方法
Unity Android ビルドの Minify オプションの罠

3
0
0

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
  3. ダークテーマを利用できます
ログインすると使える機能について

コメント

この記事にコメントはありません。

いいね以上の気持ちはコメントで

3
0

ログインして続ける

ソーシャルアカウントでログイン・新規登録

メールアドレスでログイン・新規登録