[안드로이드] gradlew

android_gradlew

Android Studio 왼쪽에 프로젝트 트리를 보면 gradlew라는 이름의 파일이 있다. gradlew는 Gradle Wrapper의 줄임말이고, Android프로젝트에서 사용 가능한 모든 빌드 작업을 실행할 수 있다.

gradlew에서 할 수 있는 작업 중에 라이브러리 간에 디펜던시 체크할 수 있는 기능에 대해서 알아보자(사실은 요것밖에 아직 모름)

Android에서 Library Dependencies 체크하기

단도직입적으로 해보자

terminal에서

./gradlew app:dependencies > text.txt

요렇게 명령어를 쓰면 text.txt파일에 모든 디펜던시 트리가 나온다.

결과를 읽어보자

해당 파일을 잘 내리다 보면(엄청길다) 아래와 같이 트리형태로 존재하는 것을 알 수 있는데, 오른쪽으로 뎁스가 길어지면 해당 라이브러리를 사용하고있어서 디펜던시에 걸린다는 의미로 읽으면 된다.

...

|    +--- androidx.appcompat:appcompat:1.0.0 -> 1.1.0
|    |    +--- androidx.annotation:annotation:1.1.0
|    |    +--- androidx.core:core:1.1.0
|    |    |    +--- androidx.annotation:annotation:1.1.0
|    |    |    +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.1.0 (*)
|    |    |    +--- androidx.versionedparcelable:versionedparcelable:1.1.0
|    |    |    |    +--- androidx.annotation:annotation:1.1.0
|    |    |    |    \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
|    |    |    \--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)

...

트러블 슈팅

이번에 Androidx.appcompat:appcompat:1.1.0에서 특정 웹뷰 버전에서 죽는 이슈가 있었고, 해당 이슈를 해결하기 위해서 appcompat:1.1.0 디펜던시를 제거해야했는데, gradle에 버전을 1.1.0 -> 1.0.2로 낮춰도 androidx.preference 라이브러리에서 참조하고 있던 부분이 있어서 1.0.2로 다운그레이드가 되지 않았었다 해당 버전도 1.0.0으로 낮춰서 문제를 결국 해결!