gradle과 gradle wrapper 라는 것이 있다.
gradle은 빌드 엔진이고 wrapper는 gradle을 감싸는 무엇인가 라고 알고 있어고, 이 둘의 관계에 대해서 별로 알지 못했다.
안드로이드 스튜디오에서 새로운 프로젝트를 생성하면 위의 그림처럼 gradle-wrapper.jar 가 포함되어 있다.
Gradle Wrapper 는 gradle을 실행하기 위한 런처이다. 그래서 새로운 프로젝트를 생성하면 Gradle Wrapper 가 실행되고 gradle-wrapper.properties 안에 있는 정의된 gradle 버전이 캐시에 다운로드가 된다.
Gradle Wrapper 는 프로젝트 내부에 다운로드 되는거고, gradle 버전은 C:\Users\ysh.gradle\wrapper\dists 이렇게 프로젝트 외부에 다운로드 된다.
gradle 실행 흐름
./gradlew assembleDebug vs gradle assembleDebug
./gradlew : gradle-wrapper 의 명령어
gradle : gradle 의 명령어
./gradle 으로 실행하면 gradle-wrapper.properties 읽어서 여기에 있는 gradle 버전을 실행한다. 팀 프로젝트에서 유리
gradle 으로 실행하면 시스템에 설치되어있는 gradle 버전을 사용한다. 그래서 내가 프로젝트에서 사용하고 있는 버전과 다를 수 있다.(이거 사용하려면 환경변수도 설정해야함. 아니면 bin 파일 경로로를 사용하던가)
그래서 Android 에서도 ./gradlew 을 사용하는것을 권장한다.