見出し画像

Execution failed for task ':app:dataBindingGenBaseClassesDebug'. couldn't make a guess for …|Android Kotlin 実践勉強会

Kotlin Android Extensions」の廃止が公式にアナウンスされ、お仕事で、それを「View Binding(ビュー バインディング)」へ置き換える依頼が多いです。

サポートの終了期間は、2020 年 11 月 23 日(日本時間 11 月 24 日)にリリースされた Kotlin 1.4.20 から始まります。

このことを知らずに、今年になっても「Kotlin Android Extensions」で新規に開発を始めてしまう企業が少なくないのです。

android-kotlin-extensions は少なくとも 1 年間は残されますが、2021 年 9 月またはそれ以降の Kotlin リリースでは削除されます。

上記の通り、今年の 9 月には削除されてしまうかもしれませんので、かなり工数の無駄になってしまっています。「View Binding(ビュー バインディング)」への置き換えは作業量がとても多く、正直、大変に面倒です。特に頭を使わない、機械的な置き換え作業なので、ストレスも溜まります。


さて、表題についてですが、先日、お仕事で、「Date Binding(データ バインディング)」への置き換え実装が完了し、さあ、ビルドだと、確認した際に、唯一、以下のエラーが発生しました。

Execution failed for task ':app:dataBindingGenBaseClassesDebug'.
> couldn't make a guess for …

どうも、「独自開発した GridView の派生クラス」が、「Date Binding(データ バインディング)」に対応した形式になっていない、という警告なのです。


Date Binding(データ バインディング)」化は、単純な機械的置換仕事のはずなので、だいぶ迷ったのですが、なんと、原因は、このアプリのパッケージが、「大文字を含むものだった」のです!

Android のパッケージは、全て小文字でなければなりません。

iOS アプリを先に開発することはよくあるのですが、iOS で大文字を使っていたので、そのまま Android のパッケージにも大文字を使ってしまった、というケースが多々あるのです。まさに、これが原因でした。

Date Binding(データ バインディング)」化を依頼するまで、気がつかなかったようです。

・クラスは大文字から始める
・パッケージには大文字を含まない

というような、正しいルールに則った実装へ修正して、このエラーは解決!

単純機械的置換仕事は、とても疲れました。。。


さすがにコーヒーブレイク。最近、ドラマになっていた「コタローは1人暮らし」という漫画がお気に入りです。

泣ける!

この表紙と有り得ない設定から、ギャグ漫画かと思っていたのです。不意打ちで、ポロポロ泣いてしまいました。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?