Crash in plugin: variant.generateBuildConfigProvider.get() returns null with buildFeatures.buildConfig = false on AGP 8.0+
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 45/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- android, groovy
- 領域
- build-system
調査の方向性
プラグインコードで、variant.generateBuildConfigProvider に関係する saveSDKVersionTask の代入を検索し、buildFeatures.buildConfig がどのように処理されているかを確認します。報告されている AGP と Gradle のバージョンを使用して buildConfig を無効にした状態を再現し、その後、null によるクラッシュなしにビルドが完了し、SDK バージョンの永続化が引き続き正しく行われることを確認します。
索引モデルが issue の本文から書いたものです。
説明
Describe the bug
The Gradle plugin throws a NullPointerException when trying to access variant.generateBuildConfigProvider.get().versionCode.getOrNull() in modules where buildConfig is disabled.
Stacktrace
Cannot invoke method get() on null object
> saveSDKVersionTask.sdkVersionCode = variant.generateBuildConfigProvider.get().versionCode.getOrNull()
Root cause
Starting with AGP 8.0, variant.generateBuildConfigProvider may be null if buildFeatures.buildConfig = false is explicitly set in the module’s build.gradle. This causes the .get() call to crash.
How to reproduce
- Set
buildFeatures.buildConfig = falsein a module'sbuild.gradle(.kts) - Run the build
- Observe the crash when the plugin accesses
generateBuildConfigProvider
Expected behavior
The plugin should check whether generateBuildConfigProvider is null before accessing it, or avoid relying on this API if it's deprecated.
Environment
- AGP version: 8.7.1
- Gradle: 8.8
- Android Studio: 2024.2.1 (Ladybug)
- Plugin version: last
Suggested fix
Replace:
saveSDKVersionTask.sdkVersionCode = variant.generateBuildConfigProvider.get().versionCode.getOrNull()
With a safe fallback:
variant.generateBuildConfigProvider?.get()?.versionCode?.getOrNull()?.let {
saveSDKVersionTask.sdkVersionCode = it
}
Or extract the versionCode from defaultConfig if possible.
- 主要言語
- Groovy
- スター
- 1
- フォーク
- 5
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
mapbox/android-sdk-versions-plugin のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 25/100
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 42/100
mapbox/android-sdk-versions-plugin の issue をすべて見る
似ている issue
-
0.kind: build failure
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
category:port-update
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
メンテナーはふだん 2 日以内に返信
-
dev/release: verify-release-candidate.sh runs 0 Java tests with Debian's Maven対応中かも @kou が今日担当しました。 オープンType: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/arrow-adbc#4947 ·
メンテナーはふだん 1 日以内に返信
-
MinGW build faillureオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
facebookresearch/faiss#5775 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
Appimage Conventionsオープンenhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信