[유니티] 안드로이드 빌드 에러

프로그래밍/유니티2018. 5. 8. 15:41

안녕하세요. 개발자 드리머즈입니다.

개발 중에 경험한 이슈 정리합니다.

문제 현상


유니티에서 안드로이드 빌드를 진행하니 아래의 에러가 발생하면서 빌드가 진행되지 않았습니다.


1
2
CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct. 
C:\Users\xxxx\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list target -c
cs


위의 로그에서는 안드로이드 SDK 경로가 제대로 되어있는지 확인하라고 했습니다. 그러나 Unity > Edit > Preference... 클릭 > External Tools 탭에서

SDK 경로를 확인했을 때 문제가 없었습니다.



문제가 되는 avdmanager.bat 파일을 직접 실행해봤더니 아래의 에러가 발생했습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
C:\Users\xxxx\Downloads\sdk-tools-windows-3859397\tools\bin>avdmanager.bat
Exception in thread "main" java.lang.NoClassDefFoundErrorjavax/xml/bind/annotation/XmlSchema
        at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
        at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
        at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
        at com.android.sdklib.tool.AvdManagerCli.parseSdk(AvdManagerCli.java:328)
        at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:204)
        at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:195)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        ... 6 more
 
cs

문제 원인

얼마전 윈도우를 새로 깔면서.. 설치한 Java 10버전이 문제였습니다. Java 10버전에는 안드로이드 빌드에 필요한 javax.xml.bind.annotation.XmlSchema 클래스가 없거나 패키지 경로가 바뀐 것 같습니다. 

해결 방법

java8버전을 깔아야 합니다.

위의 사이트에 접속합니다.

자신의 컴퓨터 OS에 맞는 Java 8버전을 다운 받습니다. (라이센스 동의해야 다운 가능)


윈도우버튼 + Pause Break 버튼을 눌러 시스템 창을 띄웁니다.

왼쪽의 고급 시스템 설정을 클릭합니다.

시스템 속성창이 뜨면 고급 탭의 환경 변수 버튼을 클릭합니다.

시스템 변수에 JAVA_HOME을 추가합니다. JAVA_HOME의 경로는 좀 전에 설치한 Java 8버전의 경로를 지정해주면 됩니다.


그리고 유니티의 Preference에 다시 가서 안드로이드 JDK의 경로를 Java의 경로로 변경해줍니다.


유니티를 종료한 후에 다시 빌드를 하면 정상적으로 빌드가 됩니다~


저의 경우 빌드는 정상적으로 됐지만 apk 설치가 안됐습니다. 에러를 확인해보니.. apk의 시그니쳐(키)가 변경됐다고 설치가 되지 않았습니다. 유니티 버전이 바뀌면.. 안드로이드 사이닝 키가 바뀌나봐요? 어쨋든 폰에 설치된 기존의 apk를 삭제하니.. 새 apk가 정상적으로 실행됐습니다.




참고


작성자

Posted by 드리머즈

관련 글

댓글 영역