Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /app/build/outputs/mapping/debug/missing_rules.txt

Android Gradle プラグインを 8.1.1 にアップデートしたら以下のエラーでビルドできない。

Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /app/build/outputs/mapping/debug/missing_rules.txt.

Missing class com.google.protobuf.java_com_google_android_gmscore_sdk_target_granule__proguard_group_gtm_N1281923064GeneratedExtensionRegistryLite$Loader (referenced from: java.util.List kotlinx.coroutines.internal.FastServiceLoader.load(java.lang.Class, java.lang.ClassLoader))

Caused by: [CIRCULAR REFERENCE: com.android.tools.r8.utils.b: Missing class com.google.protobuf.java_com_google_android_gmscore_sdk_target_granule__proguard_group_gtm_N1281923064GeneratedExtensionRegistryLite$Loader (referenced from: java.util.List kotlinx.coroutines.internal.FastServiceLoader.load(java.lang.Class, java.lang.ClassLoader))]

メッセージにある missing_rules.txt ファイルを確認します。

一度、直上の debug ディレクトリで Reload from Disk すると現れます。

Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /app/build/outputs/mapping/debug/missing_rules.txt.

Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /app/build/outputs/mapping/debug/missing_rules.txt.


# Please add these rules to your existing keep rules in order to suppress warnings.
# This is generated automatically by the Android Gradle plugin.
-dontwarn com.google.protobuf.java_com_google_android_gmscore_sdk_target_granule__proguard_group_gtm_N1281923064GeneratedExtensionRegistryLite$Loader

# Please add these rules to your existing keep rules in order to suppress warnings.

# 警告を抑制するには、これらのルールを既存のキープ ルールに追加してください。

ということなので、そのまま proguard-rules.pro に追加するとビルドできるようになりました!

こんな機能あったのか、と思い調べてみると、AGP 7.0.0 で追加されていたのですね。

AGP は欠落している可能性のあるルールをすべて含むファイルを生成し、app/build/outputs/mapping/release/missing_rules.txt のようなファイルパスに書き込みます。警告を無視するには、proguard-rules.pro ファイルにルールを追加します。

👉 Android Gradle プラグインのリリースノート  |  Android デベロッパー  |  Android Developers hatena-bookmark

ということで R8 による難読化で発生するエラーの特定も簡単になっています。

ますます便利になっていきます Android Studio。

👉 support obfuscating protobuf message fields [144631039] - Visible to Public - Issue Tracker hatena-bookmark



Unresolved reference: BuildConfig

Android Gradle Plugin (AGP) 8.0 以降、BuildConfig ファイルの生成はデフォルトで無効になっており、必要なモジュールに対してのみ手動で有効にする必要があります。

モジュール別であれば、


// build.gradle.kts

android {
  buildFeatures {
    buildConfig = true
  }
}

すべてのモジュールに適用する場合は以下。


# gradle.properties

android.defaults.buildfeatures.buildconfig=true

Unresolved reference: BuildConfig



【Mac】絵文字 や GitHubショートコード は「GitHub Emoji Picker」で入力する 😀

 

😀 Mac内蔵 絵文字ビューア

普通に絵文字を入力する場合は以下でいけます。


- Control+Command+スペースバー を押します。

👉 Macで絵文字と記号を使用する - Apple サポート (日本) hatena-bookmark

 

【Mac】GitHub 絵文字ショートコードは「GitHub Emoji Picker」で 😀

絵文字ビューアが開いたら好きな絵文字をダブルクリックすると入力できますね。
【Mac】GitHub 絵文字ショートコードは「GitHub Emoji Picker」で 😀

しかし、この方法で入力しているのはショートコードではありません。生絵文字です。

 

😀 GitHub ショートコード

Unicode 絵文字のうち、頻繁に使うであろう絵文字を厳選したものの中から、「GitHub ショートコード」をクリックでクリップボードにコピーできます。

GitHub Emoji Picker
👉 GitHub Emoji picker hatena-bookmark

WEBサイトですので Chrome や Safari などブラウザアクセスできます。

ショートコードでなく、生の絵文字をコピーしたい場合は、「Shift を押しながらクリック」します。

Unicode 絵文字のうち、頻繁に使うであろう絵文字を厳選したものの中から、「GitHub ショートコード」をクリップボードにコピーできます。

ということで、このサイトでは、ショートコード と 生絵文字 の両方を入力できます。

ただし、先程も言ったように、すべての絵文字ではなく「厳選された絵文字」のみです。

 

😀 Dock に入れておく

便利なよく使うツール系WEBサイトは、アプリのように Dock に入れておくと便利です。

【Mac】GitHub 絵文字ショートコードは「GitHub Emoji Picker」で 😀

「GitHub Emoji picker」をブラウザで開いた状態から、
ブラウザのURLバー内の「open this link, choose an app」→ 「Open」して、

【Mac】絵文字 や GitHubショートコード は「GitHub Emoji Picker」で入力する 😀

Dock 内に表示されたら、「Keep in Dock」で Dock 内に保存する。

【Mac】絵文字 や GitHubショートコード は「GitHub Emoji Picker」で入力する 😀

これで、Dock からアプリのようにサイトを表示して使用できます。

表示サイズは、ブラウザと同様の操作で変更しておけば記憶され、起動時にそのサイズで起動表示されるようになります。

 

😀 まとめ

ショートコードは、サービスやアプリケーションで異なるのが面倒っちゃあ面倒です。

生絵文字を貼っても、実質、サービス側で変換されるようなので、Mac内蔵の絵文字ビューアでもいいような気もしますが、「厳選された絵文字」なので不必要に絵文字選択を悩むことがない、のがいいように思えたりもします。

👉 【Kotlin】絵文字を含む Unicode 文字列の文字数をカウントする方法と文字ごとの構成要素 hatena-bookmark
👉 絵文字が意図しない白黒で表示される ➡️ - Unicode Variation Selector hatena-bookmark