'JNI'에 해당되는 글 1건
- 2014.04.02 유니티 안드로이드 확장 개발 - jar 파일(이클립스연동) (3)
유니티는 다양한 에셋들을 사용해서 개발의 편의성을 높이고 있습니다.
Prime31이나 각종 애드몹 관련 플러그인들도 이와 같이 개발의 편의성을 높이는 플러그인입니다. 이런 플러그인을 직접 돈주고 사면 좋겠지만.
저희 같은 가난한 개발자 및 학생들은 직접 유니티와 자바의 연동을 통해서 구현해야됩니다.
여기서는 자바 클래스와 연동하는 방법을 간단하게 소개하겠습니다.
각각 호출할때 기본적인 함수들이 있습니다.
유니티에서는 자바 클래스를 호출할때
AndroidJavaObject.Call 로 자바 클래스의 함수를 호출할수 있습니다.
자바클래스에서 유니티를 호출할때는
UnityPlayer.UnitySendMessage 함수를 사용하여 호출합니다.
유니티로 제작된 게임을 자바 클래스를 통해 확장하는 방식은 2가지가 있는데
첫번째 방식은 자바 클래스를 별도로 제작한 후 유니티 프로젝트 폴더의 Plugins/Android 폴더에 올려서 확장하는 방식이고
두번째 방식은 유니티 내에서 이클립스로 export해주어서 확장하는 방법입니다.
jar 파일을 생성해서 관리하는것이 좀더 편한것 같으니 첫번째 방식을 사용하겠습니다.
먼저 jar 파일을 생성할 프로젝트를 이클립스에서 생성해줍니다.
패키지 이름을 com.test.androidjartest 로 지정했는데 유니티 내의 Bundle Identifier 항목과 일치해야됩니다.
Edit - Project Settings - Player 에서
안드로이드 모양의 버튼을 누르면 Bundle Identifiire 를 수정할수 있습니다. 위에서 만든 패키지 이름과 일치 시켜줍니다.
이클립스에서 프로젝트를 생성하고 난다음에는 유니티가 제공하는 jar 파일을 임포트 해주어야 유니티가 제공해주는 함수를 사용할수 있습니다.
유니티가 제공하는 jar 파일은 classes.jar 파일이며 경로는 설치된 폴더에서 Editor/Data/PlaybackEngines/androidplayer/bin 폴더에 존재합니다.
jar 파일을 추가하는 방법은 프로젝트 폴더에서 오른쪽 버튼을 누르고 properties 를 누릅니다.
그리고 JaVa Build Path 에서 Libraries 에서 Add External JARs 버튼을 누르고 해당 경로에 있는 jar 파일은 선택해주고
Order and Export 에서 불러온 jar 파일을 체크해주고 ok를 누릅니다.
이클립스에서 만들어진 MainActivity 를 위와 같이 고쳐줍니다. 소스를 모두 수정하면 이 소스를 jar 파일로 만들어 exprot 해주겠습니다.
프로젝트 폴더에서 오른쪽 버튼을 누르고 Exprot 를 클릭해줍니다. 그리고 위 처럼 Jar file을 누르고 next 버튼을 눌러주고
자신의 프로젝트에서 src 폴더만 체크 해주고 Jar File 의 이름을 설정해주고 finish 버튼을 누르면 jar 파일이 완성됩니다.
이제 유니티로 넘어오겠습니다.
유니티 내에서는 jar 파일을 인식하기 위해서는 반드시 해당 경로에 jar 파일이 존재해야됩니다. 안드로이드 같은 경우네는
Plugins/Android 폴더에 jar 파일이 존재해야됩니다.
그리고 해당 jar 파일을 실행하기 위해서는 AndoridManifest 및 res 폴더가 필요하므로 위에서 만든
jar 파일과 res 폴더 AndroidManifest 파일들을 Android 폴더에 집어 넣어줍니다.
이제 모든 세팅이 완료 되었습니다.
이제 제대로 유니티에서 -> 자바 클래스로 자바 클래스에서 유니티로 함수가 호출되는지 보겠습니다.
빈게임 오브젝트를 만들고 AndroidManager로 이름을 변경합니다.(반드시 AndroidManager로 지어주어야 됩니다.)
그리고 AndroidManager 에 아래 스크립트를 할당해줍니다.
AndroidManager 내의 Start 함수에서 MainActivity 자바 클래스의 HelloFunction 함수를 호출(_activity,Call("HelloFunction)하고,
자바 클래스에서는(이클립스) AndroidManage 클래스의 AndroidLog 함수를 호출(UnityPlayer.UnitySendMessage("AndroidManager", "AndroidLog", "Hello!");)하는 구조입니다.
할당후 안드로이드 단말기에서 빌드를 하면 아래와 같이 로그를 출력할 것입니다.
'유니티 > 스크립트' 카테고리의 다른 글
| PlayerPrefs 배열로 저장하기. (0) | 2014.04.08 |
|---|---|
| NGUI 스크롤뷰 grid 아이템 생성시 순서대로 생성되게 하기. (0) | 2014.04.08 |
| 유니티 안드로이드 확장 개발 - jar 파일(이클립스연동) (3) | 2014.04.02 |
| 인앱빌링 구현하기 ver3 - 구글번역 (0) | 2014.03.28 |
| 안드로이드 서버 php 통신(간단히) (11) | 2014.03.27 |
| 유니티 xml 파일 로드 (0) | 2014.03.18 |
-
-
Ku 2014.10.21 23:04
실행하였다니 아래와 같은 오류가 발생하였습니다 ㅠㅠ 왜인지 감이 안옵니다 ㅠㅠㅠㅠㅠㅠ
Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.
C:\Users\kyoungku\Desktop\Company\adt\sdk\build-tools\android-4.4W\aapt.exe package --auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S "res" -I "C:/Users/kyoungku/Desktop/Company/adt/sdk/platforms/android-20\android.jar" -F bin/resources.ap_
stderr[
res\values\styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.
res\values-v11\styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.
res\values-v14\styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
]
stdout[
Configurations:
(default)
v11
v14
hdpi
mdpi
xhdpi
xxhdpi
w820dp
Files:
drawable\app_icon.png
Src: () res\drawable\app_icon.png
drawable\ic_launcher.png
Src: (hdpi) res\drawable-hdpi\ic_launcher.png
Src: (mdpi) res\drawable-mdpi\ic_launcher.png
Src: (xhdpi) res\drawable-xhdpi\ic_launcher.png
Src: (xxhdpi) res\drawable-xxhdpi\ic_launcher.png
layout\activity_main.xml
Src: () res\layout\activity_main.xml
menu\main.xml
Src: () res\menu\main.xml
values\dimens.xml
Src: () res\values\dimens.xml
Src: (w820dp) res\values-w820dp\dimens.xml
values\strings.xml
Src: () res\values\strings.xml
values\styles.xml
Src: () res\values\styles.xml
Src: (v11) res\values-v11\styles.xml
Src: (v14) res\values-v14\styles.xml
AndroidManifest.xml
Src: () AndroidManifest.xml
Resource Dirs:
Type drawable
drawable\app_icon.png
Src: () res\drawable\app_icon.png
drawable\ic_launcher.png
Src: (hdpi) res\drawable-hdpi\ic_launcher.png
Src: (mdpi) res\drawable-mdpi\ic_launcher.png
Src: (xhdpi) res\drawable-xhdpi\ic_launcher.png
Src: (xxhdpi) res\drawable-xxhdpi\ic_launcher.png
Type layout
layout\activity_main.xml
Src: () res\layout\activity_main.xml
Type menu
menu\main.xml
Src: () res\menu\main.xml
Type values
values\dimens.xml
Src: () res\values\dimens.xml
Src: (w820dp) res\values-w820dp\dimens.xml
values\strings.xml
Src: () res\values\strings.xml
values\styles.xml
Src: () res\values\styles.xml
Src: (v11) res\values-v11\styles.xml
Src: (v14) res\values-v14\styles.xml
Including resources from package: C:\Users\kyoungku\Desktop\Company\adt\sdk\platforms\android-20\android.jar
applyFileOverlay for drawable
applyFileOverlay for layout
applyFileOverlay for anim
applyFileOverlay for animator
applyFileOverlay for interpolator
applyFileOverlay for transition
applyFileOverlay for xml
applyFileOverlay for raw
applyFileOverlay for color
applyFileOverlay for menu
applyFileOverlay for mipmap
Processing image: res\drawable\app_icon.png
Processing image: res\drawable-hdpi\ic_launcher.png
Processing image: res\drawable-mdpi\ic_launcher.png
Processing image: res\drawable-xhdpi\ic_launcher.png
(processed image res\drawable-mdpi\ic_launcher.png: 82% size of source)
Processing image: res\drawable-xxhdpi\ic_launcher.png
(processed image res\drawable-hdpi\ic_launcher.png: 77% size of source)
(processed image res\drawable\app_icon.png: 94% size of source)
(processed image res\drawable-xhdpi\ic_launcher.png: 74% size of source)
(processed image res\drawable-xxhdpi\ic_launcher.png: 72% size of source)
(new resource id app_icon from drawable\app_icon.png #generated)
(new resource id ic_launcher from hdpi\drawable\ic_launcher.png #generated)
(new resource id ic_launcher from mdpi\drawable\ic_launcher.png #generated)
(new resource id ic_launcher from xhdpi\drawable\ic_launcher.png #generated)
(new resource id ic_launcher from xxhdpi\drawable\ic_launcher.png #generated)
(new resource id activity_main from res\layout\activity_main.xml)
(new resource id main from res\menu\main.xml)
]


