Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Jenkins with Unity3d & Android

3.937 Aufrufe

Veröffentlicht am

Android 기반의 게임 프로젝트를 오픈하면서 구축한 빌드 시스템을 간

략하게 소개합니다.

osx 기반에서 Jenkins를 이용하여 Unity3D와 Android Native

Code와 설정 방법에 대해 다루고 있습니다.

세부적인 코드보다는 전체적인 흐름에 초점을 맞췄으므로

참고용으로 보시기 바랍니다.

Veröffentlicht in: Software

Jenkins with Unity3d & Android

  1. 1. Jenkins with Unity3D & Android OSX 환경에서 Jenkins를 이용한 Unity3D와 Native Code의 연동
  2. 2. 목표 설정 ▪ Unity3D와 Jenkins를 이용해서 자동 빌드 시스템을 구축하자. ▪ Unity3D에서 export 되는 프로젝트도 Jenkins와 연동하자. ▪ AndroidManifest.xml에 기입될 versionName 책정도 Jenkins와 연동하자 . ▪ 할 수 있는 모든걸 다 자동화 하자.!
  3. 3. Jenkins 설치 ▪ https://Jenkins-ci.org 에서 Mac OSX 버전 다운로드 ▪ 기본 생성 되는 ‘Jenkins’ 계정은 사용하지 말자 ▪ Unity3D 빌드 연동시 WindowServer 시스템에 접근 할 수 없는 문제가 발생하여 Hang이 걸려버린다. ▪ 해당 문제를 해결하기 위한 방법이 여러 가지 있으나 여기선 ‘Jenkins’ 계정을 사용하지 않는 방법으로 진행하자. ▪ 설치 과정 중 오른쪽 이미지를 참고로 Customize 메뉴에서 Start at boot as “Jenkins”를 해제하자.
  4. 4. 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 으로 용도는 이따가 공개…
  5. 5. Unity3D Plugin 설정 ▪ 빌드 머신에 설치된 Unity3D에 대해 Jenkins에서 사용될 별칭을 지정하자. ▪ 여러 버전의 Unity3D를 설치해서 사용할 수 있다. ▪ ‘Jenkins 관리’ > ‘시스템 설정‘ 에서 설정 가능.
  6. 6. Jenkins Workspace 구조 ▪ Workspace 구조를 아래와 같이 설정 (어디까지나 저희 기준.) build - 빌드 결과물(apk) 파일 생성 위치 builder - ant 기반의 빌드 설정 파일 src - 실제 project 소스 versioning - application 버전 갱신 스크립트
  7. 7. Jenkins Workspace 구조 ▪ src/native_android ▪ 연동 대상이 되는 Android Library 및 외부 프로젝트 위치. ▪ Unity3D에서 export 되는 Project 또한 위치함. ▪ src/temp_android ▪ Unity3D 빌드 진행시 생성되는 임시 디렉토리. ▪ Asset Data 생성 후 src/native_android/wtrio로 복사. ▪ src/unity ▪ 실제 Unity3D 기반 코드 위치.
  8. 8. 여기까지 짚고 넘어가자. ▪ Unity3D로 Export 한 Project를 기반으로 기본적으로 추가해야 되는 코드(Google Billing Service 등)를 추가한 후 해당 Project를 svn에 등록 ▪ 여기선 native_android/wtrio ▪ 최초 한번만 등록하면 된다. 이후는 Unity3D Export되는 파일들을 그대로 덮어쓰면 된다. ▪ Environment Injector Plugin은 어따 쓰지? ▪ Unity3D Export 대상 Path를 지정할 때 사용.
  9. 9. 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를 만들어서 사용
  10. 10. Android 기본 설정 ▪ 연동 대상 Android Project ▪ appcompat_v7 ▪ google-play-service_lib ▪ wtrio ▪ 실제 제품 ▪ Unity3D에서 Export된 결과물
  11. 11. 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
  12. 12. Jenkins Item 생성 ▪ Jenkins 좌측 메뉴의 ‘새로운 Item’ 선택 ▪ Item 이름에 대상 Project 이름 입력 ▪ Freestyle project 선택
  13. 13. Jenkins 설정 ▪ Build Paramater 설정 ▪ Application 버전 정보를 입력 받아 적용하기 위해 사용 ▪ 변수 이름은 ‘VERSION’ 으로 설정 ▪ 설정된 변수는 환경 변수로 취급됨 환경변수 설정 화면 설정 후 생성된 메뉴와 사용 화면
  14. 14. Jenkins 설정 ▪ SubVersion 설정 ▪ 관련된 Project 정보 등록
  15. 15. Jenkins 설정 ▪ Environment Injector ▪ Unity3D 빌드 후 Export 대상 경로를 내부적으로 지정하기 위해 사용
  16. 16. 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 까지 처리
  17. 17. Jenkins Build Step 설정 ▪ Unity3D Version 정보 파일 생성 ▪ UNITY_EXPORT_PATH 환경 변 수 설정
  18. 18. Jenkins Build Step 설정 ▪ Unity3D 빌드 스크립트 호출 ▪ Android Versioning ▪ Android Build
  19. 19. Jenkins 최종 결과 ▪ APK 파일 생성 완료.

×