LoginSignup
0
1

Android Gradle Plugin 8.0に更新したらR8で「ERROR: Missing classes detected while running R8.」が起きた時に…

Last updated at Posted at 2023-06-01

Android Gradle Plugin 8.0(AGP 8.0)への更新は色々とハマりどころが多い印象です。
そんな中、リリースビルドでR8を有効にした場合にエラーが発生し、解決する方法を調べたのでメモがてら投稿します。

エラー内容

下記のようなエラーが発生し、リリースビルドが失敗してしまいました。

ERROR: Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /Users/xxx/yyy/app/build/outputs/mapping/release/missing_rules.txt.
ERROR: R8: Missing class com.facebook.infer.annotation.Nullsafe$Mode (referenced from: com.facebook.ads.NativeAdBase)
...

原因

これ自体は難読化のルールが不足しているためのものでしたが、AGP 7.0では 警告 だけだったのが、AGP 8.0では エラー に変わったからのようでした。

AGP 7.0のリリースノートにちゃんと記載がありました。

AGP 7.0 では、クラス欠落メッセージは警告として表示されます。エラーとして表示されるようにするには、gradle.properties で android.r8.failOnMissingClasses = true を設定します。この警告は、AGP 8.0 ではビルドを破壊するエラーになる予定です。-ignorewarnings オプションを proguard-rules.pro ファイルに追加することで AGP 7.0 の動作を維持することは可能ですが、おすすめはしません。

解消方法

リリースノートに記載があるように proguard-rules.pro-ignorewarnings を追加するだけでOKです。(ただこれだと、エラーを握り潰しているだけにすぎないので、ちゃんとルールを追加するのがベストでしょう…)

まとめ

リリースノートはちゃんと見よう。:white_check_mark:

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1