SlideShare a Scribd company logo
1 of 35
Download to read offline
그레이들 레시피
유동환
RealTime 세미나 3
세미나 커리큘럼
확인하기 ›››
2017년 4월 27일 / 한빛미디어 1층 세미나실
Page 2
강사 소개
유동환
1.
2.
3.
4.
취미는 글쓰기(브런치) & 책읽기(2주한권독서클럽)5.
“책쓰는 프로그래머 협회” 대표 운영진,
“자바카페” 및 “한국 자바 개발자 협의회(JCO)”에서 활동했음
안드로이드 앱 개발자
<안드로이드를 위한 그레이들>(2016) 집필
<그레이들 레시피>(2016), <Professional Java Web Services>(2002) 번역
6.
주 언어는 자바
Page 3
목차
안드로이드 빌드 시스템 그레이들 실무를 위하여
1.
2.
3.
4.
라이브러리 모듈5.
테스트
그레이들 및 안드로이드 스튜디오 소개
저장소와 APK 서명
빌드 타입과 제품 특성
6.
외부 라이브러리 추가
RealTime 세미나 3
세미나 커리큘럼
확인하기 ›››
Page 4
4강
빌드 타입과 제품 특성
RealTime 세미나 3
Page 5
4강에서 배우는 내용
4.1 빌드 타입 이해하기
4.2 제품 특성과 빌드 변형
4.3 제품 특성에 따라 리소스 병합하기
4.4 자바 소스 코드 병합하기
4강 학습목표
▶ 빌드 타입과 제품 특성을 구별할 수 있다.
▶ 내 프로젝트에 제품 변형(빌드 타입 + 제품 특성)을 적용해볼 수 있다.
▶ 제품 변형을 활용하여 고객 요구 사항에 맞게 이미지 등의 리소스를 다르게 할 수
있다.
▶ 제품 변형을 활용하여 고객 요구 사항에 맞게 소스 코드의 일부를 다르게 할 수 있
다.
Page 6
4.1 빌드 타입 이해하기
▶ 문제
› 디버그와 릴리즈 빌드 타입을 정의하고 필요한 경우 새로운 타입을 만들고 싶다.
▶ 해결
› 모듈 build.gradle 파일의 android 하위의 buildTypes 블록을 설정한다.
Page 7
4.1 빌드 타입 이해하기
▶ 빌드 타입 기본 값
› release 타입
• Proguard 적용 FALSE
Page 8
예제: ch01/MyAndroidApp
4.1 빌드 타입 이해하기
▶ 모듈 build.gradle 파일의 buildTypes 블록
› debug
• applicationIdSuffix : 패키지 명에 접미사 추가
• versionNameSuffix : 버전 이름에 접미사 추가
Page 9
실습: ch03/MyAndroidApp
4.1 빌드 타입 이해하기
▶ 모듈 build.gradle 파일의 buildTypes 블록
› release
• minifyEnabled : ProGuard(역컴파일방지) 적용
• shrinkResources : 불필요한 리소스 제거 (+minifyEnabled : true 필요)
Page 10
실습: ch03/MyAndroidApp
4.1 빌드 타입 이해하기
▶ 확인하기
› ./gradlew :app:assemble
› ls app/build/outputs/apk
Page 11
실습: ch03/MyAndroidApp
4.1 빌드 타입 이해하기
▶ 확인하기 (aapt 확인)
Page 12
실습: ch03/MyAndroidApp
4.1 빌드 타입 이해하기
▶ 확인하기 (aapt 확인)
› aapt d badging app-debug.apk
› aapt d badging app-release-unsigned.apk
› applicationId가 다르므로 두 APK를 한 기기에 설치 가능
Page 13
실습: ch03/MyAndroidApp
4.2 제품 특성과 빌드 변형
▶ 문제
› 본질적으로 같은 애플리케이션이지만, 상황에 맞게 리소스나 소스 코드를 다르게 하고 싶다.
▶ 해결
› 제품 특성을 활용하여 같은 애플리케이션을 상황에 맞는 다른 버전으로 생성한다.
Page 14
4.2 제품 특성과 빌드 변형
▶ 제품 특성 정의하기
› android > productFlavors 블록
› 오만한 (arrogant)
› 친절한 (friendly)
› 아부하는
(obsequious)
Page 15
실습: ch03/HelloWorld
4.2 제품 특성과 빌드 변형
▶ 제품 특성 정의하기 (빌드속성)
› applicationId : package name
› minSdkVersion
› targetSdkVersion
› versionCode
› versionName
› signingConfig
Page 16
실습: ch03/HelloWorld
4.2 제품 특성과 빌드 변형
▶ 제품 특성별 리소스 정의하기
› arrogant
› friendly
› obsequious
▶ 리소스
› animal.png
› strings.xml
▶ main 이 기본임
Page 17
실습: ch03/HelloWorld
 Project View
