SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
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 파일 생성 완료.

Contenu connexe

Tendances

게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치Seungjae Lee
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2Chris Ohk
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기Kiyoung Moon
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術Unity Technologies Japan K.K.
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론Hyunjik Bae
 
190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁KWANGIL KIM
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxTonyCms
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁Yi-kwon Hwang
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012Esun Kim
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자TonyCms
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyunjaeyunjeong1
 
오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기용호 최
 
DirectStroage프로그래밍소개
DirectStroage프로그래밍소개DirectStroage프로그래밍소개
DirectStroage프로그래밍소개YEONG-CHEON YOU
 
이재훈 개발 포트폴리오.pdf
이재훈 개발 포트폴리오.pdf이재훈 개발 포트폴리오.pdf
이재훈 개발 포트폴리오.pdfjaehoon lee
 

Tendances (20)

게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
 
MRTK-Unreal(UX Tools) を利用した HoloLens 2 アプリ開発 | UNREAL FEST EXTREME 2020 WINTER
MRTK-Unreal(UX Tools) を利用した HoloLens 2 アプリ開発 | UNREAL FEST EXTREME 2020 WINTERMRTK-Unreal(UX Tools) を利用した HoloLens 2 アプリ開発 | UNREAL FEST EXTREME 2020 WINTER
MRTK-Unreal(UX Tools) を利用した HoloLens 2 アプリ開発 | UNREAL FEST EXTREME 2020 WINTER
 
190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기오래된 프로젝트에 Jenkins 적용해보기
오래된 프로젝트에 Jenkins 적용해보기
 
DirectStroage프로그래밍소개
DirectStroage프로그래밍소개DirectStroage프로그래밍소개
DirectStroage프로그래밍소개
 
이재훈 개발 포트폴리오.pdf
이재훈 개발 포트폴리오.pdf이재훈 개발 포트폴리오.pdf
이재훈 개발 포트폴리오.pdf
 

En vedette

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

En vedette (18)

[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
 
송창규, 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분이면 충분하다
 

Similaire à Jenkins with Unity3d & Android

17. cocos2d 기초
17. cocos2d  기초17. cocos2d  기초
17. cocos2d 기초Sangon Lee
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOSGiseok 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-windowByoung 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 LAB
 
게임개발 Cocos2d-x 소프트웨어씽킹연구소
게임개발 Cocos2d-x 소프트웨어씽킹연구소게임개발 Cocos2d-x 소프트웨어씽킹연구소
게임개발 Cocos2d-x 소프트웨어씽킹연구소swthinking
 
Java, android 스터티5
Java, android 스터티5Java, android 스터티5
Java, android 스터티5Heejun Kim
 
App, VR 및 AR Unity 설정 준비
App, VR 및 AR Unity 설정 준비App, VR 및 AR Unity 설정 준비
App, VR 및 AR Unity 설정 준비YoungHoKwak1
 
NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습YoungSu Son
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)YEONG-CHEON YOU
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정leejungwang
 

Similaire à Jenkins with Unity3d & Android (20)

17. cocos2d 기초
17. cocos2d  기초17. cocos2d  기초
17. cocos2d 기초
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOS
 
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 고등학생 창의체험 프로그래밍 실습
 
빌드관리 및 디버깅 (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 파일 생성 완료.