유니티 안드로이드 확장 개발 - jar 파일(이클립스연동)

|

유니티는 다양한 에셋들을 사용해서 개발의 편의성을 높이고 있습니다.

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!");)하는 구조입니다.



할당후 안드로이드 단말기에서 빌드를 하면 아래와 같이 로그를 출력할 것입니다.






Trackback 0 And Comment 3