4.2 제품 특성과 빌드 변형
▶ 제품 특성별 소스 코드 정의하기
› app/src/arrogant/java
› app/src/friendly/java
› app/src/obsequious/java
▶ main 이 기본임
› app/src/main/java
Page 18
실습: ch03/HelloWorld
4.2 제품 특성과 빌드 변형
▶ 사용 가능한 빌드 변형을 모두 출력하는
사용자 정의 태스크
Page 19
실습: ch03/HelloWorld
4.2 제품 특성과 빌드 변형
▶ 안드로이드 스튜디오의
Build Variants 뷰
Page 20
실습: ch03/HelloWorld
4.3 제품 특성에 맞는 리소스 병합하기
▶ 문제
› 제품 특성에 맞게 이미지와 텍스트, 다른 리소스를 변경하고 싶다.
▶ 해결
› 제품 특성에 맞는 리소스 디렉터리를 추가하여 필요한 파일을 복사하고 적절한 값으로 변경한다.
Page 21
4.3 제품 특성에 맞는 리소스 병합하기
▶ 제품 특성 정의하기
› applicationId를 다르게 함
Page 22
실습: ch03/HelloWorld
4.3 제품 특성에 맞는 리소스 병합하기
▶ MainActivity 클래스 소스 코드
Page 23
실습: ch03/HelloWorld
4.3 제품 특성에 맞는 리소스 병합하기
▶ activity_main.xml 레이아웃 파일
Page 24
실습: ch03/HelloWorld
4.3 제품 특성에 맞는 리소스 병합하기
▶ arrogant(Stark) 제품특성으로
애플리케이션 실행하기
Page 25
실습: ch03/HelloWorld
4.3 제품 특성에 맞는 리소스 병합하기
▶ WelcomeActivity 클래스
▶ activity_welcome.xml 레이아웃
Page 26
실습: ch03/HelloWorld
4.4 자바 소스 코드 병합하기
▶ 문제
› 제품 특성별로 액티비티나 자바 클래스와 같은 소스 코드를 다르게 하고 싶다.
▶ 해결
› 적절한 소스 디렉터리를 추가하고 main 소스 세트와 병합할 수 있게 구성한다.
Page 27
사용할 때 주의해야 하며 권장사항은 아님!!
4.4 자바 소스 코드 병합하기
▶ main, stark, wayne 제품 특성을 위한
소스 디렉터리
▶ 왜 이렇게 복잡해보일까?
Page 28
실습: ch03/HelloWorld
4.4 자바 소스 코드 병합하기
▶ arrogantStark
▶ friendlyWayne
Page 29
실습: ch03/HelloWorld
4.4 자바 소스 코드 병합하기
▶ Stark > activity_call_for_help.xml
▶ Wayne > activity_call_for_help.xml
실습: ch03/HelloWorld
4.4 자바 소스 코드 병합하기
▶ Stark > CallForHelpActivityFragment.java 실습: ch03/HelloWorld
4.4 자바 소스 코드 병합하기
▶ Wayne > CallForHelpActivityFragment.java실습: ch03/HelloWorld
4.4 자바 소스 코드 병합하기
▶ 생각해보기
1. 만약에 main에 CallForHelpAcitivityFragment.java 파일을 넣으면 어떻게 될까?
2. CallForHelpActivity.java는 Stark와 Wayne이 동일하다
만약 main으로 이동하면 어떻게 될까?
3. 실무에서는 어떻게 활용할 수 있을까?
실습: ch03/HelloWorld
강연 + 실습, 그레이들 레시피 제대로 알려드립니다!
세미나 커리큘럼
확인하기 ›››
http://www.hanbit.co.kr/store/education/edu_view.html?p_code=S9897423756
세미나 커리큘럼
확인하기 ›››
http://www.hanbit.co.kr/store/education/edu_view.html?p_code=S9897423756
그레이들 레시피
RealTime 세미나 3
2017년 4월 27일, 한빛미디어 1층 세미나실에서 만나요!

