Unity Gradle 빌드에 관하여

Unity 로 앱 및 게임을 구현하는데 있어

안드로이드 Native 기능을 사용하고자 하는 경우,

Plugin 형태(jar, aar)로 만든후 프로젝트에 import 하여 빌드해서 사용하게 된다.

그리고 최근 안드로이드 Native 기능들의 경우 대다수 모듈들이

Gradle 등의 빌드 툴을 통해 그때 그때 필요한 내용을 다운받아 사용하게 되어있다.

이러한 점 때문에 빌드시 문제가 생길 소지가 있다.

Unity가 빌드하는 동안 Native 모듈에서 사용하는 라이브러리를 다운받지 못해 

필요한 Class를 찾지 못하는 등의 문제를 발생시키기 때문입니다.

이를 해결하기 위해 Untiy에는 Gradle 빌드를 지원하고 있다.

이 Gradle 빌드를 사용하는 경우 개발자는 보통 다음의 수순을 따르게 된다.

1. Build System을 Gradle로 설정 및 Export Project 체크 하여 빌드 진행

2. Export 된 프로젝트를 안드로이드 스튜디오로 열고 빌드 관련된 사항들 체크

    (build.gradle 내용 확인 및 컴파일 이슈 확인)

3. 최종 빌드 확인 후 유니티 상에서 build.gradle 파일 수정

4. Export Project 체크 해제 후 빌드 진행.
   (이 시점부터 안드로이듯 스튜디오로 프로젝트를 열어서 빌드할 필요 없음)

하나씩 자세히 살펴보면 다음과 같다.

1. Build System을 Gradle로 설정 및 Export Project 체크 하여 빌드 진행

우선 유니티에서 빌드를 진행하며 에러나는 상황을 확인하는 것은 스트레스가 크고 시간이 오래걸린다.

그래서 우선 Build System을 Gradle로 설정하고 Export Project 를 체크하여 안드로이드용 프로젝트를 추출하는것을 우선으로 한다.

2. Export 된 프로젝트를 안드로이드 스튜디오로 열고 빌드 관련된 사항들 체크

    (build.gradle 내용 확인 및 컴파일 이슈 확인)

추출된 프로젝트를 안드로이드 스튜디오로 열고 빌드를 진행하여,

에러 상황을 체크하고 

build.gradle 파일의 repositories 및 dependencies의 내용을 추가 및 수정한다.

이 단계에서는 발생되는 에러가 있어서 (에러가 기억이 안나요…ㅠㅠ) 

보통은 아래 그림과 같이 google(), jcenter() 순서로 기입을 하고 시작하는 것이 좋다.

그 외에 빌드 후 테스트 하는 경우 

유니티가 뽑아주는 build.gradle은 Debug 빌드시에는 Key Signing 하는 부분이 생략되어 있기 때문에, apk 설치시 에러(INSTALL_FAILED_NO_MATCHING_ABIS)가 발생할 수 있다. 

이를 미연에 방지하기 위해 다음의 코드를 추가하는 것이 좋다.

여기까지 빌드 하고 확인이 되었다면 유니티로 돌아가자.

3. 최종 빌드 확인 후 유니티 상에서 build.gradle 파일 수정

이제 유니티 상에서 빌드를 할 수 있도록 build.gradle을 설정해야 한다.

PlayerSerttings -> Publishing Settings로 가면 Custom Gradle Template이라는 항목이 존재한다.

이것을 체크해야 유니티에서 빌드시 사용하는 build.gradle 파일을 수정할 수 있다.

체크하면 Assets/Plugins/Android/mainTemplate.gradle 파일이 생기며 이 파일의 내용을 수정하면

Gradle 빌드시 이 파일을 기반으로 빌드를 진행하게 된다.

mainTemplate의 내용에 추가할 것들은  

앞서 [2. Export 된 프로젝트를 안드로이드 스튜디오로 열고 빌드 관련된 사항들 체크] 과정에서 진행했던 안드로이드 스튜디오 프로젝트의 build.gradle에 추가한 것들을 옮겨주면 된다.

[ 샘플 파일을 올려두었으니 참고 할 것 ]

4. Export Project 체크 해제 후 빌드 진행. 
   (이 시점부터 안드로이듯 스튜디오로 프로젝트를 열어서 빌드할 필요 없음)

이제 Export Project 체크를 해제하고 빌드를 진행하면 안드로이드 스튜디오 프로젝트 빌드 없이도 정상적으로 빌드되는 것을 확인할 수 있다.

하지만 사용하는 라이브러리 버전에 따라서 

빌드중에 다음과 같이 Gradle 버전 에러가 나는 경우가 있다.

 CommandInvokationFailure: Gradle build failed. C:\Program Files\Java\jdk1.8.0_181\bin\java.exe -classpath “C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-4.2.1.jar” org.gradle.launcher.GradleMain “-Dorg.gradle.jvmargs=-Xmx2048m” “assembleDebug”

이 경우에는 유니티 내의 Gradle 버전을 올리면 해결할 수 있다.

유니티 기본 설치폴더 및 안드로이드 스튜디오 기본 설치 폴더를 기준으로 

C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle 내의 lib 폴더(유니티 내에서 사용중인 Gradle 버전)를 

안드로이드 스튜디오

C:\Program Files\Android\Android Studio\gradle\gradle-4.6 폴더 내의 lib 폴더(안드로이드 스튜디오에서 사용한 최신 버전)로 교체하면 된다.

이 작업시에는 유니티를 종료하고 작업해야 한다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다