[유니티] 안드로이드 빌드 에러
프로그래밍/유니티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.NoClassDefFoundError: javax/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가 정상적으로 실행됐습니다.
댓글 영역