More Related Content

What's hot

그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수Yeon Soo Kim
 
안드로이드 빌드 with Gradle
안드로이드 빌드 with Gradle안드로이드 빌드 with Gradle
안드로이드 빌드 with Gradlehaesunglee5
 
그루비로 안드로이드 앱 개발하기
그루비로 안드로이드 앱 개발하기그루비로 안드로이드 앱 개발하기
그루비로 안드로이드 앱 개발하기Sangkyoon Nam
 
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java ProjectJi-Woong Choi
 
[세미나] 20160520 Gradle
[세미나] 20160520 Gradle[세미나] 20160520 Gradle
[세미나] 20160520 GradleSanghoon Yoon
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App DevelopmentChi Hwan Choi
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드NAVER Engineering
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.장현 한
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodedpTablo
 
Angular Seminar [한빛미디어 리얼타임 세미나]
Angular Seminar [한빛미디어 리얼타임 세미나]Angular Seminar [한빛미디어 리얼타임 세미나]
Angular Seminar [한빛미디어 리얼타임 세미나]Woojin Joe
 
Angular 기본 개념 잡기
Angular 기본 개념 잡기Angular 기본 개념 잡기
Angular 기본 개념 잡기장현 한
 
[자바카페] 미니 세미나 ProGuard
[자바카페] 미니 세미나 ProGuard[자바카페] 미니 세미나 ProGuard
[자바카페] 미니 세미나 ProGuardChi Hwan Choi
 
Enterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategyEnterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategySukjin Yun
 
양파지기 - Ant, Maven, Gradle
양파지기 - Ant, Maven, Gradle양파지기 - Ant, Maven, Gradle
양파지기 - Ant, Maven, Gradleyong geun Kwon
 
Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.ChangHyeon Bae
 
웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁WebFrameworks
 

What's hot (18)

그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수
 
안드로이드 빌드 with Gradle
안드로이드 빌드 with Gradle안드로이드 빌드 with Gradle
안드로이드 빌드 with Gradle
 
그루비로 안드로이드 앱 개발하기
그루비로 안드로이드 앱 개발하기그루비로 안드로이드 앱 개발하기
그루비로 안드로이드 앱 개발하기
 
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
 
[세미나] 20160520 Gradle
[세미나] 20160520 Gradle[세미나] 20160520 Gradle
[세미나] 20160520 Gradle
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App Development
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
 
Gradle 소개
Gradle 소개Gradle 소개
Gradle 소개
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
 
Angular Seminar [한빛미디어 리얼타임 세미나]
Angular Seminar [한빛미디어 리얼타임 세미나]Angular Seminar [한빛미디어 리얼타임 세미나]
Angular Seminar [한빛미디어 리얼타임 세미나]
 
Angular 기본 개념 잡기
Angular 기본 개념 잡기Angular 기본 개념 잡기
Angular 기본 개념 잡기
 
Android QA Process
Android QA ProcessAndroid QA Process
Android QA Process
 
[자바카페] 미니 세미나 ProGuard
[자바카페] 미니 세미나 ProGuard[자바카페] 미니 세미나 ProGuard
[자바카페] 미니 세미나 ProGuard
 
Enterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategyEnterprise Java web Deployment Strategy
Enterprise Java web Deployment Strategy
 
양파지기 - Ant, Maven, Gradle
양파지기 - Ant, Maven, Gradle양파지기 - Ant, Maven, Gradle
양파지기 - Ant, Maven, Gradle
 
Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.
 
웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁
 

Similar to 그레이들(Gradle)로 만드는 안드로이드 요리법

오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료지원 정
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반arundine
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디소라 정
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxssuser2601f7
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf정민 안
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Dong Chan Shin
 
구글 앱 엔진의 활용(Google App Engine) 2부
구글 앱 엔진의 활용(Google App Engine) 2부구글 앱 엔진의 활용(Google App Engine) 2부
구글 앱 엔진의 활용(Google App Engine) 2부mosaicnet
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdfssuserb942d2
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptxssuserf875e6
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기Seokjae Lee
 
