ビルドエラー: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のアプリではなぜエラーが起きなかったのかは今も謎です。
【問題発生の経緯】
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のアプリではなぜエラーが起きなかったのかは今も謎です。
コメント
コメントを投稿