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

More Related Content

What's hot

Ogre3d 基礎
Ogre3d 基礎Ogre3d 基礎
Ogre3d 基礎
kw
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
devCAT Studio, NEXON
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Yuya Yamaki
 
Android JNI
Android JNIAndroid JNI
Android JNI
Siva Ramakrishna kv
 
Azure PlayFab Unity SDK vs C# SDK
Azure PlayFab Unity SDK vs C# SDK Azure PlayFab Unity SDK vs C# SDK
Azure PlayFab Unity SDK vs C# SDK
YutoNishine
 
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014devCAT Studio, NEXON
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅
Yoonsung Jung
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
강 민우
 
도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012
도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012
도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012
Woojin Do
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)MinGeun Park
 
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
Mikito Yoshiya
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
devCAT Studio, NEXON
 
ゲームエンジンとMVC
ゲームエンジンとMVCゲームエンジンとMVC
ゲームエンジンとMVCAimingStudy
 
C++ Builder 程式撰寫基礎 / C++ Builder Basic
C++ Builder 程式撰寫基礎 / C++ Builder Basic C++ Builder 程式撰寫基礎 / C++ Builder Basic
C++ Builder 程式撰寫基礎 / C++ Builder Basic
YKLee3434
 
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
UnityTechnologiesJapan002
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
m ishizaki
 
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
복연 이
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
TonyCms
 
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
日本マイクロソフト株式会社
 

What's hot (20)

Ogre3d 基礎
Ogre3d 基礎Ogre3d 基礎
Ogre3d 基礎
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
 
Android JNI
Android JNIAndroid JNI
Android JNI
 
Azure PlayFab Unity SDK vs C# SDK
Azure PlayFab Unity SDK vs C# SDK Azure PlayFab Unity SDK vs C# SDK
Azure PlayFab Unity SDK vs C# SDK
 
Borland C++Builder 入門課程
Borland C++Builder 入門課程Borland C++Builder 入門課程
Borland C++Builder 入門課程
 
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
 
자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅자바 웹프로젝트 개발환경 셋팅
자바 웹프로젝트 개발환경 셋팅
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
 
도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012
도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012
도우진&김영수, 게임잼 운영과 게이미피케이션, NDC2012
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
 
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
ゲームエンジンとMVC
ゲームエンジンとMVCゲームエンジンとMVC
ゲームエンジンとMVC
 
C++ Builder 程式撰寫基礎 / C++ Builder Basic
C++ Builder 程式撰寫基礎 / C++ Builder Basic C++ Builder 程式撰寫基礎 / C++ Builder Basic
C++ Builder 程式撰寫基礎 / C++ Builder Basic
 
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
 
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
 
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
 

Viewers also liked