iinn studio for jQWidgets by iinnsoft
iinn studio for jQWidgets by iinnsoftiinn studio for jQWidgets by iinnsoft
iinn studio for jQWidgets by iinnsoftJeongWook Eom
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다이상한모임
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyunjaeyunjeong1
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강uEngine Solutions
 
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0Beomsik Kyle Kim
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화Jaehoon Choi
 
The Cucumber for Java
The Cucumber for JavaThe Cucumber for Java
The Cucumber for JavaJonghwa Lee
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1YoungSu Son
 

Similar to 그레이들(Gradle)로 만드는 안드로이드 요리법 (20)

오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptx
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
 
구글 앱 엔진의 활용(Google App Engine) 2부
구글 앱 엔진의 활용(Google App Engine) 2부구글 앱 엔진의 활용(Google App Engine) 2부
구글 앱 엔진의 활용(Google App Engine) 2부
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
 
iinn studio for jQWidgets by iinnsoft
iinn studio for jQWidgets by iinnsoftiinn studio for jQWidgets by iinnsoft
iinn studio for jQWidgets by iinnsoft
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
 
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
The Cucumber for Java
The Cucumber for JavaThe Cucumber for Java
The Cucumber for Java
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 

More from 양 한빛

파이썬 날코딩으로 알고 짜는 딥러닝_15장
파이썬 날코딩으로 알고 짜는 딥러닝_15장파이썬 날코딩으로 알고 짜는 딥러닝_15장
파이썬 날코딩으로 알고 짜는 딥러닝_15장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_14장
파이썬 날코딩으로 알고 짜는 딥러닝_14장파이썬 날코딩으로 알고 짜는 딥러닝_14장
파이썬 날코딩으로 알고 짜는 딥러닝_14장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_13장
파이썬 날코딩으로 알고 짜는 딥러닝_13장파이썬 날코딩으로 알고 짜는 딥러닝_13장
파이썬 날코딩으로 알고 짜는 딥러닝_13장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_12장
파이썬 날코딩으로 알고 짜는 딥러닝_12장파이썬 날코딩으로 알고 짜는 딥러닝_12장
파이썬 날코딩으로 알고 짜는 딥러닝_12장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_10장
파이썬 날코딩으로 알고 짜는 딥러닝_10장파이썬 날코딩으로 알고 짜는 딥러닝_10장
파이썬 날코딩으로 알고 짜는 딥러닝_10장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_9장
파이썬 날코딩으로 알고 짜는 딥러닝_9장파이썬 날코딩으로 알고 짜는 딥러닝_9장
파이썬 날코딩으로 알고 짜는 딥러닝_9장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_5장
파이썬 날코딩으로 알고 짜는 딥러닝_5장파이썬 날코딩으로 알고 짜는 딥러닝_5장
파이썬 날코딩으로 알고 짜는 딥러닝_5장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_11장
파이썬 날코딩으로 알고 짜는 딥러닝_11장파이썬 날코딩으로 알고 짜는 딥러닝_11장
파이썬 날코딩으로 알고 짜는 딥러닝_11장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_8장
파이썬 날코딩으로 알고 짜는 딥러닝_8장파이썬 날코딩으로 알고 짜는 딥러닝_8장
파이썬 날코딩으로 알고 짜는 딥러닝_8장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_7장
파이썬 날코딩으로 알고 짜는 딥러닝_7장파이썬 날코딩으로 알고 짜는 딥러닝_7장
파이썬 날코딩으로 알고 짜는 딥러닝_7장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_6장
파이썬 날코딩으로 알고 짜는 딥러닝_6장파이썬 날코딩으로 알고 짜는 딥러닝_6장
파이썬 날코딩으로 알고 짜는 딥러닝_6장양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_4장
파이썬 날코딩으로 알고 짜는 딥러닝_4장파이썬 날코딩으로 알고 짜는 딥러닝_4장
파이썬 날코딩으로 알고 짜는 딥러닝_4장양 한빛
 
미리보기 파이썬 날코딩으로 알고 짜는 딥러닝
 미리보기 파이썬 날코딩으로 알고 짜는 딥러닝 미리보기 파이썬 날코딩으로 알고 짜는 딥러닝
