제이슨의 개발이야기

build.Gradle 파일? build.Gradle(project) 와 build.Gradle(app) 차이 본문

안드로이드

build.Gradle 파일? build.Gradle(project) 와 build.Gradle(app) 차이

제이쓰은 2021. 9. 6. 11:33
728x90
반응형

 

 

안녕하세요!

오늘은 개발 공부를 하려다가 문뜩 build.Gradle 에서 project 와 app 의 차이가 무엇일까? 에 대해서 갑자기 궁금해저서

공부해보았습니다!

 

일단 차이에 대해서 공부 하기전 Gradle이 무엇인지 부터 먼저 알아야 할 거 같습니다!

 

그래들(Gradle) 이란 간단하게 말하면 빌드 도구입니다

 

이클립스나 인텔리제이 혹은 안드로이드 스튜디오 같은 IDE에서 개발자가 열심히 코드 작성 후 

Run 버튼을 눌렀을 때 실행 하거나 release 파일 안드로이드 같은 경우 APK 나 AAB 파일 을 만들기 위해서는 빌드 란 과정을 거치게 되고 이때 Gradle 은 빌드 하기 위한 도구 입니다 !

 

이런 빌드 도구 는 그래들 (Gradle ) 말고도 메이븐(Maven) 이나 그루비 (Groovy) 등이 있습니다! 

 

스프링 프레임워크 같은 경우 가장 흔하게 사용하는 것은 Maven 이고(제가 알기로는 Gradle 로도 가능하다는 이야기가 있지만 확실하진않아요!) 스프링 부트 같은 경우 Gradle 을 사용하는대

안드로이드 같은 경우  여러 빌드 도구 중에 Gradle 을 채택해서 사용하고 있습니다!

 

그렇다면 아 대충 build.gradle 파일 역시 빌드하는대 필요한 세팅을 저장하는 곳이겠구나 란 합리적인 생각이 들 수 있습니다!

 

그렇다면 본론으로 넘어와서 build.gradle(project) 와 build.gradle(app) 의 차이는 무엇일까?

 

 

먼저 build.gradle(project)

Project 단 에서는 

 

모든 하위 프로젝트 및 하위 모듈에 공통적인 구성 옵션을 추가하는 최상위 빌드 파일입니다! 

 

좀 더 쉽게 이야기 하자면 내가 개발 중에 필요로 한 라이브러리 등을 사용하기 위한 구성 옵션을 먼저 project 단에 추가하는 것을 의미합니다 여기에 추가를 하게 되면 하위 모듈에서 해당 구성을 사용할 수 있는 것을 의미합니다! 

 

위에 이미지에서 dependency 를 보면

...kotlin-gradle-plugin ... 부분이 보입니다

이 것은 코틀린 그래들 플러그인 즉 코틀린 으로 작성된 코드를 빌드 하는 플러그인을 추가한다는 것을 의미합니다

저 부분이 없으면 빌드 할 수 없습니다!

 

그 다음에 navigation 부분이 보입니다

이 것은 navigation component 를 사용하기 위한 플러그인 을 추가하는 것을 의미합니다! 

 

그 다음 build.gradle(app)

 

이 파일은 앱 모듈이라고 생각하시 면 쉬울거 같습니다! 

 

특정 모듈의 빌드 파일을 의미하며 

여기서 작성된 내용은 해당 모듈에만 적용됩니다!

 

여기서 쉽게 이야기하면 

아까 전에 project 단에서 추가한 플러그인을 사용하는 곳이라고 생각하면 됩니다! 

맨 위에 보면 플러그인 이라고 적혀 있는대 project 단에 추가한 플러그인을 불러오는 부분입니다

 

(※ 플러그인 에서 navigaion 부분이 누락되어있네요.. 원래는 navigation id도 있어야합니다)

 

이미지를 보면 navigation-fragment 도 있고 

navigaion-ui 도 있는대 

이것은 아까 추가한  navigation plugin 에서 가저온다 라고 생각하면 될 거 같습니다 ^.^

 

build.gradle(project) 에서 dependency 에서는 사용 할 플러그인을 추가하는 것이라면

 

build.gradle(app) depencency 에서는 사용 할 외부 라이브러리를 적어두는 곳입니다

 

 

다시 종합해 보자면 

build.gradle(project) 는 최상위 gradle 파일로 써 각 모듈에서 사용 할 플러그인 을 지정 하는 곳(플러그인 뿐만 아니라 기타 하위 모듈에서도 사용 되는 것을 세팅) 

build.gradle(app) 는 앱 모듈로 써 최상위 gradle에서 추가한 plugin 을 가지고 여러 필요로 하는 것을 세팅하는 곳 

 

이라고 생각하시면 됩니다!

 

제가 오늘 build.gradle 에 대해서 설명 해봤는대 사실 제가 설명한 부분은 build.gradle 에서 일부분만 설명한 감이 없지 않게 있습니다

저는 오늘 유독 플러그인 과 필요로한 외부 라이브러리를 추가하는 용도로만 이야기 했는대

사실 이거 뿐만 아니라  컴파일 할 떄 필요로 한 여러 세팅을 여기서 다 하고

빌드 할 때 IDE는 먼저 build.gradle 읽고 나서 나머지 소스코드를 읽어 나가면서 빌드를 진행 하는 만큼 

빌드를 진행하기 위한 가이드 파일 같은 존재입니다 

 

 

마지막으로 저의 얕은 지식으로 혹시 잘못된 부분이 있거나 좀 더 추가할 내용이 있다고 생각하시면 댓글로 남겨주시면 너무 감사합니다!ㅎㅎ

728x90
반응형