BearCode's Note

유니티 안드로이드 64비트(IL2CPP) 빌드 오류 해결법 본문

유니티

유니티 안드로이드 64비트(IL2CPP) 빌드 오류 해결법

BearCode 2019. 12. 6. 18:00

구글 플레이 정책에 따라 2019년 8월 1일부터 플레이스토어에 어플을 올리려면 64비트를 지원해야 합니다.

 

이에 따라 유니티로 어플, 게임 등을 개발할 때도 기존과 다른 설정을 해줘야 했습니다.

 

File - Build Settings.. - Player Settings.. - (Project Settings) Player - (Other Settings) Configuration

위 경로의 옵션에 Scripting Backend - Mono를 IL2CPP로 변경한 뒤


하단에 Target Architectures 옵션의 체크박스 중 ARM64를 체크해주면 64비트 안드로이드 빌드 설정이 완료됩니다. 

 

유니티 64비트 빌드 세팅

그런데 이 과정에서 몇 가지 오류를 경험하여 그 내용과 해결 과정을 공유합니다.

참고로 제 유니티 버전은 2019.2.15f1입니다.

첫 번째 오류, Android NDK not found

 

 

Unable to locate Android NDK.

 

64비트 빌드 설정을 막 끝낸 뒤 빌드&런을 시도하니 바로 위와 같은 메시지 박스와 에러 메시지가 나타났습니다.

NDK를 찾을 수 없다는 의미인 것 같아서 설치가 안 돼있는지 확인하기 위해 Unity Hub에서 확인합니다.

 

유니티 허브에서 NDK 확인

Android SDK & NDK Tools의 체크 박스가 해제되어있다면 체크 후 설치해줍니다.

하지만 저는 설치된 상태에서 문제가 발생하였기에 적용이 된 건지 확인하였습니다.

 

유니티 허브에서 설치한 SDK나 NDK의 적용 여부는 Edit - Preferences - External Tools에서 확인이 가능합니다.

분명 체크가 잘 되어 있지만 찾을 수 없다고 에러가 나는 상황이었습니다.

 

해결. 파일 경로 직접 설정.

구글링을 통해 유니티 에디터의 NDK 파일 경로에 문제가 있다는 글을 보았습니다.

 

유니티 에디터는 위쪽 사진의 설정에서 체크박스가 체크되면 아래의 경로에서 NDK를 찾는다고 합니다.

C:\Program Files\Unity\Hub\Editor\2019.2.15f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK

 

그러나 실제로는 아래의 경로로 접근을 해줘야 NDK를 사용할 수 있습니다.

C:\Program Files\Unity\Hub\Editor\2019.2.15f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\android-ndk-r16b

 

즉 NDK 폴더 내부의 android-ndk-r16b 폴더 안으로 한번 더 접근한 경로로 직접 경로를 설정하여 문제가 해결됐습니다.

(그러나 다른 문제가 남아있습니다.)

 

 Edit - Preferences - External Tools에서 NDK 부분 체크박스를 해제한 뒤, 직접 올바른 경로를 입력합니다.

 

두 번째 오류, Failed running

마지막 모습

이후 즐거운 마음으로 다시 빌드를 시도합니다.

그러나 절반 정도 빌드가 진행되다가 도중에 빌드가 취소되고 아래와 같은 에러 메시지를 표시하였습니다.

 

Failed running C:\Program Files\Unity\Hub\Editor\2019.2.15f1\Editor\Data\il2cpp/build/il2cpp.exe ...

 

역시 구글링을 해봤지만 부족한 영어 실력으로 이해를 하지 못하여 몇 가지 시도 끝에 해결하였습니다.

 

먼저 허브를 통해 설치된 NDK가 문제가 있지 않을까 하는 생각에 구글에서 NDK를 직접 설치하였습니다.

그리고 새로 설치한 NDK로 경로를 지정한 뒤 실행하니 성공적으로 빌드가 되는 것입니다.

하지만 알고 보니 파일의 문제가 아닌 파일 경로의 글자 수의 문제였습니다.

해결. 파일명 글자수 줄이기

문제의 원인은 새로 설치한 NDK를 기존 NDK폴더로 옮기는 과정에서 문제를 알게 되었습니다.

 

새로 설치한 NDK는 다운로드 폴더에 위치하였습니다.

C:\Users\UserName\Downloads\android-ndk-r17b

 

기존 NDK는 아래 경로에 위치합니다.

C:\Program Files\Unity\Hub\Editor\2019.2.15f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\android-ndk-r16b

 

위 경로에서 아래의 경로로 NDK파일을 옮기자 아래와 같은 메시지 박스가 떴습니다.

 

 

이는 윈도우가 파일이 위치한 전체 파일 경로를 포함하여 260자 이하의 파일명만 허용하기 때문에 발생한 에러입니다.

 

유니티 허브에서 설치할 때는 문제가 없었지만 윈도우 시스템에서는 허용하지 않는 길이의 파일명을 가졌기에

유니티 에디터가 NDK의 파일에 접근할 때 문제가 생겼던 것으로 추측하고 있습니다.

 

실제로 메시지 박스에 표시된 폴더의 파일들의 경로를 보니 260자가 넘어가는 걸 확인할 수 있었습니다.

그래서 기존 경로에서 몇 글자를 빼고 경로를 잡아 준 뒤 실행해보니 빌드가 정상적으로 되었습니다.

 

기존

C:\Program Files\Unity\Hub\Editor\2019.2.15f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\android-ndk-r16b

변경

C:\Program Files\Unity\Hub\Editor\2019.2.15f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\r16b

 

추가.

유니티 프로젝트의 경로 중에 한글이 포함되어 있으면 오류가 발생합니다.

평소 문서(Documents)폴더에 유니티 프로젝트를 위치시켜 놓았는데

C드라이브를 포맷후 재설치할때 원드라이브(OneDrive) 백업을 사용하도록 했더니

바탕화면, 사진, 문서 등의 폴더가 원드라이브 폴더 안으로 들어가면서

폴더명 또한 한글 그대로 적용이되어 있었습니다.

이에 유니티 프로젝트 경로에 "문서"라는 한글이 들어가서 오류가 발생했습니다.

원드라이브 설정을 제거하는것이 번거로워서 다시 C드라이브를 포멧하고,

이번 설치땐 원드라이브 설정을 사용하지 않기로 했습니다.

이상입니다.

오타나 잘못된 정보가 있을 경우 댓글로 알려주시면 감사하겠습니다.

Comments