AAC ViewModel 인스턴스를 생성할 때 여러가지 방법이 있는데 그 중 delegate pattern을 적용한 방법인 by viewModels
와 by activityViewModels
키워드로 생성하려고 했다.
이 키워드들을 사용하려면 build.gradle
에 다음과 같은 의존성을 추가해야 한다고 알고 있다.
implementation 'androidx.activity:activity-ktx:1.5.1'
implementation 'androidx.fragment:fragment-ktx:1.5.2'
그런데 내 프로젝트의 build.gradle
에는 눈을 씻고 찾아봐도 저 의존성은 없는데 나는 이미 내 프로젝트에서 by viewModels
와 by activityViewModels
를 사용하고 있었다.
도대체 어떻게 된 일이지?!
열심히 구글링을 하다보니 나와 같은 궁금증이 있는 사람을 찾았다.
stackoverflow
답변에 따르면, dependency tree를 확인해보고 androidx.activity:activity-ktx이나 androidx.fragment:fragment-ktx를 암시적으로 내포하고 있는 패키지를 내 프로젝트에서 사용하고 있을 것이라고 한다.
그래서 확인해보았다!
그랬더니 androidx.navigation:navigation-fragment-ktx에서 내가 찾던 두가지 의존성을 모두 포함하고 있는 것을 확인할 수 있었다.
내가 이미 쓴 의존성 하위에 다른 의존성이 포함될 수 있다는 걸 알 수 있었다! (dependency tree라는 게 있는지도 몰랐다😅)
하지만 최신 버전과는 좀 차이가 있어서 필요한 게 생기면 그걸 직접 추가해서 쓰는 게 더 좋을 거 같다!