<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
		<id>https://wiki.nonip.net/index.php?action=history&amp;feed=atom&amp;title=Android%2Fkotlin%2FDaggerHilt%2F%E5%9F%BA%E6%9C%AC</id>
		<title>Android/kotlin/DaggerHilt/基本 - 変更履歴</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.nonip.net/index.php?action=history&amp;feed=atom&amp;title=Android%2Fkotlin%2FDaggerHilt%2F%E5%9F%BA%E6%9C%AC"/>
		<link rel="alternate" type="text/html" href="https://wiki.nonip.net/index.php?title=Android/kotlin/DaggerHilt/%E5%9F%BA%E6%9C%AC&amp;action=history"/>
		<updated>2026-04-24T21:03:48Z</updated>
		<subtitle>このウィキのこのページに関する変更履歴</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>https://wiki.nonip.net/index.php?title=Android/kotlin/DaggerHilt/%E5%9F%BA%E6%9C%AC&amp;diff=12816&amp;oldid=prev</id>
		<title>Admin: ページの作成:「==サンプル== プロジェクト直のbuild.gradleに以下追加 &lt;pre&gt; buildscript {     dependencies {         classpath &quot;com.android.tools.build:gradle:4.1.1&quot;...」</title>
		<link rel="alternate" type="text/html" href="https://wiki.nonip.net/index.php?title=Android/kotlin/DaggerHilt/%E5%9F%BA%E6%9C%AC&amp;diff=12816&amp;oldid=prev"/>
				<updated>2021-03-31T06:06:34Z</updated>
		
		<summary type="html">&lt;p&gt;ページの作成:「==サンプル== プロジェクト直のbuild.gradleに以下追加 &amp;lt;pre&amp;gt; buildscript {     dependencies {         classpath &amp;quot;com.android.tools.build:gradle:4.1.1&amp;quot;...」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==サンプル==&lt;br /&gt;
プロジェクト直のbuild.gradleに以下追加&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
buildscript {&lt;br /&gt;
    dependencies {&lt;br /&gt;
        classpath &amp;quot;com.android.tools.build:gradle:4.1.1&amp;quot;&lt;br /&gt;
        classpath &amp;quot;org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version&amp;quot;&lt;br /&gt;
        def dagger_hilt_version = &amp;quot;2.31-alpha&amp;quot;&lt;br /&gt;
        classpath &amp;quot;com.google.dagger:hilt-android-gradle-plugin:${dagger_hilt_version}&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
app/build.gradleに以下追加&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugins {&lt;br /&gt;
    id 'kotlin-kapt'&lt;br /&gt;
    id 'dagger.hilt.android.plugin'&lt;br /&gt;
}&lt;br /&gt;
dependencies {&lt;br /&gt;
    def dagger_hilt_version = &amp;quot;2.31.2-alpha&amp;quot;&lt;br /&gt;
    implementation &amp;quot;com.google.dagger:hilt-android:${dagger_hilt_version}&amp;quot;&lt;br /&gt;
    kapt &amp;quot;com.google.dagger:hilt-android-compiler:${dagger_hilt_version}&amp;quot;&lt;br /&gt;
    def dagger_hilt_view_model_version = &amp;quot;1.0.0-alpha03&amp;quot;&lt;br /&gt;
    implementation &amp;quot;androidx.hilt:hilt-lifecycle-viewmodel:${dagger_hilt_view_model_version}&amp;quot;&lt;br /&gt;
    kapt &amp;quot;androidx.hilt:hilt-compiler:${dagger_hilt_view_model_version}&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
applicationを追加&lt;br /&gt;
&lt;br /&gt;
MainApplication.kt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import android.app.Application&lt;br /&gt;
import dagger.hilt.android.HiltAndroidApp&lt;br /&gt;
&lt;br /&gt;
@HiltAndroidApp&lt;br /&gt;
class MainApplication : Application()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AndoridManifest.xml のandroid:nameにpathを追加&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;manifest xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    package=&amp;quot;com.example.daggerhiltapplication&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;application&lt;br /&gt;
        android:name=&amp;quot;com.example.daggerhiltapplication.MainApplication&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MainActivity.kt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import androidx.appcompat.app.AppCompatActivity&lt;br /&gt;
import android.os.Bundle&lt;br /&gt;
import dagger.hilt.android.AndroidEntryPoint&lt;br /&gt;
import javax.inject.Inject&lt;br /&gt;
&lt;br /&gt;
@AndroidEntryPoint&lt;br /&gt;
class MainActivity : AppCompatActivity() {&lt;br /&gt;
    @Inject&lt;br /&gt;
    lateinit var usecase: HogeUsecase&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_main)&lt;br /&gt;
&lt;br /&gt;
        Log.v(&amp;quot;MainActivity&amp;quot;, &amp;quot;onCreate!!&amp;quot;)&lt;br /&gt;
        usecase.print(&amp;quot;MainActivity&amp;quot;, &amp;quot;usecase.print!!&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
サービスとユースケースの読み込みモジュール&lt;br /&gt;
&lt;br /&gt;
ApplicationBindsModule.kt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import dagger.Binds&lt;br /&gt;
import dagger.Module&lt;br /&gt;
import dagger.hilt.InstallIn&lt;br /&gt;
import dagger.hilt.components.SingletonComponent&lt;br /&gt;
&lt;br /&gt;
@Module&lt;br /&gt;
@InstallIn(SingletonComponent::class)&lt;br /&gt;
abstract class ApplicationBindsModule {&lt;br /&gt;
    @Binds&lt;br /&gt;
    abstract fun bindHogeService(hogeServiceImpl: HogeServiceImpl) : HogeService&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ApplicationProvidesModule.kt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import dagger.Module&lt;br /&gt;
import dagger.Provides&lt;br /&gt;
import dagger.hilt.InstallIn&lt;br /&gt;
import dagger.hilt.components.SingletonComponent&lt;br /&gt;
&lt;br /&gt;
@Module&lt;br /&gt;
@InstallIn(SingletonComponent::class)&lt;br /&gt;
object ApplicationProvidesModule {&lt;br /&gt;
    @Provides&lt;br /&gt;
    fun provideHogeUseCase(hogeService: HogeService) : HogeUsecase {&lt;br /&gt;
        Log.v(&amp;quot;ApplicationProvides&amp;quot;, &amp;quot;provideHogeUseCase!!&amp;quot;)&lt;br /&gt;
        return HogeUsecase(hogeService)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HogeService.kt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import android.util.Log&lt;br /&gt;
import javax.inject.Inject&lt;br /&gt;
&lt;br /&gt;
interface HogeService {&lt;br /&gt;
    fun print(tag: String, message: String)&lt;br /&gt;
}&lt;br /&gt;
class HogeServiceImpl @Inject constructor(): HogeService {&lt;br /&gt;
    override fun print(tag: String, message: String) {&lt;br /&gt;
        Log.v(&amp;quot;HogeServiceImpl&amp;quot;, &amp;quot;print!! tag=$tag message=$message&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HogeUsecase.kt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import javax.inject.Inject&lt;br /&gt;
&lt;br /&gt;
class HogeUsecase @Inject constructor(private val service: HogeService) {&lt;br /&gt;
    fun print(tag: String, message: String) {&lt;br /&gt;
        Log.v(&amp;quot;HogeUsecase&amp;quot;, &amp;quot;print!! tag=$tag message=$message&amp;quot;)&lt;br /&gt;
        service.print(tag, message)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
出力&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
V/ApplicationProvides: provideHogeUseCase!!&lt;br /&gt;
V/MainActivity: onCreate!!&lt;br /&gt;
V/HogeUsecase: print!! tag=MainActivity message=usecase.print!!&lt;br /&gt;
V/HogeServiceImpl: print!! tag=MainActivity message=usecase.print!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MainViewModelを追加==&lt;br /&gt;
app/build.gradle&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dependencies {&lt;br /&gt;
    implementation &amp;quot;androidx.activity:activity-ktx:1.1.0&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
MainViewModel.kt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import androidx.lifecycle.SavedStateHandle&lt;br /&gt;
import androidx.lifecycle.ViewModel&lt;br /&gt;
import dagger.hilt.android.lifecycle.HiltViewModel&lt;br /&gt;
import javax.inject.Inject&lt;br /&gt;
&lt;br /&gt;
@HiltViewModel&lt;br /&gt;
class MainViewModel @Inject constructor(&lt;br /&gt;
        private val savedState: SavedStateHandle,&lt;br /&gt;
        private val usecase: HogeUsecase&lt;br /&gt;
): ViewModel() {&lt;br /&gt;
    fun print() {&lt;br /&gt;
        usecase.print(&amp;quot;MainViewModel&amp;quot;, &amp;quot;print!!&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MainActivity.ktを改修&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import androidx.appcompat.app.AppCompatActivity&lt;br /&gt;
import android.os.Bundle&lt;br /&gt;
import android.util.Log&lt;br /&gt;
import androidx.activity.viewModels&lt;br /&gt;
import dagger.hilt.android.AndroidEntryPoint&lt;br /&gt;
import javax.inject.Inject&lt;br /&gt;
&lt;br /&gt;
@AndroidEntryPoint&lt;br /&gt;
class MainActivity : AppCompatActivity() {&lt;br /&gt;
&lt;br /&gt;
    @Inject&lt;br /&gt;
    lateinit var usecase: HogeUsecase&lt;br /&gt;
&lt;br /&gt;
    private val mainViewModel: MainViewModel by viewModels()&lt;br /&gt;
&lt;br /&gt;
    override fun onCreate(savedInstanceState: Bundle?) {&lt;br /&gt;
        super.onCreate(savedInstanceState)&lt;br /&gt;
        setContentView(R.layout.activity_main)&lt;br /&gt;
&lt;br /&gt;
        Log.v(&amp;quot;MainActivity&amp;quot;, &amp;quot;onCreate!!&amp;quot;)&lt;br /&gt;
        usecase.print(&amp;quot;MainActivity&amp;quot;, &amp;quot;usecase.print!!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        mainViewModel.print()&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
出力&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
V/ApplicationProvides: provideHogeUseCase!!&lt;br /&gt;
V/MainActivity: onCreate!!&lt;br /&gt;
V/HogeUsecase: print!! tag=MainActivity message=usecase.print!!&lt;br /&gt;
V/HogeServiceImpl: print!! tag=MainActivity message=usecase.print!!&lt;br /&gt;
V/ApplicationProvides: provideHogeUseCase!!&lt;br /&gt;
V/HogeUsecase: print!! tag=MainViewModel message=print!!&lt;br /&gt;
V/HogeServiceImpl: print!! tag=MainViewModel message=print!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考==&lt;br /&gt;
https://medium.com/kaleidot725/%E8%A9%B1%E9%A1%8C%E3%81%AE-dagger-hilt-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F-13acab8163e0&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>