jenkins with unity3d & android

19
Jenkins with Unity3D & Android OSX 환경에서 Jenkins를 이용한 Unity3D와 Native Code의 연동

Upload: -

Post on 21-Aug-2015

211 views

Category:

Software


11 download

TRANSCRIPT

Page 1: Jenkins with Unity3d & Android

Jenkins with Unity3D & Android

OSX 환경에서 Jenkins를 이용한 Unity3D와 Native Code의 연동

Page 2: Jenkins with Unity3d & Android

목표설정

▪ Unity3D와 Jenkins를이용해서자동빌드시스템을구축하자.

▪ Unity3D에서 export되는프로젝트도 Jenkins와연동하자.

▪ AndroidManifest.xml에 기입될 versionName책정도 Jenkins와연동하자 .

▪ 할수있는모든걸다자동화하자.!

Page 3: Jenkins with Unity3d & Android

Jenkins 설치

▪ https://Jenkins-ci.org 에서 Mac OSX 버전 다운로드

▪ 기본 생성 되는 ‘Jenkins’ 계정은 사용하지 말자

▪ Unity3D 빌드 연동시 WindowServer 시스템에 접근할 수 없는 문제가 발생하여 Hang이 걸려버린다.

▪ 해당 문제를 해결하기 위한 방법이 여러 가지 있으나여기선 ‘Jenkins’ 계정을 사용하지 않는 방법으로 진행하자.

▪ 설치 과정 중 오른쪽 이미지를 참고로 Customize 메뉴에서Start at boot as “Jenkins”를 해제하자.

Page 4: Jenkins with Unity3d & Android

Jenkins Plugin 설치

▪ 우리를도와줄 Plugin을 설치하자

▪ Unity3d Builder

▪ https://wiki.jenkins-ci.org/display/JENKINS/Unity3dBuilder+Plugin

▪ Subversion

▪ https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin

▪ Environment Injector

▪ https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin

▪ 지정된환경변수에값을설정해주는 Plugin 으로용도는이따가공개…

Page 5: Jenkins with Unity3d & Android

Unity3D Plugin 설정

▪ 빌드머신에설치된 Unity3D에 대해 Jenkins에서사용될별칭을지정하자.

▪ 여러버전의 Unity3D를설치해서사용할수있다.

▪ ‘Jenkins 관리’ > ‘시스템설정‘ 에서설정가능.

Page 6: Jenkins with Unity3d & Android

Jenkins Workspace 구조

▪ Workspace 구조를아래와같이설정 (어디까지나저희기준.)

build -빌드결과물(apk) 파일생성위치

builder- ant 기반의빌드설정파일

src

-실제 project 소스

versioning

- application 버전갱신스크립트

Page 7: Jenkins with Unity3d & Android

Jenkins Workspace 구조

▪ src/native_android

▪ 연동대상이되는 Android Library 및외부프로젝트위치.

▪ Unity3D에서 export 되는 Project 또한위치함.

▪ src/temp_android

▪ Unity3D 빌드진행시생성되는임시디렉토리.

▪ Asset Data 생성후 src/native_android/wtrio로복사.

▪ src/unity

▪ 실제 Unity3D 기반코드위치.

Page 8: Jenkins with Unity3d & Android

여기까지짚고넘어가자.

▪ Unity3D로 Export 한 Project를기반으로기본적으로추가해야되는코드(Google Billing Service 등)를추가한후해당 Project를 svn에등록

▪ 여기선 native_android/wtrio

▪ 최초한번만등록하면된다. 이후는 Unity3D Export되는파일들을그대로덮어쓰면된다.

▪ Environment Injector Plugin은어따쓰지?

▪ Unity3D Export 대상 Path를지정할때사용.

Page 9: Jenkins with Unity3d & Android

Android 기본설정

▪ Unity3D에서 Export된 Project와 Native Code 연동이목표

▪ 기본설치대상

▪ ANT

▪ Android SDK

▪ Unity3D에서 Android Platform으로빌드하기위한빌드스크립트준비

▪ http://docs.unity3d.com/ScriptReference/BuildPipeline.html

▪ http://docs.unity3d.com/Manual/CommandLineArguments.html

▪ 우린 ergBuild.cs에 BuildClient method를만들어서사용

Page 10: Jenkins with Unity3d & Android

Android 기본설정

▪ 연동대상 Android Project

▪ appcompat_v7

▪ google-play-service_lib

▪ wtrio

▪ 실제제품

▪ Unity3D에서 Export된결과물

Page 11: Jenkins with Unity3d & Android

Android 기본설정

▪ Library 대상 Project 빌드설정파일생성

▪ appcompat_v7, google-play-services_lib각각의위치에서아래명령어실행

▪ android update lib-project –t [API LEVEL] –p .

▪ build.xml, project.properties 생성됨

▪ 생성된 project.properties를열어아래의구문추가

▪ android.library = true

Page 12: Jenkins with Unity3d & Android

Jenkins Item 생성

▪ Jenkins 좌측메뉴의 ‘새로운 Item’ 선택

▪ Item 이름에대상 Project 이름입력

▪ Freestyle project 선택

Page 13: Jenkins with Unity3d & Android

Jenkins 설정

▪ Build Paramater설정

▪ Application 버전정보를입력받아적용하기위해사용

▪ 변수이름은 ‘VERSION’ 으로설정

▪ 설정된변수는환경변수로취급됨

환경변수설정화면 설정후생성된메뉴와사용화면

Page 14: Jenkins with Unity3d & Android

Jenkins 설정

▪ SubVersion 설정

▪ 관련된 Project 정보등록

Page 15: Jenkins with Unity3d & Android

Jenkins 설정

▪ Environment Injector

▪ Unity3D 빌드후 Export 대상경로를내부적으로지정하기위해사용

Page 16: Jenkins with Unity3d & Android

Jenkins Build Step 설정

▪ 5단계로 Build Step이 구성됨

1. Unity3D Version 정보파일생성

▪ Unity3D에서사용할 Version.cs생성

▪ AndroidManifest.xml에서사용될 version.xml 생성

2. UNITY_EXPORT_PATH 환경변수설정

3. Unity3D 빌드스크립트호출

4. Android Application에서사용될 version.xml 생성및 AndroidManifest.xml의versionName필드갱신

5. Android 빌드실행

▪ 내부적으로 signing 까지처리

Page 17: Jenkins with Unity3d & Android

Jenkins Build Step 설정

▪ Unity3D Version 정보파일생성

▪ UNITY_EXPORT_PATH 환경변수설정

Page 18: Jenkins with Unity3d & Android

Jenkins Build Step 설정

▪ Unity3D 빌드스크립트호출

▪ Android Versioning

▪ Android Build

Page 19: Jenkins with Unity3d & Android

Jenkins 최종결과

▪ APK 파일생성완료.