그레이들 레시피
유동환
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층 세미나실에서 만나요!

그레이들(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층 세미나실에서 만나요!