[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
Daehee Kim
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010devCAT Studio, NEXON
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Park JoongSoo
 
Jenkins
JenkinsJenkins
Jenkins
Huey Park
 
유니티와 안드로이드의 연동
유니티와  안드로이드의 연동유니티와  안드로이드의 연동
유니티와 안드로이드의 연동
현욱 김
 
Architectural Library
Architectural LibraryArchitectural Library
Architectural Libraryguest2129fbe
 
안드로이드를 위한 Gradle 맛들이기
안드로이드를 위한 Gradle 맛들이기안드로이드를 위한 Gradle 맛들이기
안드로이드를 위한 Gradle 맛들이기
DongHwan Yu
 
유니티 Rpg게임배경 스타트업 첫번째자료
유니티 Rpg게임배경 스타트업 첫번째자료유니티 Rpg게임배경 스타트업 첫번째자료
유니티 Rpg게임배경 스타트업 첫번째자료
Je Lyoung Kim
 
Unity Valley
Unity ValleyUnity Valley
Unity Valley
Min-soo Park
 
Make a shooting game using unity
Make a shooting game using unityMake a shooting game using unity
Make a shooting game using unity
Hyunwoo Kim
 
디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해
Je Lyoung Kim
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
중선 곽
 
Unity 시작하기
Unity 시작하기Unity 시작하기
Unity 시작하기
Changwon National University
 
초급 개발자 탈출
초급 개발자 탈출초급 개발자 탈출
초급 개발자 탈출
JeongHun Byeon
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
Chris Ohk
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
중선 곽
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
Dae Kim
 

Viewers also liked (17)

[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
 
Jenkins
JenkinsJenkins
Jenkins
 
유니티와 안드로이드의 연동
유니티와  안드로이드의 연동유니티와  안드로이드의 연동
유니티와 안드로이드의 연동
 
Architectural Library
Architectural LibraryArchitectural Library
Architectural Library
 
안드로이드를 위한 Gradle 맛들이기
안드로이드를 위한 Gradle 맛들이기안드로이드를 위한 Gradle 맛들이기
안드로이드를 위한 Gradle 맛들이기
 
유니티 Rpg게임배경 스타트업 첫번째자료
유니티 Rpg게임배경 스타트업 첫번째자료유니티 Rpg게임배경 스타트업 첫번째자료
유니티 Rpg게임배경 스타트업 첫번째자료
 
Unity Valley
Unity ValleyUnity Valley
Unity Valley
 
Make a shooting game using unity
Make a shooting game using unityMake a shooting game using unity
Make a shooting game using unity
 
디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해디자이너를 위한 NGUI의 이해
디자이너를 위한 NGUI의 이해
 
젠킨스 설치 및 설정
젠킨스 설치 및 설정젠킨스 설치 및 설정
젠킨스 설치 및 설정
 
Unity 시작하기
Unity 시작하기Unity 시작하기
Unity 시작하기
 
초급 개발자 탈출
초급 개발자 탈출초급 개발자 탈출
초급 개발자 탈출
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
 

Similar to Jenkins with Unity3d & Android

17. cocos2d 기초
17. cocos2d  기초17. cocos2d  기초
17. cocos2d 기초
Sangon Lee
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
DONGSU KIM
 
Sencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-windowSencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-window
Byoung Do Ahn
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축Jaehoon Kim
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
iFunFactory Inc.
 
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)Donggi Hahm
 
Mago3 d 워크샵
Mago3 d 워크샵Mago3 d 워크샵
Mago3 d 워크샵
정대 천
 
mago3D 기술 워크샵 자료(한국어)
mago3D  기술 워크샵 자료(한국어)mago3D  기술 워크샵 자료(한국어)
mago3D 기술 워크샵 자료(한국어)
SANGHEE SHIN
 
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
Changhwan Yi
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
Sewon Ann
 
게임개발 Cocos2d-x 소프트웨어씽킹연구소
게임개발 Cocos2d-x 소프트웨어씽킹연구소게임개발 Cocos2d-x 소프트웨어씽킹연구소
게임개발 Cocos2d-x 소프트웨어씽킹연구소
swthinking
 
게임개발 Cocos2d-x : 소프트웨어씽킹연구소
게임개발 Cocos2d-x : 소프트웨어씽킹연구소게임개발 Cocos2d-x : 소프트웨어씽킹연구소
게임개발 Cocos2d-x : 소프트웨어씽킹연구소
SWTHINKING LAB
 
Java, android 스터티5
Java, android 스터티5Java, android 스터티5
Java, android 스터티5
Heejun Kim
 
App, VR 및 AR Unity 설정 준비
App, VR 및 AR Unity 설정 준비App, VR 및 AR Unity 설정 준비
App, VR 및 AR Unity 설정 준비
YoungHoKwak1
 
Ionic project guide
Ionic project guideIonic project guide
Ionic project guide
Jong Woo Rhee
 
NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습YoungSu Son
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
Kiyoung Moon
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
YEONG-CHEON YOU
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정
leejungwang
 

Similar to Jenkins with Unity3d & Android (20)

17. cocos2d 기초
17. cocos2d  기초17. cocos2d  기초
17. cocos2d 기초
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 
Sencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-windowSencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-window
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
[NDC2014] 친구들아 도와줘 - 다양한 툴을 이용해서 Cocos2d-x 생산성 높이기 (함동기)
 
Mago3 d 워크샵
Mago3 d 워크샵Mago3 d 워크샵
Mago3 d 워크샵
 
mago3D 기술 워크샵 자료(한국어)
mago3D  기술 워크샵 자료(한국어)mago3D  기술 워크샵 자료(한국어)
mago3D 기술 워크샵 자료(한국어)
 
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
게임개발 Cocos2d-x 소프트웨어씽킹연구소
게임개발 Cocos2d-x 소프트웨어씽킹연구소게임개발 Cocos2d-x 소프트웨어씽킹연구소
게임개발 Cocos2d-x 소프트웨어씽킹연구소
 
게임개발 Cocos2d-x : 소프트웨어씽킹연구소
게임개발 Cocos2d-x : 소프트웨어씽킹연구소게임개발 Cocos2d-x : 소프트웨어씽킹연구소
게임개발 Cocos2d-x : 소프트웨어씽킹연구소
 
Java, android 스터티5
Java, android 스터티5Java, android 스터티5
Java, android 스터티5
 
App, VR 및 AR Unity 설정 준비
App, VR 및 AR Unity 설정 준비App, VR 및 AR Unity 설정 준비
App, VR 및 AR Unity 설정 준비
 
Ionic project guide
Ionic project guideIonic project guide
Ionic project guide
 
NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정
 

Jenkins with Unity3d & Android

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