게임/Unity3D

[Unity3D/Android] Unity에서 Android 모듈 사용하기(.jar 대신 .aar 사용)

Binceline 2017. 9. 23. 22:59



문제 : Unity에서 .jar 파일을 사용함에 있어서 resource 문제 발생.

 - Android Studio로 블루투스 모듈을 프로그래밍한 후 .jar 파일로 추출

 - 블루투스 모듈은 페어링 목록을 불러오기 위한 Activity를 사용하도록 구현되어 있음.

 - 추출한 .jar 파일을 Unity에서 사용했을 시 다음과 같은 에러를 보게 됨. (앱 실행 중지됨)


java.lang.NoClassDefFoundError: Failed resolution of: Lcom/teraphonia/bluetoothforunity/R$layout


Android 프로젝트에는 res/layout 폴더에 activity xml 파일이 들어 있는데, Unity에서 사용하려니 찾을 수 없어서 생기는 에러다.


그래서 고민하던 중, aar 파일에 대해 알게 되었다.



해결 : .jar 파일 대신 .aar 파일을 사용하자.


설명 출처 : https://developer.android.com/studio/projects/android-library.html?hl=ko


즉, .jar파일 대신 .aar 파일을 사용하게 되면 리소스들도 포함하기 때문에, 이 문제를 해결할 수 있게 되는 셈이다.


.aar 파일을 추출하는 방법은 Android Library 프로젝트에서 Gradle 메뉴 > app > build / assemble Task를 실행하면 된다.


그럼 다음과 같은 경로에 .aar 파일이 생성됨을 볼 수 있다.


여기서 release.aar 파일을 Unity의 Assets/Plugins/Android 폴더에 옮긴다.




이제 블루투스 모듈이 Unity에서도 잘 작동한다.


다음은 Unity에서 bluetooth 모듈을 이용해 페어링 목록을 가져온 화면이다.



잘 작동해서 기분이 너무 좋당~!




*추가사항(Error of Android sdk or jdk version)


여기까지 하면 끝이지만, 다음 에러를 보는 사람도 있을 것이다.


<uses-sdk android:~~~version~~~~ 뭐시기 하는 에러


이 경우 보통 2가지가 있다.


min sdk version ~~~ 에러라면


player setting / other / minimum api 설정을 알맞게 변경하면 된다.


target  sdk version ~~~ 에러라면


그에 맞는 android sdk build tool 버젼을 설치해 주어야 한다.


이렇게 해결하면 되는데, 


Failed to compile resources with the 로 시작하는 에러 메시지를 보는 경우가 있다.


내용을 살펴 보면,


major version 52 is newer than 51, 뭐시기 하는 에러 메시지가 있는데,


jdk 버젼을 업그레이드 하라는 메시지였다.


맞는 버젼을 다운받은 후,


Unity 메뉴에서 Edit > Preferences > External Tools > jdk 경로를 설정해 주면 된다.


반응형