0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Kotlin】AndroidStudioとfirebaseAuthでKotlinコンパイラのバージョンが競合した件

Posted at

何が起きたのか

新しくアプリでも作るか〜と「build.gradle.kts」ファイルに依存関係とかを追記して、
ビルドしてエミュレータでHelloWorld確認しておくか。とRUNボタンをポッチっとしてみたら、あれ、、、

XXXX firebase-auth-api.kotlin_moduleModule was compiled with an
incompatible version of Kotlin.The binary version of its 
metadata is 2.1.0, expected version is 1.9.0.

なんかエラーになっちゃいました。
何が問題なんですかね?

調査の結果としては、「Android Studioで使用するKotlinコンパイラのバージョンと、Firebase Authenticationライブラリ(firebase-auth)で使用されているKotlinコンパイラのバージョンが競合している」ことが問題だったみたいです。

これをなんとか回避したので、備忘を兼ねて残しておきます

どう対処することにしたのか

前提として、こんな感じで「build.gradle.kts」ファイルを書いてました

  • プロジェクト直下
    plugins {
        id("com.android.application") version "8.2.1" apply false
        id("org.jetbrains.kotlin.android") version "1.9.0" apply false
        id("com.google.dagger.hilt.android") version "2.51.1" apply false
        // Add the dependency for the Google services Gradle plugin
        id("com.google.gms.google-services") version "4.4.2" apply false
        //composeに関する依存関係を2.1.0に合わせる
    
    }
    

  • app直下

    
    dependencies {
    //firebaseの依存関係
    implementation(platform("com.google.firebase:firebase-bom:33.10.0"))
    implementation("com.google.firebase:firebase-auth")
    implementation("com.google.firebase:firebase-firestore")
    
    
    

ここで、firebase-bomを使っているので、bomがいい感じにAuthとかfirestoreとかのバージョンを解決してくれたりしていますが、そのいい感じになっているAuthのバージョンの中でKoltinコンパイラ2.1.0が使われているっぽいんですよね〜

今回は、1.9.0側に合わせようという判断をなんとなくしたので、このbom33.10.0をいい感じにダウングレードして、その中のAuthがいい感じにダウングレードしてくれれば、1.9.0のコンパイラを使ってくれるんじゃね?と思ったので、そんな対処を模索することにしました。

※コンパイラのバージョンが揃わないのが何が問題なんだ。というのは私もいまいちわかっていなかったので、そちらは最後に調べた結果をまとめておきました〜

どうやってダウングレードしたのか

javaコードやjavaの親戚みたいなkotlinのライブラリはMarvenCentralってとこで管理されているっぽいので、そこにアクセスして
Marven Central

FirebaseAuthと検索バーで調べて、23.2.0が出てきたので、「Dependencies」ってところを見たら、kotlin-stdlibの依存関係のところにVersion2.1.0と書かれていました。(正しくエラーで出てたバージョンの情報ですね)

スクリーンショット 2025-03-12 21.40.22.png

なので、FirebaseAuthの以前のバージョンの「Dependencies」を見てみて、以下のfirebaseの公式サイトでBomとFirebaseのバージョン情報をみて見たら、

FirebaseBomとAuth等のバージョン情報を確認する

  • implementation(platform("com.google.firebase:firebase-bom:33.10.0"))
  • implementation(platform("com.google.firebase:firebase-bom:32.2.0"))

に変えたらうまく動きました。(よかった〜〜)

参考:コンパイラのバージョン違いは何が問題?

(1.9.0でも2.1.0でもどっちでもいいじゃん)

そう思っていましたが、何が問題なんでしょうか。調べてみました。
一例として挙げられる問題は、メモリの格納方法が変わっている可能性があるとのことでした。

何を言っているか全くわからなかったので、図示してみます。

何が言いたいかというと、

  • 2.1.0ではメモリ効率を考えて、field1:Intをメモリの2つ目のセグメントに割り当てる。field2:Stringを1つ目のセグメントに割り当てる。と言うロジックになっていたとする
  • 1.9.0ではfield1:Intが2つ目のセグメントに。と言った感じで、メモリへの割り当てルールが異なるため、本来取得したい値ではないものを取得する可能性があるということらしい。

1.9.0.jpg

以上です〜

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?