◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-05-27中級

Claude Code で Glide 5.0.5 の Java 8 API クラッシュを1行で消した話

Beautiful HD Wallpapers v2.0.0 で Android 6.0.1 ユーザーが全員 3 秒以内にクラッシュ。Claude Code との対話で coreLibraryDesugaringEnabled の 1 行だけが足りていなかったことに辿り着いた実体験です。

android9glidedesugarclaude-code132debugging5

✦ プレミアム記事

Beautiful HD Wallpapers v2.0.0 をリリースした 7 日後、Firebase Crashlytics で「早期クラッシュ」タグの付いた赤い Issue が立ち上がりました。NoClassDefFoundError: java.util.function.Supplier。発生端末を絞り込んでみたところ、Android 6.0.1(API 23)のユーザーが起動して 3 秒以内に全員落ちている、という現象でした。7 日で 12 events / 4 users、しかも 4 人とも別ユーザーです。

minSdk 23 を支えているデバイスは、累計 5,000 万 DL を超えた個人開発キャリアの中で、もう何年も「最後の数 % のためだけにメンテし続ける層」になっていました。それでも、起動 3 秒で落ちるのは見過ごせません。クラッシュログから Claude Code に状況を渡して、build.gradle.kts の 1 行で根治するまでの経緯を、同じ落とし穴を踏みかけている方のために残しておきます。

クラッシュの正体 — Java 8 Supplier が API 23 では見つからない

スタックトレースを最初に見たとき、私が拾ったのは次の 3 行でした。

Fatal Exception: java.lang.NoClassDefFoundError:
  Failed resolution of: Ljava/util/function/Supplier;
  at com.bumptech.glide.GlideBuilder.<init>(GlideBuilder.java:64)

java.util.function.Supplier は Java 8 で追加された関数型インターフェースです。Android では API 24(Nougat)以降のランタイムにしか入っていません。API 23 は Marshmallow 後半なので、ここから漏れます。

公式ドキュメント上、Glide 5.x の minSdk は 21 となっていますが、内部実装に Java 8 API が混ざるようになったのは Glide 5.0.0 以降です。AGP(Android Gradle Plugin)9.x にバージョンアップしたタイミングで、Glide が内部で Supplier を直接参照する経路が増えていました。

ここで効くのが Core Library Desugaring です。R8 が、Java 8 以降の API を低 API レベルの端末でも動かせるように「降ろし直し(desugar)」してくれる仕組みです。私のプロジェクトでは、依存自体は宣言済みだったのに、有効化フラグだけが立っていませんでした。

なぜ依存追加だけでは足りないのか — desugar の二段構造

build.gradle.kts の dependencies ブロックに coreLibraryDesugaring で desugar_jdk_libs を追加していても、R8 はそれを参照しません。compileOptions 側に明示的なフラグが必要です。これは「依存があるか」と「実際に使うか」を別管理にしている AGP の設計です。

私の場合は v2.0.0 までは Glide 4.x のままで、Java 8 API への依存が静的に表に出ていなかったため、フラグなしでも通っていました。v2.0.0 で AGP 9.x + Glide 5.0.5 に上げた瞬間に表面化した、というのが Claude Code との対話で見えてきた背景です。

12 年間個人で Android / iOS を書いてきて学んだのは、依存ツリーの「使われ方が変わる」場面は常にライブラリのメジャーアップ時にやってくる、ということです。Glide 4 → 5 のように API 表面が大きく変わらないアップデートでも、内部の Java バージョン依存は静かに動きます。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦Glide 5.0.5 + AGP 9.x で Android 6.0.1 ユーザー全員(7日で 12 events / 4 users)が起動 3 秒以内に落ちていた状況を、coreLibraryDesugaringEnabled の 1 行で解消できる手順を再現できます
✦desugar_jdk_libs の依存追加だけでは不十分で、なぜ compileOptions のフラグも必要なのかをツールチェイン視点で読み解けるようになります
✦Crashlytics の Issue を Claude Code に渡してから patch を当て、Crash-free users 99.7% を回復するまでの 4 ステップを自分のプロジェクトに移植できます
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⟐ Claude Code2026-06-12
Android の戻るボタン広告ゲートを入れ子から並列独立構造へ — Claude Code と進めた終了フロー再設計の記録
戻るボタンの広告が「出ない」と「出すぎる」を同時に起こした原因は、入れ子分岐に埋め込まれた暗黙の優先度でした。壁紙アプリ v2.1.0 で広告ゲートを並列独立構造へ作り直した過程を、Kotlin実装・Claude Codeへの依頼内容・テストまで含めて記録します。
⟐ Claude Code2026-05-27
壁紙アプリ 2 本の Crashlytics を Claude Code で 11 日間掘り続けた実装ログ
壁紙アプリ 2 本(綺麗な壁紙 v2.0.0 / 浮世絵壁紙 v1.7.0)でリリース後に Crashlytics と Play Console から噴き出した 30 件超のバグを、Claude Code で 11 日間掘り続けて v2.1.1 / v1.8.1 まで仕上げた工程を、スタックトレース → 原因仮説 → 修正コミットの順で公開します。
⟐ Claude Code2026-04-24
Claude Code Hooks の本番デバッグ術 — ログが足りない時、どこから切り分けるか
ローカルでは動くのに本番で沈黙するClaude Code Hooksの切り分け方を体系化しました。まず疑うべきは出力先という視点、ログ不足を補う3層の可観測性、最小再現環境を60秒で作るテクニック、JSON入出力とexit codeのプロトコル把握、マルチユーザー環境の権限診断まで扱います。