미리보기 파이썬 날코딩으로 알고 짜는 딥러닝양 한빛
 
파이썬 날코딩으로 알고 짜는 딥러닝_2장
파이썬 날코딩으로 알고 짜는 딥러닝_2장파이썬 날코딩으로 알고 짜는 딥러닝_2장
파이썬 날코딩으로 알고 짜는 딥러닝_2장양 한빛
 
파이썬 날코딩으로 알고짜는 딥러닝_1장_회귀분석
파이썬 날코딩으로 알고짜는 딥러닝_1장_회귀분석 파이썬 날코딩으로 알고짜는 딥러닝_1장_회귀분석
파이썬 날코딩으로 알고짜는 딥러닝_1장_회귀분석 양 한빛
 
RealTime Talk #3 스케치 빠르게 배워 똑똑하게 쓰기
RealTime Talk #3  스케치 빠르게 배워 똑똑하게 쓰기 RealTime Talk #3  스케치 빠르게 배워 똑똑하게 쓰기
RealTime Talk #3 스케치 빠르게 배워 똑똑하게 쓰기 양 한빛
 
실무자가 말하는 모의해킹
실무자가 말하는 모의해킹실무자가 말하는 모의해킹
실무자가 말하는 모의해킹양 한빛
 
비즈니스블록체인
비즈니스블록체인 비즈니스블록체인
비즈니스블록체인 양 한빛
 
앵귤러 첫걸음(Angular for beginers)
앵귤러 첫걸음(Angular for beginers)앵귤러 첫걸음(Angular for beginers)
앵귤러 첫걸음(Angular for beginers)양 한빛
 
직접 설계하고 만드는 Io t 백신 초급(한빛미디어) _맛보기
직접 설계하고 만드는 Io t 백신 초급(한빛미디어) _맛보기직접 설계하고 만드는 Io t 백신 초급(한빛미디어) _맛보기
직접 설계하고 만드는 Io t 백신 초급(한빛미디어) _맛보기양 한빛
 

More from 양 한빛 (20)

파이썬 날코딩으로 알고 짜는 딥러닝_15장
파이썬 날코딩으로 알고 짜는 딥러닝_15장파이썬 날코딩으로 알고 짜는 딥러닝_15장
파이썬 날코딩으로 알고 짜는 딥러닝_15장
 
파이썬 날코딩으로 알고 짜는 딥러닝_14장
파이썬 날코딩으로 알고 짜는 딥러닝_14장파이썬 날코딩으로 알고 짜는 딥러닝_14장
파이썬 날코딩으로 알고 짜는 딥러닝_14장
 
파이썬 날코딩으로 알고 짜는 딥러닝_13장
파이썬 날코딩으로 알고 짜는 딥러닝_13장파이썬 날코딩으로 알고 짜는 딥러닝_13장
파이썬 날코딩으로 알고 짜는 딥러닝_13장
 
파이썬 날코딩으로 알고 짜는 딥러닝_12장
파이썬 날코딩으로 알고 짜는 딥러닝_12장파이썬 날코딩으로 알고 짜는 딥러닝_12장
파이썬 날코딩으로 알고 짜는 딥러닝_12장
 
파이썬 날코딩으로 알고 짜는 딥러닝_10장
파이썬 날코딩으로 알고 짜는 딥러닝_10장파이썬 날코딩으로 알고 짜는 딥러닝_10장
파이썬 날코딩으로 알고 짜는 딥러닝_10장
 
파이썬 날코딩으로 알고 짜는 딥러닝_9장
파이썬 날코딩으로 알고 짜는 딥러닝_9장파이썬 날코딩으로 알고 짜는 딥러닝_9장
파이썬 날코딩으로 알고 짜는 딥러닝_9장
 
파이썬 날코딩으로 알고 짜는 딥러닝_5장
파이썬 날코딩으로 알고 짜는 딥러닝_5장파이썬 날코딩으로 알고 짜는 딥러닝_5장
파이썬 날코딩으로 알고 짜는 딥러닝_5장
 
