문제 : 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 경로를 설정해 주면 된다.
'게임 > Unity3D' 카테고리의 다른 글
[Unity] Google Service Play 에서 ERROR_UI_BUSY 에러 해결법 (0) | 2017.10.15 |
---|---|
[Google Play Service][Unity] Unity에서 구글 로그인 인증 구현하기(+로그인 실패 해결하기) (0) | 2017.10.10 |
[Unity/Android] Unity Bluetooth on Android with making Java Plugin (0) | 2017.09.18 |
[Unity] ContentSizeFitter를 사용해 TextMesh 크기를 자동으로 텍스트에 맞춰 조절하기 (3) | 2017.02.27 |
[Unity] OnBecameVisible 함수로 카메라에 보이는 오브젝트 체크하기 (0) | 2017.02.08 |
[Unity] Collision detection과 Rigidbody의 부모/자식 오브젝트 관계에서의 주의사항.. (1) | 2017.02.07 |
[Unity] UnityEngine.Random.Range의 max값.. (0) | 2017.02.06 |
[unity] CollisionEnter 주의사항. Child Parent 관계.. (0) | 2017.02.05 |
[Unity][C#] OdbcException: ERROR [IM002] [Microsoft][ODBC 드라이버 관리자] 데이터 원본 이름이 없고 기본 드라이버를 지정하지 않았습니다. (2) | 2016.09.18 |
[Unity] IsPointerOverGameObject: UI 클릭 시 게임오브젝트도 클릭될 때 사용 (0) | 2016.08.28 |