1
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?

Hilt導入時のエラーが解決できない問題を解決

Posted at

※使用環境

Android Studio LadyBug
Kotlinのバージョン 1.9.0

エラーの内容

Android開発にて、この記事を読みながらHiltの導入を進めていたところ、AndroidManifest.xmlにアプリケーションクラスを指定して、GradleをSyncしたところで以下のようなエラーが発生しました。

java.lang.RuntimeException: Unable to instantiate application com.websarva.wings.dostudy_android.App package com.websarva.wings.dostudy_android: java.lang.ClassNotFoundException: Didn't find class "com.websarva.wings.dostudy_android.App" on path:...

要はAppクラスが見つからないよ、というエラーです。
以下のようにちゃんとAppクラスを書いて、Manifestでクラスを指定したにも関わらず、です。

App.kt
@HiltAndroidApp
class App: Application()
AndroidManifest.xml
<application
        android:name=".App"

AIに言われるがままにClean Projectやproguard-rules.proファイルにAppクラスを保持するルールを追加したりするも改善せず。
何よりも明らかにAppクラスを作成して指定できているのに、Appクラスが見つからないと言われていることに絶望感を覚えていました。
そこで、私は本当に気が進まなかったのですが、hiltAndroid等のバージョンを確認してみることにしました。最近のAndroidStudioの仕様として、以下のようにバージョンを明記しなくてもライブラリを導入できるようになりました。

build.gradle.kts
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    id("com.google.devtools.ksp")
    id("dagger.hilt.android.plugin")
}

android {
    dependency{
        ....
        implementation(libs.hilt.android)
        ksp(libs.hilt.android.compiler)
    }
}

結果として、まだまだ開発経験の浅い自分にはこの仕様が仇となってしまいました。

解決法

Gradle Scripts内のlibs.versions.tomlを覗いてみます。

libs.versions.toml
[versions]
....
hiltAndroid = "2.51.1"
hiltAndroidCompiler = "2.44"
hiltAndroidVersion = "2.51.1"
hiltCompilerVersion = "2.44"
hiltNavigationCompose = "1.2.0"
kotlin = "1.9.0"
....

2.44と2.51.1が混在していることが分かります。
2.44を2.51.1に置き換えてあげることでこの問題は解決しました。

今回の教訓:バージョン管理から目を逸らすな!!!

1
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
1
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?