파이썬 날코딩으로 알고 짜는 딥러닝_11장
파이썬 날코딩으로 알고 짜는 딥러닝_11장파이썬 날코딩으로 알고 짜는 딥러닝_11장
파이썬 날코딩으로 알고 짜는 딥러닝_11장
 
파이썬 날코딩으로 알고 짜는 딥러닝_8장
파이썬 날코딩으로 알고 짜는 딥러닝_8장파이썬 날코딩으로 알고 짜는 딥러닝_8장
파이썬 날코딩으로 알고 짜는 딥러닝_8장
 
파이썬 날코딩으로 알고 짜는 딥러닝_7장
파이썬 날코딩으로 알고 짜는 딥러닝_7장파이썬 날코딩으로 알고 짜는 딥러닝_7장
파이썬 날코딩으로 알고 짜는 딥러닝_7장
 
파이썬 날코딩으로 알고 짜는 딥러닝_6장
파이썬 날코딩으로 알고 짜는 딥러닝_6장파이썬 날코딩으로 알고 짜는 딥러닝_6장
파이썬 날코딩으로 알고 짜는 딥러닝_6장
 
파이썬 날코딩으로 알고 짜는 딥러닝_4장
파이썬 날코딩으로 알고 짜는 딥러닝_4장파이썬 날코딩으로 알고 짜는 딥러닝_4장
파이썬 날코딩으로 알고 짜는 딥러닝_4장
 
미리보기 파이썬 날코딩으로 알고 짜는 딥러닝
 미리보기 파이썬 날코딩으로 알고 짜는 딥러닝 미리보기 파이썬 날코딩으로 알고 짜는 딥러닝
미리보기 파이썬 날코딩으로 알고 짜는 딥러닝
 
파이썬 날코딩으로 알고 짜는 딥러닝_2장
파이썬 날코딩으로 알고 짜는 딥러닝_2장파이썬 날코딩으로 알고 짜는 딥러닝_2장
파이썬 날코딩으로 알고 짜는 딥러닝_2장
 
파이썬 날코딩으로 알고짜는 딥러닝_1장_회귀분석
파이썬 날코딩으로 알고짜는 딥러닝_1장_회귀분석 파이썬 날코딩으로 알고짜는 딥러닝_1장_회귀분석
파이썬 날코딩으로 알고짜는 딥러닝_1장_회귀분석
 
RealTime Talk #3 스케치 빠르게 배워 똑똑하게 쓰기
RealTime Talk #3  스케치 빠르게 배워 똑똑하게 쓰기 RealTime Talk #3  스케치 빠르게 배워 똑똑하게 쓰기
RealTime Talk #3 스케치 빠르게 배워 똑똑하게 쓰기
 
실무자가 말하는 모의해킹
실무자가 말하는 모의해킹실무자가 말하는 모의해킹
실무자가 말하는 모의해킹
 
비즈니스블록체인
비즈니스블록체인 비즈니스블록체인
비즈니스블록체인
 
앵귤러 첫걸음(Angular for beginers)
앵귤러 첫걸음(Angular for beginers)앵귤러 첫걸음(Angular for beginers)
앵귤러 첫걸음(Angular for beginers)
 
직접 설계하고 만드는 Io t 백신 초급(한빛미디어) _맛보기
직접 설계하고 만드는 Io t 백신 초급(한빛미디어) _맛보기직접 설계하고 만드는 Io t 백신 초급(한빛미디어) _맛보기
직접 설계하고 만드는 Io t 백신 초급(한빛미디어) _맛보기
 

