제이슨의 개발이야기
build.Gradle 파일? build.Gradle(project) 와 build.Gradle(app) 차이 본문
※
안녕하세요!
오늘은 개발 공부를 하려다가 문뜩 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 읽고 나서 나머지 소스코드를 읽어 나가면서 빌드를 진행 하는 만큼
빌드를 진행하기 위한 가이드 파일 같은 존재입니다
마지막으로 저의 얕은 지식으로 혹시 잘못된 부분이 있거나 좀 더 추가할 내용이 있다고 생각하시면 댓글로 남겨주시면 너무 감사합니다!ㅎㅎ
'안드로이드' 카테고리의 다른 글
안드로이드 데이터 바인딩 Data Binding (0) | 2022.04.26 |
---|---|
(포트포워딩 하는법)외부 Client 와 VirtualBox Ubuntu 환경에서 작동하는 Server 연결 (2) | 2022.03.30 |
안드로이드 현재 배터리 잔량 체크 하는 메소드 (0) | 2021.08.18 |
안드로이드 앱 포그라운드, 백그라운드 체크 하는 방법 ! 포그라운드,백그라운드 일때 푸시 메시지 다르게 구현 (0) | 2021.08.13 |
JSON To Kotlin 플러그인 자동으로 Data Model을 만들자 ! 개발 소요 시간 단축 (0) | 2021.08.10 |