ビルドエラー:Attempt to create a global synthetic for 'Record desugaring' without a global-synthetics consumer の解決

このエラーで苦労している人は他にはいないでしょうか。他の原因もあるかもしれないけど、私の場合はこれで解決できたので報告します。
 
【問題発生の経緯】
Aというアプリを複製してBというアプリを作った(複製の方法は、以前このブログで書いた次の方法)。
https://marsh-mashro.blogspot.com/2023/08/androidstudio.html

ところが、次のエラーが出てビルドができない。
Attempt to create a global synthetic for 'Record desugaring' without a global-synthetics consumer

直し方はおろか、エラーの意味すらわからず途方に暮れた。そもそも、複製前のアプリと複製後のアプリはアプリ名を除いて全く同じなのに、なぜこんなことが起きるのか・・・。

検索すると次のようなページが出てくるが、読んでもよくわからない。ただ、どうやらJavaのバージョンに関係ありそうだということがわかった。
https://www.mongodb.com/community/forums/t/how-to-properly-connect-my-kotlin-android-app-with-mongodb-atlas-cluster/196264
https://stackoverflow.com/questions/75043114/android-build-produces-error-attempt-to-create-a-global-synthetic-for-record-d

そこで、build.gradleの中のJavaのバージョンを表していそうなところだとか、Project Structureだとか、今まで触ったこともないようなところを闇雲に変更したり古いバージョンを使ってみたりしたが、もちろんエラーはなくならない。

【何とか解決】
結構絶望的な気分になっていたのだが、Bのもとになった空っぽのアプリはビルドができることに気づいた。ということはGradleの問題ではない。そこで、部分的にAアプリのコピーをしてBアプリにペーストし、そのたびにビルドを試す、ということをやって、
とうとう突き止めました!! 原因は、私が「Record」という名前のクラスを作っていたこと。
この名前が、何か別の、多分デフォルトで用意されているクラスだとGradle(?)が勘違いして、そのクラスは多分Javaのバージョンが合わないかなにかで、ビルドエラーが起きたのだろうというのが私の推測。いずれにしてもRecordというクラス名を変更して、SleepRecordとしたらエラーは起きなくなりました。

それにしても、これに半日もかかってしまった・・・。それと、コピー前のAのアプリではなぜエラーが起きなかったのかは今も謎です。

コメント

このブログの人気の投稿

目覚まし時計アプリを公開します

超初心者の機械学習入門

画面回転で苦労した話(原因はわかった)