그레이들(Gradle)로 만드는 안드로이드 요리법

  • 1. 그레이들 레시피 유동환 RealTime 세미나 3 세미나 커리큘럼 확인하기 ››› 2017년 4월 27일 / 한빛미디어 1층 세미나실
  • 2. Page 2 강사 소개 유동환 1. 2. 3. 4. 취미는 글쓰기(브런치) & 책읽기(2주한권독서클럽)5. “책쓰는 프로그래머 협회” 대표 운영진, “자바카페” 및 “한국 자바 개발자 협의회(JCO)”에서 활동했음 안드로이드 앱 개발자 <안드로이드를 위한 그레이들>(2016) 집필 <그레이들 레시피>(2016), <Professional Java Web Services>(2002) 번역 6. 주 언어는 자바
  • 3. Page 3 목차 안드로이드 빌드 시스템 그레이들 실무를 위하여 1. 2. 3. 4. 라이브러리 모듈5. 테스트 그레이들 및 안드로이드 스튜디오 소개 저장소와 APK 서명 빌드 타입과 제품 특성 6. 외부 라이브러리 추가 RealTime 세미나 3 세미나 커리큘럼 확인하기 ›››
  • 4. Page 4 4강 빌드 타입과 제품 특성 RealTime 세미나 3
  • 5. Page 5 4강에서 배우는 내용 4.1 빌드 타입 이해하기 4.2 제품 특성과 빌드 변형 4.3 제품 특성에 따라 리소스 병합하기 4.4 자바 소스 코드 병합하기
  • 6. 4강 학습목표 ▶ 빌드 타입과 제품 특성을 구별할 수 있다. ▶ 내 프로젝트에 제품 변형(빌드 타입 + 제품 특성)을 적용해볼 수 있다. ▶ 제품 변형을 활용하여 고객 요구 사항에 맞게 이미지 등의 리소스를 다르게 할 수 있다. ▶ 제품 변형을 활용하여 고객 요구 사항에 맞게 소스 코드의 일부를 다르게 할 수 있 다. Page 6
  • 7. 4.1 빌드 타입 이해하기 ▶ 문제 › 디버그와 릴리즈 빌드 타입을 정의하고 필요한 경우 새로운 타입을 만들고 싶다. ▶ 해결 › 모듈 build.gradle 파일의 android 하위의 buildTypes 블록을 설정한다. Page 7
  • 8. 4.1 빌드 타입 이해하기 ▶ 빌드 타입 기본 값 › release 타입 • Proguard 적용 FALSE Page 8 예제: ch01/MyAndroidApp
  • 9. 4.1 빌드 타입 이해하기 ▶ 모듈 build.gradle 파일의 buildTypes 블록 › debug • applicationIdSuffix : 패키지 명에 접미사 추가 • versionNameSuffix : 버전 이름에 접미사 추가 Page 9 실습: ch03/MyAndroidApp
  • 10. 4.1 빌드 타입 이해하기 ▶ 모듈 build.gradle 파일의 buildTypes 블록 › release • minifyEnabled : ProGuard(역컴파일방지) 적용 • shrinkResources : 불필요한 리소스 제거 (+minifyEnabled : true 필요) Page 10 실습: ch03/MyAndroidApp
  • 11. 4.1 빌드 타입 이해하기 ▶ 확인하기 › ./gradlew :app:assemble › ls app/build/outputs/apk Page 11 실습: ch03/MyAndroidApp
  • 12. 4.1 빌드 타입 이해하기 ▶ 확인하기 (aapt 확인) Page 12 실습: ch03/MyAndroidApp
  • 13. 4.1 빌드 타입 이해하기 ▶ 확인하기 (aapt 확인) › aapt d badging app-debug.apk › aapt d badging app-release-unsigned.apk › applicationId가 다르므로 두 APK를 한 기기에 설치 가능 Page 13 실습: ch03/MyAndroidApp
  • 14. 4.2 제품 특성과 빌드 변형 ▶ 문제 › 본질적으로 같은 애플리케이션이지만, 상황에 맞게 리소스나 소스 코드를 다르게 하고 싶다. ▶ 해결 › 제품 특성을 활용하여 같은 애플리케이션을 상황에 맞는 다른 버전으로 생성한다. Page 14
  • 15. 4.2 제품 특성과 빌드 변형 ▶ 제품 특성 정의하기 › android > productFlavors 블록 › 오만한 (arrogant) › 친절한 (friendly) › 아부하는 (obsequious) Page 15 실습: ch03/HelloWorld
  • 16. 4.2 제품 특성과 빌드 변형 ▶ 제품 특성 정의하기 (빌드속성) › applicationId : package name › minSdkVersion › targetSdkVersion › versionCode › versionName › signingConfig Page 16 실습: ch03/HelloWorld
  • 17. 4.2 제품 특성과 빌드 변형 ▶ 제품 특성별 리소스 정의하기 › arrogant › friendly › obsequious ▶ 리소스 › animal.png › strings.xml ▶ main 이 기본임 Page 17 실습: ch03/HelloWorld  Project View
  • 18. 4.2 제품 특성과 빌드 변형 ▶ 제품 특성별 소스 코드 정의하기 › app/src/arrogant/java › app/src/friendly/java › app/src/obsequious/java ▶ main 이 기본임 › app/src/main/java Page 18 실습: ch03/HelloWorld
  • 19. 4.2 제품 특성과 빌드 변형 ▶ 사용 가능한 빌드 변형을 모두 출력하는 사용자 정의 태스크 Page 19 실습: ch03/HelloWorld
  • 20. 4.2 제품 특성과 빌드 변형 ▶ 안드로이드 스튜디오의 Build Variants 뷰 Page 20 실습: ch03/HelloWorld
  • 21. 4.3 제품 특성에 맞는 리소스 병합하기 ▶ 문제 › 제품 특성에 맞게 이미지와 텍스트, 다른 리소스를 변경하고 싶다. ▶ 해결 › 제품 특성에 맞는 리소스 디렉터리를 추가하여 필요한 파일을 복사하고 적절한 값으로 변경한다. Page 21
  • 22. 4.3 제품 특성에 맞는 리소스 병합하기 ▶ 제품 특성 정의하기 › applicationId를 다르게 함 Page 22 실습: ch03/HelloWorld
  • 23. 4.3 제품 특성에 맞는 리소스 병합하기 ▶ MainActivity 클래스 소스 코드 Page 23 실습: ch03/HelloWorld
  • 24. 4.3 제품 특성에 맞는 리소스 병합하기 ▶ activity_main.xml 레이아웃 파일 Page 24 실습: ch03/HelloWorld
  • 25. 4.3 제품 특성에 맞는 리소스 병합하기 ▶ arrogant(Stark) 제품특성으로 애플리케이션 실행하기 Page 25 실습: ch03/HelloWorld
  • 26. 4.3 제품 특성에 맞는 리소스 병합하기 ▶ WelcomeActivity 클래스 ▶ activity_welcome.xml 레이아웃 Page 26 실습: ch03/HelloWorld
  • 27. 4.4 자바 소스 코드 병합하기 ▶ 문제 › 제품 특성별로 액티비티나 자바 클래스와 같은 소스 코드를 다르게 하고 싶다. ▶ 해결 › 적절한 소스 디렉터리를 추가하고 main 소스 세트와 병합할 수 있게 구성한다. Page 27 사용할 때 주의해야 하며 권장사항은 아님!!
  • 28. 4.4 자바 소스 코드 병합하기 ▶ main, stark, wayne 제품 특성을 위한 소스 디렉터리 ▶ 왜 이렇게 복잡해보일까? Page 28 실습: ch03/HelloWorld
  • 29. 4.4 자바 소스 코드 병합하기 ▶ arrogantStark ▶ friendlyWayne Page 29 실습: ch03/HelloWorld
  • 30. 4.4 자바 소스 코드 병합하기 ▶ Stark > activity_call_for_help.xml ▶ Wayne > activity_call_for_help.xml 실습: ch03/HelloWorld
  • 31. 4.4 자바 소스 코드 병합하기 ▶ Stark > CallForHelpActivityFragment.java 실습: ch03/HelloWorld
  • 32. 4.4 자바 소스 코드 병합하기 ▶ Wayne > CallForHelpActivityFragment.java실습: ch03/HelloWorld
  • 33. 4.4 자바 소스 코드 병합하기 ▶ 생각해보기 1. 만약에 main에 CallForHelpAcitivityFragment.java 파일을 넣으면 어떻게 될까? 2. CallForHelpActivity.java는 Stark와 Wayne이 동일하다 만약 main으로 이동하면 어떻게 될까? 3. 실무에서는 어떻게 활용할 수 있을까? 실습: ch03/HelloWorld
  • 34. 강연 + 실습, 그레이들 레시피 제대로 알려드립니다! 세미나 커리큘럼 확인하기 ››› http://www.hanbit.co.kr/store/education/edu_view.html?p_code=S9897423756
  • 35. 세미나 커리큘럼 확인하기 ››› http://www.hanbit.co.kr/store/education/edu_view.html?p_code=S9897423756 그레이들 레시피 RealTime 세미나 3 2017년 4월 27일, 한빛미디어 1층 세미나실에서 만나요!