CookBook/Android 2012.05.08 17:25

안드로이드 이클립스 연동 예제

안녕하십니까. 오랜만의 포스팅입니다.


유니티 게임 개발 정석의 마지막 11장의 안드로이드 섹션에서 자바클래스를 사용하여 유니티 코드를 확장하여 다양한 서비스를 추가하는 방법에 대해 소개하였는데, 설명이 부족한 듯 하여 실용적인 예제와 함께 몇 가지 유용한 기능들과 함께 정리해보려고 합니다.


책에서 소개한 기능은 2가지 인데, 실무적으로 가장 많이 사용하는 방법은 아무래도 두 번째 방법이 아닌가 싶습니다.

이 방법의 장점은 이클립스에서 최종 프로젝트를 완성하므로, 유니티가 진행하는 빌드 규칙에 구애받지 않고 기존의 안드로이드 앱을 개발하듯이 마음대로 구현이 가능하다는 것에 있습니다.


이클립스를 통해 패키징 하는 방법은 크게 아래의 3단계로 구성됩니다.

1. 유니티로 프로젝트를 1차로 빌드하여 안드로이드 프로젝트 생성

2. 안드로이드 프로젝트를 이클립스에서 불러와 라이브러리 프로젝트로 변경

3. 이클립스에서 유니티 기본 안드로이드 라이브러리와 위에서 생성한 라이브러리 프로젝트를 활용하여 최종 프로그램 제작


이제 각각 단계별로 설정하는 방법들을 상세히 알아봅시다.


첫 번째 단계

첫 번째 단계는 유니티 프로젝트를 생성한 후, 빌드를 진행합니다.

이 단계는 유니티 플레이어를 동작시키기 위해 모노(Mono)기반의 유니티 플랫폼 구조를 만들어서 동작시키도록 하기 위한 것이므로,

아무것도 설정안된 비어있는 프로젝트가 오히려 작업하기 편합니다. ( 추후 유니티에서 작업한 리소스 및 스크립트를 업데이트하는 방법은 3단계에서 설명합니다. )

저는 예제를 위해 새롭게 프로젝트를 만들고 Bundle Identifier만 설정했습니다.

다른 옵션은 딱히 건드릴 필요가 없는 것이 이클립스에서 최종 AndroidManifest.xml을 설정하기 때문입니다.



빌드 세팅 메뉴를 띄운 후 빌드 버튼을 누릅니다. ( 씬을 저장해도 무방합니다. )


 

다이얼로그에서 apk 파일을 지정하면 빌드가 되는데, 생성된 apk파일은 무시하고, 아래와 같이 프로젝트 폴더 내 Temp 디렉토리로 가서 StageArea라는 폴더가 생성되었는지 확인합니다.



이 폴더를 다른 디렉토리로 복사합니다. 저는 이 폴더들을 관리하기 위한 Stage라는 디렉토리를 별도로 만들고 복사한 후 EclipseBasic로 폴더이름을 변경하였습니다.

( 참고로 이클립스가 관리하는 workspace 디렉토리로 복사하면 안됩니다. )




두 번째 단계

이제 이클립스를 켭니다.

이클립스가 로딩되면 아래와 같이 안드로이드 프로젝트를 새롭게 만들되 아래 그림과 같이 기존의 소스로부터 프로젝트를 생성하기를 선택합니다.

그리고 브라우즈 버튼을 눌러 조금 전에 저장한 EclipseBasic이라는 폴더를 지정해줍니다.



프로젝트가 로딩되면 프로젝트를 선택한 후 오른쪽 클릭(또는 Alt+Enter키)하여 설정 화면을 띄우고 아래 그림과 같이 Android섹션에서 가장 아래의 Is Library 옵션을 체크해줍니다.



이제 빌드를 실행하여 프로젝트 내 bin 폴더에 unityplayerproxyactivity.jar 파일이 생성되면 성공입니다.



세 번째 단계

이클립스에서 다시 안드로이드 프로젝트를 생성합니다. 이번에는 새롭게 프로젝트를 생성하기를 선택하고 이름은 번들의 이름과 동일하게 지정합니다. 



그 다음에 안드로이드 앱의 목표 SDK 및 패키지 이름을 설정합니다. 

프로젝트가 생성되면 아래의 세 가지를 설정합니다.

1. 두 번째 단계에서 생성한 라이브러리 프로젝트의 참조

2. 유니티 라이브러리 추가

3. Asset 폴더 이동


먼저 , 프로젝트설정의 안드로이드로 가서 아래 그림과 같이 Add버튼을 통해 두 번째 단계에서 생성한 라이브러리 프로젝트를 참조하도록 설정합니다.



그 다음에는 Java Build Path로 가서 Add External Jar 버튼을 눌러 유니티가 설치된 폴더 아래에 위치한 classes.jar 파일을 선택하여 추가해줍니다.

( 설치경로/Editor/Data/PlaybackEngines/androidplayer/bin/에 위치 )



이제 마지막으로 아래에 위치한 라이브러리 프로젝트 내 assets 폴더의 bin, libs 폴더를 끌어다 새롭게 설정한 프로젝트의 assets 폴더로 드래그하여 이동합니다.

세 가지가 모두 설정된 프로젝트 구성의 전후를 비교하면 다음과 같습니다.




위와 같이 프로젝트의 설정이 완료되면 이제 두 가지를 추가해줍니다.

먼저 AndroidManifest.xml 파일에서 activity 태그에 아래 그림과 같이 config설정을 추가해줍니다.




설정이 완료되면 이제 유니티 액티비티를 실행할 자바 소스파일로 이동한후 onCreate 함수 내의 setContentView(R.layout.main); 항목을 제거하고 Activity 클래스를 UnityPlayerActivity로 변경한 후 Ctrl+Alt+O 키를 눌러 관련 패키지를 import 합니다.




설정이 완료되면 Run메뉴의 Run As > Android Application 을 선택하면 bin 폴더에 apk 파일이 생성되며, 자동으로 기기에 인스톨되어 실행됩니다.



우리는 아무것도 안했으므로 안드로이드 어플을 실행시, 유니티 로고가 뜬 후 파란 화면이 보이면 성공입니다. 

여기까지 이클립스에서 유니티 프로그램을 최종 런칭하는 방법을 구현해봤습니다.

다음 포스팅에는 이를 기반으로 유니티 C#클래스와 자바클래스간 통신에 대해 알아보겠습니다.


유니티 프로젝트 예제

이클립스 스테이징 프로젝트 예제

이클립스 프로젝트 예제