개요

문제

  • Unity의 경우 빌드 시, 내장 Gradle을 사용하는 반면, Android Gradle Plugin은 Andriod Studio에 의존성이 걸려있기 때문에 종종 아래와 같은 에러가 발생하기도 한다.
Gradle Build Error: Gradle version 2.10 is required. Current version is 4.0.1.

해결 방법

  • Andriod Studio 버전 업데이트
    • Andriod Studio 버전이, Unity Version 보다 낮은 경우에만 유효한 방법이다. (아래 표 참고)
    • (나도 어린왕자를 좋아하지만, Android Studio 버전을 낮춘다는 발상은 좀처럼 하기 힘들기 때문에)
  • Unity 버전 변경
    • 현실적으로 불가능한 경우가 많다.
  • 프로젝트 Export
    • Unity Build를 누르면 내장 Gradle을 사용하지만, Export를하면 시스템에 설치한 Gradle을 사용할 수 있다.
    • 다만, Jenkins로 빌드 환경을 구축한 경우 Command Line 빌드를 사용하기 때문에 로컬 빌드에만 유효한 방식
    • 방법은, Export된 Android Studio를 열어 Gradle과 Android Gradle Plugin 버전을 맞추는 것이다.
  • Resolver 사용
    • 5.5 버전 사용자라면 Unity 버전 변경을 하거나, Resolver를 사용하자.
    • 사실 Gradle을 사용하는 이유가 의존성을 관리하기 위한 것이다.
    • Unity의 경우 Android 처럼 복잡한 의존성(api, implementaion, compileOnly 등)을 관리할 필요도 없고, 사실 라이브러리만 집어 넣어주면 되기 때문에 Resolver의 Dependency를 사용하고 Internal 빌드로 의존성을 관리하는 것이 좋다.

Unity에서 딱히 Gradle 빌드가 좋은 점은 모르겠다. 라이브러리 프로젝트를 Project 단위로 연결 시킬것도 아니고
(사실 실제 Device에서 Native(NDK)나 Java 라이브러리 디버깅을 위해 종종 하기도 하지만, 배포는 AAR로 하니까)
닭을 잡는데 소잡는 칼을 쓰는 느낌이지만, 소잡는 칼이 닭잡는 칼보다 크고 잘드는건 명확하니까..

  • 5.6.2 이후 버전
    • Build System을 Gradle로 변경하고, mainTemplet.gradle을 생성하여 Unity 내장 Gradle 버전과, Android Gradle Plugin 버전을 호환 시키고 빌드
    • Unity 내장 Gradle의 경우 `/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/gradle/lib` 에서 확인 가능
Unity Version Android Gradle Plugin Version Gradle Version
5.5~ 2.1.0 2.14
2017.1 ~ 2017.2 2.1.0 2.14
2017.4 ~ 2017.4.16 2.3.0 4.0.1
2017 ~ 20174.17 3.2 4.6
2018.1 2.3.0 4.0.1
2018.2 3.0.1 4.2.1

2018.3 ~ 2018.4, 2018.4.3f1
2019.1 ~ 2019.1.6f1

3.2 4.6
2018.4 ~2018.4.4f1
2019~2019.1.7f1
2019.2, 2019.3
3.4 5.1.1

버전 관리

  • 현재는 2018이후, LTS 버전에 위주로 기억하면 될 것 같다.

'프로그래밍 > Gradle' 카테고리의 다른 글

[Gradle] Android 빌드를 위한 Gradle Version 관리  (0) 2020.01.29
[Gradle] 최신 버전 링크  (0) 2019.07.03

+ Recent posts