안드로이드 앱의 앱모듈 gradle에서 activity를 import한게 없는디.. 어디서 왔니?
안드로이드 앱 프로젝트를 처음 만들면 아마 기본적으로 다음과 같이 앱 모듈 수준에서의 gradle이 이렇게 세팅이 될 것이다. (version catalog 적용시)
implementation(libs.core.ktx)
implementation(libs.appcompat)
implementation(libs.material)
implementation(libs.constraintlayout)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.test.ext.junit)
androidTestImplementation(libs.espresso.core)
개인 프로젝트를 하려고 프로젝트를 생성하고 다중 권한 요청 때문에 RequestMultiplePermissions
의 소스코드를 보려고 download source
를 눌렀는데 갑자기 에러 메세지로 androidx.activity:activity:1.6.0
을 찾을수 없다고 나왔다.
응? 갑자기 왜 1.6.0이 어디서 튀어나온거지?
에러 메세지를 보고 처음에는 버전이 높아서 발생하는 이슈인가? 싶어서 activity 버전을 보는데 1.8.2로 나와있다.
순간 문득 1.6.0은 어디서 튀어 나왔는지가 궁금해졌다.
그래서 gradle을 보는데 위 코드 스니펫처럼 activity를 선언하지 않을걸 보고 activity가 transitive dependency로 파악은 했는데
문제는 누가 가져왔는지를 모르겠다.
자료를 찾다보니 dependency tree graph를 그려주는 명령어를 알게되었다.
./gradlew :<앱모듈이름, 기본은 app>:dependencies
...
+--- androidx.appcompat:appcompat:1.6.1
| +--- androidx.activity:activity:1.6.0
| | +--- ...
| | +--- ...
| | +--- ...
| | +--- ...
...
결국 appcompat이 activity를 transitive dependency로 가져오는거였다.
요즘 들어서 부쩍 시간이라는 핑계로 자꾸 제대로 파악하지 않고 넘어가려는 습관이 생겼는데,
이렇게라도 사이드 프로젝트를 할 때 좀 더 깊이 알아봐야겠다.