Android Studio Development Essentials Copyright 2014 Neil Smyth. All rights reserved. Korean Translation Copyright 2015 by J-Pub. co. The Korean editi

Similar documents
핵심만골라배우는안드로이드스튜디오&프로그래밍_내지_11차_ indd

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

JDK이클립스

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

4S 1차년도 평가 발표자료

Windows 8에서 BioStar 1 설치하기

PowerPoint Template

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

PowerPoint Template

Install stm32cubemx and st-link utility

iOS ÇÁ·Î±×·¡¹Ö 1205.PDF

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

PowerPoint 프레젠테이션

Microsoft PowerPoint - 안드로이드 개발 환경 구축(170411)

Microsoft Word - src.doc

Chapter 1

슬라이드 1

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

슬라이드 1

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

B.3 JDBC 설치 JDBC Java DataBase Connectivity 는자바에서 DBMS의종류에상관없이일관된방법으로 SQL을수행할수있도록해주는자바 API Application Program Interface 다. 이책에서는톰캣과 SQL Server 간의연결을위

슬라이드 1

JAVA 플랫폼 개발 환경 구축 및 활용

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Studuino소프트웨어 설치

ISP and CodeVisionAVR C Compiler.hwp

슬라이드 1

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

서현수

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

CODESYS 런타임 설치과정

슬라이드 1

문서의 제목 나눔고딕B, 54pt

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

Microsoft PowerPoint App Fundamentals[Part1].pptx

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

슬라이드 1

슬라이드 1

A SQL Server 2012 설치 A.1 소개 Relational DataBase Management System SQL Server 2012는마이크로소프트사에서제공하는 RDBMS 다. 마이크로소프트사는스탠다드 standard 버전이상의상업용에디션과익스프레스 exp

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

vRealize Automation용 VMware Remote Console - VMware

슬라이드 1

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

DBMS & SQL Server Installation Database Laboratory

슬라이드 제목 없음

YUM(Yellowdog Updater,Modified) : RPM 패키지가저장된서버 ( 저장소 ) 로부터원하는패키지를자동으로설치한다. : YUM 도구는 RPM 의패키지의존성문제를해결

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

DE1-SoC Board

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

SBR-100S User Manual

슬라이드 1

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

MF5900 Series MF Driver Installation Guide

슬라이드 1

PowerPoint 프레젠테이션

SIGIL 완벽입문

01장

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

( )부록

[Brochure] KOR_TunA

슬라이드 1

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Google Maps Android API v2

Endpoint Protector - Active Directory Deployment Guide

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

슬라이드 1

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

PowerPoint Presentation

Android Studio Development Essentials: Android 7 Edition Copyright c 2016 Neil Smyth. All rights reserved. Korean Translation Copyright c 2017 by J-Pu

에접속하여상단메뉴에서 [DOWNLOADS] 를클릭한다. 다운로드페이지에서 Java 카테고리에있는 [Java SE] 를클릭하고페이지가바뀌면 [Java Platform (JDK)] 를클릭한다. JDK 버전은다운로드하는시점에따라다를수

View Licenses and Services (customer)

파워포인트

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Office 365 사용자 가이드

Title Here

chapter1,2.doc

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - 권장 사양

윈도우시스템프로그래밍

SAS9.2_SAS_Enterprise_Miner_install_guide_single_user_v2

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

미디어 및 엔터테인먼트 업계를 위한 Adobe Experience Manager Mobile

Microsoft Word - Armjtag_문서1.doc

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

untitled

tiawPlot ac 사용방법

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

H3250_Wi-Fi_E.book

Transcription:

Android Studio Development Essentials Copyright 2014 Neil Smyth. All rights reserved. Korean Translation Copyright 2015 by J-Pub. co. The Korean edition is published by arrangement with Neil Smyth through Agency-One, Seoul. 이책의한국어판저작권은에이전시원을통해저작권자와의독점계약으로제이펍출판사에있습니다. 신저작권법에의해한국내에서보호를받는저작물이므로무단전재와무단복제를금합니다. 초판 1쇄발행 2015년 6월 26일지은이닐스미스옮긴이심재철펴낸이장성두펴낸곳제이펍 출판신고 2009년 11월 10일제406-2009-000087호주소경기도파주시문발로 141 뮤즈빌딩 403호전화 070 8201 9010 / 팩스 02 6280 0405 홈페이지 www.jpub.kr / 이메일 jeipub@gmail.com 편집부이민숙, 이슬, 이주원 / 소통 기획팀현지환표지디자인미디어픽스 / 본문디자인북아이용지신승지류유통 / 인쇄한승인쇄 / 제본광우제책사 ISBN 979-11-85890-17-3 (93000) 값 34,000원 이책은저작권법에따라보호를받는저작물이므로무단전재와무단복제를금지하며, 이책내용의전부또는일부를이용하려면반드시저작권자와제이펍의서면동의를받아야합니다. 잘못된책은구입하신서점에서바꾸어드립니다. 제이펍은독자여러분의책에관한아이디어와원고투고를기다리고있습니다. 책으로펴내고자하는아이디어나원고가있으신분께서는책에대한간단한개요와차례, 구성과저 ( 역 ) 자약력등을메일로보내주세요. ( 보내실곳 : jeipub@gmail.com)

드리는말씀 이책에기재된내용을기반으로한운용결과에대해저 / 역자, 소프트웨어개발자및제공자, 제이펍출판사는일체의책임을지지않으므로양해바랍니다. 이책에기재한회사명및제품명은각회사의상표및등록명입니다. 이책에서는 C, R, TM 등의기호를생략하고있습니다. 이책에서사용하고있는실제제품버전은독자의학습시점에따라책의버전과다를수있습니다. 이책에나오는각종예제의안드로이드스튜디오프로젝트파일들은다음사이트에서다운로드할수있습니다. https://github.com/jpub/androidstudio 책의내용과관련된문의사항은옮긴이나출판사로연락주시기바랍니다. 옮긴이 : jcspro@hanafos.com 출판사 : jeipub@gmail.com

차례 옮긴이머리말 베타리더후기 xx xxii 1 개요 _ 1 1.1 안드로이드스튜디오의장점 2 1.2 소스코드다운로드하기 3 1.3 궁금사항문의 4 1.4 오탈자 4 2 안드로이드스튜디오개발환경구성하기 _ 5 2.1 개발시스템요구사항 5 2.2 자바 JDK 설치하기 6 2.3 리눅스에서설치하기 9 2.4 안드로이드스튜디오패키지다운로드하기 10 2.5 안드로이드스튜디오설치하기 11 2.6 안드로이드스튜디오 Setup Wizard 17 2.7 가장최신버전의안드로이드 SDK 패키지설치하기 19 2.8 명령행에서안드로이드 SDK 도구사용하기 23 2.9 안드로이드스튜디오와 SDK의버전업그레이드하기 27 2.10 안드로이드 SDK와자바 JDK의설치경로변경하기 27 2.11 요약 28 3 안드로이드스튜디오로첫번째애플리케이션만들기 _ 29 3.1 새로운안드로이드프로젝트생성하기 29 3.2 프로젝트와 SDK 설정정의하기 31 3.3 액티비티생성하기 33 3.4 우리애플리케이션변경하기 35 3.5 레이아웃과리소스파일살펴보기 43 3.6 레이아웃미리보기 46 3.7 요약 47 4 안드로이드스튜디오 UI 둘러보기 _ 49 4.1 웰컴스크린 49 차례 v

4.2 메인창 50 4.3 도구창 52 4.4 안드로이드스튜디오의단축키 58 4.5 스위처와최근파일기능을이용한내비게이션 59 4.6 안드로이드스튜디오테마변경하기 60 4.7 요약 61 5 안드로이드스튜디오에서 AVD 생성하기 _ 62 5.1 AVD 개요 62 5.2 새로운 AVD 생성하기 64 5.3 에뮬레이터시작시키기 68 5.4 AVD에서애플리케이션실행하기 69 5.5 Run/Debug 구성 71 5.6 실행중인애플리케이션중단시키기 73 5.7 명령행에서 AVD 생성하기 75 5.8 AVD 구성파일들 77 5.9 AVD의위치이동과이름변경 78 5.10 요약 78 6 실제안드로이드장치에서애플리케이션테스트하기 _ 80 6.1 ADB 개요 80 6.2 안드로이드장치에서 ADB 활성화하기 81 6.3 adb 연결테스트하기 89 6.4 안드로이드스튜디오에서장치확인하기 91 6.5 요약 94 7 안드로이드스튜디오코드편집기 _ 95 7.1 안드로이드스튜디오코드편집기 95 7.2 편집기창나누기 99 7.3 코드자동완성 100 7.4 문장자동완성 102 7.5 매개변수정보 102 7.6 코드생성 103 7.7 코드접어감추기 104 7.8 빠른문서검색 107 7.9 소스코드형식변환 107 7.10 요약 108 8 안드로이드아키텍처개요 _ 109 8.1 안드로이드소프트웨어스택 109 8.2 리눅스커널 110 8.3 안드로이드런타임 ART 111 8.4 안드로이드라이브러리 111 8.5 애플리케이션프레임워크 113 vi 핵심만골라배우는안드로이드스튜디오

8.6 애플리케이션 114 8.7 요약 114 9 액티비티와인텐트개요 _ 115 9.1 안드로이드액티비티 115 9.2 안드로이드인텐트 116 9.3 브로드캐스트인텐트 117 9.4 브로드캐스트수신자 117 9.5 안드로이드서비스 117 9.6 콘텐트제공자 118 9.7 애플리케이션매니페스트 119 9.8 애플리케이션리소스 119 9.9 애플리케이션컨텍스트 119 9.10 요약 120 10 안드로이드애플리케이션과액티비티생명주기이해하기 _ 121 10.1 안드로이드애플리케이션과리소스관리 121 10.2 안드로이드프로세스상태 122 10.3 액티비티생명주기 124 10.4 액티비티스택 124 10.5 액티비티상태 125 10.6 구성변경 126 10.7 요약 127 11 액티비티상태변화처리하기 _ 128 11.1 Activity 클래스 128 11.2 동적상태 vs. 영속적상태 131 11.3 안드로이드액티비티생명주기메서드 132 11.4 액티비티생애 134 11.5 요약 135 12 액티비티상태변화예제 _ 137 12.1 상태변화예제프로젝트생성하기 137 12.2 사용자인터페이스디자인하기 139 12.3 액티비티생명주기메서드오버라이딩 142 12.4 로그캣패널의메시지필터링하기 146 12.5 애플리케이션실행하기 147 12.6 액티비티로실험하기 148 12.7 요약 150 13 액티비티상태를저장하고복원하기 _ 151 13.1 동적상태저장 151 13.2 사용자인터페이스상태의자동저장과복원 152 13.3 Bundle 클래스 154 차례 vii

13.4 상태데이터저장하기 154 13.5 상태데이터복원하기 157 13.6 애플리케이션테스트하기 158 13.7 요약 158 14 안드로이드뷰, 뷰그룹, 레이아웃 _ 160 14.1 서로다른안드로이드장치를위한디자인 160 14.2 뷰와뷰그룹 161 14.3 안드로이드레이아웃매니저 161 14.4 뷰계층구조 163 14.5 사용자인터페이스생성 165 14.6 요약 165 15 안드로이드스튜디오디자이너도구살펴보기 _ 167 15.1 안드로이드스튜디오디자이너 167 15.2 디자인모드 168 15.3 텍스트모드 169 15.4 속성설정하기 171 15.5 타입변환 172 15.6 커스텀장치정의생성하기 173 15.7 요약 173 16 안드로이드스튜디오디자이너도구로 UI 디자인하기 _ 174 16.1 안드로이드스튜디오디자이너도구예제프로젝트생성하기 174 16.2 새로운액티비티생성하기 175 16.3 사용자인터페이스디자인하기 178 16.4 뷰속성변경하기 179 16.5 애플리케이션실행하기 180 16.6 XML 레이아웃을우리가직접생성하기 180 16.7 계층구조뷰어사용하기 183 16.8 요약 187 17 자바코드로안드로이드 UI 생성하기 _ 188 17.1 자바코드 vs. XML 레이아웃파일 188 17.2 뷰생성하기 189 17.3 속성과레이아웃매개변수 190 17.4 안드로이드스튜디오로예제프로젝트생성하기 191 17.5 액티비티에뷰추가하기 191 17.6 뷰속성설정하기 193 17.7 레이아웃매개변수와룰추가하기 194 17.8 뷰 ID 사용하기 197 17.9 dp를 px로변환하기 199 17.10 요약 202 viii 핵심만골라배우는안드로이드스튜디오

18 안드로이드스튜디오디자이너에서 GridLayout 매니저사용하기 _ 203 18.1 안드로이드 GridLayout 과 Space 클래스 203 18.2 GridLayout 예제 204 18.3 GridLayout 프로젝트생성하기 204 18.4 GridLayout 인스턴스생성하기 205 18.5 GridLayout 셀에뷰추가하기 207 18.6 행과열의이동과삭제 209 18.7 여러행과열로구성된셀구현하기 209 18.8 GridLayout 의자식뷰 gravity 변경하기 210 18.9 요약 213 19 XML 레이아웃리소스로 GridLayout 사용하기 _ 215 19.1 XML 리소스파일의 GridLayout 215 19.2 GridLayout 에자식뷰추가하기 217 19.3 복수셀과셀의그래비티및마진선언하기 219 19.4 요약 221 20 안드로이드이벤트처리개요 _ 222 20.1 안드로이드이벤트이해하기 222 20.2 android:onclick 리소스사용하기 223 20.3 이벤트리스너와콜백메서드 224 20.4 이벤트처리예제 225 20.5 사용자인터페이스디자인하기 225 20.6 이벤트리스너와콜백메서드 228 20.7 이벤트소비하기 230 20.8 요약 232 21 터치와다중터치이벤트처리하기 _ 234 21.1 터치이벤트처리하기 234 21.2 MotionEvent 객체 235 21.3 터치액션이해하기 235 21.4 다중터치처리하기 236 21.5 다중터치애플리케이션생성하기 237 21.6 액티비티사용자인터페이스디자인하기 237 21.7 터치이벤트리스너구현하기 240 21.8 애플리케이션실행시키기 244 21.9 요약 245 22 안드로이드제스처감지클래스로일반제스처처리하기 _ 246 22.1 일반제스처감지와처리하기 246 22.2 제스처처리프로젝트생성하기 247 22.3 리스너클래스구현하기 248 22.4 GestureDetector 인스턴스생성하기 252 22.5 ontouchevent() 메서드구현하기 253 차례 ix

22.6 애플리케이션테스트하기 253 22.7 요약 254 23 커스텀제스처와핀치인식구현하기 _ 255 23.1 안드로이드제스처빌더애플리케이션 255 23.2 GestureOverlayView 클래스 256 23.3 제스처감지하기 256 23.4 제스처확인하기 256 23.5 제스처빌더애플리케이션의빌드와실행 257 23.6 제스처파일생성하기 258 23.7 SD 카드에서제스처파일추출하기 260 23.8 예제프로젝트생성하기 261 23.9 제스처파일을프로젝트에추가하기 261 23.10 사용자인터페이스디자인하기 262 23.11 제스처파일로드하기 263 23.12 이벤트리스너등록하기 264 23.13 ongestureperformed 메서드구현하기 265 23.14 애플리케이션테스트하기 267 23.15 GestureOverlayView 구성하기 267 23.16 제스처가로채기 268 23.17 핀치제스처처리하기 269 23.18 핀치제스처예제프로젝트 269 23.19 요약 272 24 안드로이드프래그먼트개요 _ 273 24.1 프래그먼트란? 273 24.2 프래그먼트생성하기 274 24.3 레이아웃 XML 파일을사용하여프래그먼트를액티비티에추가하기 276 24.4 코드에서프래그먼트를추가하고관리하기 278 24.5 프래그먼트이벤트처리하기 280 24.6 프래그먼트간의통신구현하기 281 24.7 요약 283 25 안드로이드스튜디오에서프래그먼트사용하기 - 예제프로젝트 _ 284 25.1 예제프래그먼트애플리케이션개요 284 25.2 예제프로젝트생성하기 285 25.3 첫번째프래그먼트레이아웃생성하기 285 25.4 첫번째프래그먼트클래스생성하기 288 25.5 두번째프래그먼트레이아웃생성하기 290 25.6 프래그먼트를액티비티에추가하기 292 25.7 ToolbarFragment 가액티비티와통신하게만들기 295 25.8 액티비티에서 TextFragment 로통신하기 300 25.9 애플리케이션테스트하기 302 25.10 요약 303 x 핵심만골라배우는안드로이드스튜디오

26 안드로이드스튜디오마스터 / 디테일플로 _ 304 26.1 마스터 / 디테일플로 304 26.2 마스터 / 디테일플로액티비티생성하기 306 26.3 마스터 / 디테일플로템플릿살펴보기 308 26.4 마스터 / 디테일플로템플릿변경하기 310 26.5 콘텐트모델변경하기 311 26.6 디테일패널변경하기 312 26.7 WebsiteDetailFragment 클래스변경하기 314 26.8 매니페스트퍼미션추가하기 316 26.9 애플리케이션실행하기 316 26.10 요약 318 27 오버플로메뉴생성과관리 _ 319 27.1 오버플로메뉴 319 27.2 오버플로메뉴생성하기 320 27.3 오버플로메뉴보여주기 322 27.4 메뉴항목선택에응답하기 322 27.5 체크가능한항목그룹생성하기 323 27.6 예제프로젝트생성하기 324 27.7 메뉴설명변경하기 325 27.8 onoptionsitemselected() 메서드변경하기 326 27.9 애플리케이션테스트하기 328 27.10 요약 329 28 안드로이드전환프레임워크 _ 330 28.1 안드로이드전환과장면 330 28.2 전환에인터폴레이터사용하기 332 28.3 장면전환사용하기 333 28.4 코드의커스텀전환과 TransitionSet 335 28.5 XML의커스텀전환과 TransitionSet 336 28.6 인터폴레이터사용하기 338 28.7 커스텀인터폴레이터생성하기 340 28.8 begindelayedtransition 메서드사용하기 342 28.9 요약 342 29 begindelayedtransition 을사용한안드로이드전환 _ 344 29.1 안드로이드스튜디오 TransitionDemo 프로젝트생성하기 344 29.2 프로젝트파일준비하기 345 29.3 begindelayedtransition 애니메이션구현하기 345 29.4 우리입맛에맞는전환만들기 349 29.5 요약 351 30 안드로이드장면전환구현하기 _ 352 30.1 장면전환프로젝트개요 352 차례 xi

30.2 안드로이드스튜디오 SceneTransitions 프로젝트생성하기 352 30.3 루트컨테이너를확인하고준비하기 353 30.4 첫번째장면디자인하기 353 30.5 두번째장면디자인하기 357 30.6 첫번째장면보여주기 358 30.7 두번째장면로드하기 360 30.8 전환을구현하기 361 30.9 전환파일추가하기 361 30.10 전환세트의로딩과사용 362 30.11 부가적인전환구성하기 364 30.12 요약 365 31 안드로이드인텐트개요 _ 366 31.1 인텐트개요 366 31.2 명시적인텐트 367 31.3 액티비티에서데이터반환하기 369 31.4 암시적인텐트 370 31.5 인텐트필터사용하기 371 31.6 인텐트사용가능여부확인하기 372 31.7 요약 373 32 명시적인텐트예제프로젝트 _ 374 32.1 예제프로젝트생성하기 374 32.2 ActivityA 의사용자인터페이스디자인하기 375 32.3 두번째액티비티클래스생성하기 377 32.4 ActivityB 의사용자인터페이스레이아웃디자인하기 378 32.5 애플리케이션의매니페스트파일살펴보기 380 32.6 인텐트생성하기 381 32.7 인텐트데이터추출하기 383 32.8 서브액티비티로 ActivityB 론칭하기 384 32.9 서브액티비티에서데이터반환하기 386 32.10 애플리케이션테스트하기 387 32.11 요약 387 33 암시적인텐트예제프로젝트 _ 388 33.1 암시적인텐트예제프로젝트생성하기 388 33.2 사용자인터페이스디자인하기 389 33.3 암시적인텐트생성하기 391 33.4 암시적인텐트로론칭되는액티비티생성하기 392 33.5 사용자인터페이스에웹뷰추가하기 393 33.6 인텐트 URL 얻기 394 33.7 MyWebView 프로젝트의매니페스트파일변경하기 396 33.8 MyWebView 패키지를장치에설치하기 398 33.9 애플리케이션테스트하기 400 33.10 요약 401 xii 핵심만골라배우는안드로이드스튜디오

34 브로드캐스트인텐트와브로드캐스트수신자 _ 402 34.1 브로드캐스트인텐트개요 402 34.2 브로드캐스트수신자개요 403 34.3 브로드캐스트수신자로부터결과데이터받기 406 34.4 스티키브로드캐스트인텐트 406 34.5 브로드캐스트인텐트예제프로젝트 407 34.6 예제애플리케이션생성하기 407 34.7 브로드캐스트인텐트를생성하고전송하기 408 34.8 브로드캐스트수신자생성하기 409 34.9 매니페스트파일에브로드캐스트수신자구성하기 411 34.10 브로드캐스트애플리케이션테스트하기 412 34.11 시스템브로드캐스트인텐트리스닝하기 413 34.12 요약 415 35 스레드와스레드핸들러 _ 416 35.1 스레드개요 416 35.2 애플리케이션의메인스레드 416 35.3 스레드핸들러 417 35.4 기본적인스레드예제프로젝트 417 35.5 새로운스레드생성하기 421 35.6 스레드핸들러구현하기 422 35.7 핸들러에게메시지전달하기 425 35.8 요약 427 36 스타트서비스와바운드서비스개요 _ 428 36.1 스타트서비스 428 36.2 인텐트서비스 429 36.3 바운드서비스 430 36.4 서비스생명주기 431 36.5 소멸된서비스재시작옵션제어하기 432 36.6 매니페스트파일에서비스선언하기 432 36.7 시스템구동시서비스시작시키기 434 36.8 요약 434 37 스타트서비스구현예제프로젝트 _ 436 37.1 예제프로젝트생성하기 436 37.2 서비스클래스생성하기 437 37.3 서비스를매니페스트파일에추가하기 439 37.4 서비스시작시키기 440 37.5 인텐트서비스테스트하기 440 37.6 Service 클래스사용하기 442 37.7 새로운서비스생성하기 442 37.8 사용자인터페이스변경하기 444 37.9 애플리케이션실행하기 446 차례 xiii

37.10 서비스를처리하는새로운스레드생성하기 447 37.11 요약 448 38 로컬바운드서비스예제프로젝트 _ 449 38.1 바운드서비스이해하기 449 38.2 바운드서비스상호작용옵션 450 38.3 로컬바운드서비스예제프로젝트 450 38.4 바운드서비스를프로젝트에추가하기 451 38.5 Binder 구현하기 452 38.6 클라이언트를서비스에바인딩하기 455 38.7 예제프로젝트마무리하기 457 38.8 애플리케이션테스트하기 460 38.9 요약 461 39 원격바운드서비스예제프로젝트 _ 462 39.1 클라이언트에서원격서비스로통신하기 462 39.2 예제애플리케이션생성하기 463 39.3 사용자인터페이스디자인하기 463 39.4 원격바운드서비스구현하기 464 39.5 원격서비스를매니페스트파일에구성하기 466 39.6 원격서비스를론칭하고바인딩하기 467 39.7 원격서비스에메시지전송하기 469 39.8 요약 471 40 안드로이드 SQLite 데이터베이스개요 _ 472 40.1 데이터베이스테이블이해하기 472 40.2 데이터베이스스키마개요 473 40.3 열과데이터타입 473 40.4 데이터베이스행 474 40.5 기본키개요 474 40.6 SQLite 란? 475 40.7 SQL 475 40.8 AVD에서 SQLite 사용해보기 476 40.9 안드로이드 SQLite 자바클래스 479 40.10 요약 482 41 TableLayout 과 TableRow 파악하기 _ 483 41.1 TableLayout 과 TableRow 483 41.2 데이터베이스프로젝트생성하기 485 41.3 사용자인터페이스에 TableLayout 추가하기 485 41.4 TableRow 를추가하고구성하기 486 41.5 버튼을레이아웃에추가하기 488 41.6 레이아웃마진조정하기 490 41.7 요약 493 xiv 핵심만골라배우는안드로이드스튜디오

42 안드로이드 SQLite 데이터베이스예제프로젝트 _ 494 42.1 데이터베이스예제개요 494 42.2 데이터모델생성하기 495 42.3 데이터핸들러구현하기 497 42.4 액티비티이벤트메서드구현하기 502 42.5 애플리케이션테스트하기 505 42.6 요약 506 43 콘텐트제공자이해하기 _ 507 43.1 콘텐트제공자란? 507 43.2 콘텐트제공자 508 43.3 콘텐트 URI 509 43.4 콘텐트리졸버 510 43.5 <provider> 매니페스트요소 511 43.6 요약 511 44 콘텐트제공자구현하기 _ 512 44.1 Database 프로젝트활용하기 512 44.2 콘텐트제공자패키지추가하기 513 44.3 콘텐트제공자클래스생성하기 513 44.4 Authority 와콘텐트 URI 구성하기 515 44.5 콘텐트제공자에 UriMatcher 구현하기 516 44.6 콘텐트제공자의 oncreate() 메서드구현하기 518 44.7 콘텐트제공자의 insert() 메서드구현하기 519 44.8 콘텐트제공자의 query() 메서드구현하기 521 44.9 콘텐트제공자의 update() 메서드구현하기 522 44.10 콘텐트제공자의 delete() 메서드구현하기 524 44.11 매니페스트파일에콘텐트제공자선언하기 525 44.12 데이터베이스핸들러변경하기 527 44.13 요약 529 45 클라우드스토리지액세스하기 _ 530 45.1 스토리지액세스프레임워크 530 45.2 스토리지액세스프레임워크사용하기 532 45.3 피커의파일내역선별하기 533 45.4 인텐트결과처리하기 535 45.5 파일의내용읽기 535 45.6 파일에내용쓰기 537 45.7 파일삭제하기 537 45.8 파일의지속적인액세스얻기 538 45.9 요약 539 46 안드로이드스토리지액세스프레임워크예제프로젝트 _ 540 46.1 스토리지액세스프레임워크예제프로젝트개요 540 차례 xv

46.2 스토리지액세스프레임워크예제프로젝트생성 541 46.3 사용자인터페이스디자인하기 541 46.4 요청코드선언하기 544 46.5 새로운스토리지파일생성하기 545 46.6 onactivityresult() 메서드 547 46.7 스토리지파일에데이터저장하기 549 46.8 스토리지파일을열고읽기 553 46.9 스토리지액세스애플리케이션테스트하기 555 46.10 요약 557 47 비디오재생구현하기 _ 558 47.1 안드로이드 VideoView 클래스개요 558 47.2 안드로이드 MediaController 클래스개요 559 47.3 비디오재생테스트관련사항 560 47.4 비디오재생예제프로젝트생성하기 560 47.5 VideoPlayer 애플리케이션의레이아웃디자인하기 561 47.6 VideoView 구성하기 562 47.7 인터넷퍼미션추가하기 563 47.8 MediaController 를 VideoView 에추가하기 565 47.9 onpreparedlistener 설정하기 566 47.10 요약 568 48 카메라인텐트를사용한비디오녹화와이미지캡처 _ 569 48.1 카메라지원여부확인하기 569 48.2 비디오캡처인텐트호출하기 570 48.3 이미지캡처인텐트호출하기 572 48.4 안드로이드스튜디오비디오녹화프로젝트생성하기 573 48.5 사용자인터페이스레이아웃디자인하기 573 48.6 카메라확인하기 575 48.7 비디오캡처인텐트론칭하기 576 48.8 인텐트의반환결과를처리하기 577 48.9 애플리케이션테스트하기 578 48.10 요약 579 49 안드로이드오디오녹음과재생하기 _ 580 49.1 오디오재생하기 580 49.2 MediaRecorder 클래스를사용해서오디오녹음하기 581 49.3 예제프로젝트개요 583 49.4 AudioApp 프로젝트생성하기 583 49.5 사용자인터페이스디자인하기 584 49.6 마이크확인하기 585 49.7 액티비티초기화하기 586 49.8 recordaudio() 메서드구현하기 588 49.9 stopaudio() 메서드구현하기 589 xvi 핵심만골라배우는안드로이드스튜디오

49.10 playaudio() 메서드구현하기 590 49.11 매니페스트파일에퍼미션구성하기 591 49.12 애플리케이션테스트하기 592 49.13 요약 592 50 구글맵 API 사용하기 _ 593 50.1 구글맵안드로이드 API의구성요소 593 50.2 구글맵프로젝트생성하기 595 50.3 개발자서명얻기 595 50.4 애플리케이션을테스트하기 598 50.5 지오코딩과역-지오코딩이해하기 599 50.6 지도를애플리케이션에추가하기 602 50.7 사용자의현재위치보여주기 602 50.8 지도타입변경하기 603 50.9 맵컨트롤을사용자에게보여주기 605 50.10 지도제스처처리하기 606 50.11 지도표식생성하기 608 50.12 맵카메라제어하기 609 50.13 요약 611 51 안드로이드인쇄프레임워크사용하기 _ 612 51.1 안드로이드인쇄아키텍처 612 51.2 HP 인쇄서비스플러그인 613 51.3 구글클라우드인쇄 614 51.4 구글드라이브로인쇄하기 615 51.5 PDF로저장하기 615 51.6 안드로이드장치에서인쇄하기 615 51.7 안드로이드애플리케이션에포함되는인쇄지원옵션 617 51.8 요약 623 52 HTML 과웹콘텐트인쇄예제프로젝트 _ 624 52.1 HTML 인쇄예제애플리케이션생성하기 624 52.2 동적 HTML 콘텐트인쇄하기 625 52.3 기존웹페이지인쇄예제애플리케이션생성하기 629 52.4 사용자인터페이스레이아웃디자인하기 630 52.5 웹페이지를 WebView 에로드하기 632 52.6 인쇄메뉴옵션추가하기 633 52.7 요약 637 53 안드로이드커스텀문서인쇄 _ 638 53.1 안드로이드커스텀문서인쇄개요 638 53.2 커스텀문서인쇄프로젝트준비하기 640 53.3 커스텀인쇄어댑터생성하기 642 53.4 onlayout() 콜백메서드구현하기 643 차례 xvii

53.5 onwrite() 콜백메서드구현하기 647 53.6 페이지가인쇄범위에있는지확인하기 651 53.7 페이지캔버스에콘텐트그리기 652 53.8 인쇄작업시작시키기 656 53.9 애플리케이션테스트하기 657 53.10 요약 658 54 서로다른안드로이드장치와화면처리하기 _ 659 54.1 서로다른장치화면처리하기 659 54.2 화면크기에맞는레이아웃생성하기 660 54.3 서로다른이미지제공하기 661 54.4 하드웨어지원여부확인하기 662 54.5 특정장치에맞는애플리케이션바이너리제공하기 663 54.6 요약 663 55 안드로이드애플리케이션릴리스하기 _ 664 55.1 릴리스준비절차 664 55.2 빌드변이변경하기 665 55.3 키스토어파일생성하기 666 55.4 개인키생성하기 667 55.5 애플리케이션 APK 파일생성하기 668 55.6 구글플레이개발자콘솔계정등록하기 670 55.7 새로운 APK 버전을구글플레이개발자콘솔에업로드하기 671 55.8 요약 673 56 구글플레이인앱결제를애플리케이션에통합하기 _ 674 56.1 구글플레이결제라이브러리설치하기 674 56.2 인앱결제예제프로젝트생성하기 675 56.3 결제퍼미션을매니페스트파일에추가하기 676 56.4 IInAppBillingService.aidl 파일을프로젝트에추가하기 677 56.5 유틸리티클래스를프로젝트에추가하기 679 56.6 사용자인터페이스디자인하기 681 56.7 Click Me! 버튼구현하기 682 56.8 구글플레이개발자콘솔과구글계정 684 56.9 애플리케이션의공개인증키받기 685 56.10 애플리케이션에서구글플레이결제설정하기 686 56.11 구글플레이인앱결제구입을초기설정하기 688 56.12 onactivityresult 메서드구현하기 689 56.13 구입종료리스너구현하기 690 56.14 구입제품소비하기 691 56.15 IabHelper 인스턴스해제하기 693 56.16 Security.java 파일변경하기 693 56.17 인앱결제애플리케이션테스트하기 695 56.18 릴리스용 APK 빌드하기 696 xviii 핵심만골라배우는안드로이드스튜디오

56.19 새로운인앱제품생성하기 697 56.20 알파배포채널로애플리케이션제출하기 698 56.21 인앱결제테스트계정추가하기 699 56.22 그룹테스트구성하기 701 56.23 인앱구입의문제해결하기 702 56.24 요약 704 57 안드로이드스튜디오의그래들개요 _ 705 57.1 그래들개요 705 57.2 그래들과안드로이드스튜디오 706 57.3 최상위수준의그래들빌드파일 708 57.4 모듈수준의그래들빌드파일들 710 57.5 빌드파일에서명설정구성하기 713 57.6 명령행에서그래들작업실행하기 715 57.7 요약 717 58 안드로이드스튜디오그래들빌드예제프로젝트 _ 718 58.1 빌드변이예제프로젝트생성하기 719 58.2 빌드플레이버를모듈빌드파일에추가하기 719 58.3 플레이버를프로젝트구조에추가하기 722 58.4 리소스파일을플레이버에추가하기 724 58.5 빌드플레이버테스트하기 725 58.6 빌드변이와클래스파일 726 58.7 빌드플레이버로패키지추가하기 726 58.8 플레이버의액티비티클래스변경하기 727 58.9 요약 729 APPENDIX A 에뮬레이터에서한글처리 _ 730 APPENDIX B Button 의 textallcaps 속성값설정 _ 741 APPENDIX 746 C 하위버전의안드로이드시스템에서실행가능한애플리케이션개발 _ 찾아보기 751 차례 xix

옮긴머리말 이 정성과최선을다했습니다. 한마디로요약해서독자여러분께드리고싶은제진심의표현입니다. 매번번역서를낼때마다항상그렇듯이, 이책역시제가저술하는마음으로이일에임했고또그렇게마무리했습니다. 용어하나하나, 내용모두에걸쳐심사숙고하고여러차례에걸친원고검토와수정및보완끝에완성된이책을보면서이제야마음이흐뭇해집니다. 좋은내용을독자여러분께제대로전달할수있을것이라는기대감때문일겁니다. 현재는안드로이드애플리케이션이스마트폰이나태블릿과같은기존의안드로이드장치는물론이고, 몸에착용하는시계나안경등과같은웨어러블 (wearable) 장치나자동차와같이다양한형태로개발되어사용될수있습니다. 안드로이드애플리케이션을개발할때그동안은이클립스 (Eclipse) 를 IDE( 통합개발환경 / 도구 ) 로사용하였습니다. 그러나구글에서는안드로이드스튜디오 (Android Studio) 를 IDE로발표하고오픈소스프로젝트로지속적인기능확장및개선을하고있습니다. 그리고앞으로의안드로이드애플리케이션개발은안드로이드스튜디오를통해서가능합니다. 이책에서는안드로이드스튜디오를사용해서안드로이드애플리케이션을개발하는데필요한내용을알려줍니다. 즉, 안드로이드스튜디오 IDE를사용하는데필요한내용은물론이고, 안드로이드시스템의애플리케이션개발시알아야할핵심적인내용도골고루가르쳐줍니다. 그리고이모든것을안드로이드스튜디오의실습프로젝트로구성하여독자여러분이직접만들면서배울수있게되어있습니다. 따라서안드로이드스튜디 xx 핵심만골라배우는안드로이드스튜디오

오를사용해서안드로이드애플리케이션개발을배우고시작하려는분들께적극적으로권하고싶은책입니다. 또한, 안드로이드스튜디오를빨리파악하고싶은기존개발자분들께도권하고싶습니다. 이책은거의 10개월에걸쳐완성되었습니다. 번역에왜그리오래걸렸을까? 라고생각하실지모르지만, 오랜시간이걸린이유가있습니다. 가능한한안드로이드스튜디오의최신버전을기준으로기존원서의내용을개선하고보완하기위해여러차례작업했기때문입니다. 물론앞으로도안드로이드스튜디오의기능확장과개선은계속되겠지만, 이제는어느정도안정화된것같아이책을출간해도큰무리가없을것같습니다. 그리고이책의모든프로젝트코드는가상장치인에뮬레이터와실제장치 ( 삼성갤럭시 S6 엣지 ) 에서애플리케이션으로실행및테스트하였음을알려드립니다. 이책을번역하면서다음과같은부분에중점을두었습니다. 1. 용어를잘이해하는것이제일중요하므로용어선정에유의하였습니다. 때로는용어하나때문에많은시간을고민하기도했습니다. 제가실무에서오랫동안경험했던지식을바탕으로가장적합한번역용어선정에많은노력을했습니다. 2. 여러분의이해를돕는데필요한보충설명을많이추가하였습니다. 3. 본문이나소스코드에서결함이있는내용을하나하나확인해가면서수정하였습니다. ( 원서의개정판이라고생각하셔도될듯합니다.) 참으로긴시간이었던것같습니다. 독자들에게도움이될수있는책을만들어야한다는집념이있었기에모든어려움을참아낼수있었던것같습니다. 이책을출간하는데아낌없는배려와수고를해주신제이펍출판사의장성두사장님과원고검토 / 교정에많은노력과수고를해주신배규호님, 그리고편집에많은수고를해주신김수미님께진심으로감사드립니다. 2015 6 심재철 옮긴이머리말 xxi

베타리더후기 강미희 ( 휴인시스텍 ) 안드로이드스튜디오의주요기능및사용법, 안드로이드스튜디오를이용한개발및테스트방법에대해자세히설명해주는책이었습니다. 장마다그내용에맞는예제를이전장들의내용과별개로만들어볼수있어서좋았고, 구글에앱을등록하는방법과인앱결제등에대한내용도포함되어있어서이책만으로도앱을만들어등록할수있을것같습니다. 권태환 ( 알서포트 ) 구글에서제공하고있는안드로이드스튜디오를사용해보고안드로이드예제를익혀보고싶으신분들에게이책을권합니다. 이책은안드로이드를전반적으로다루고있으며, 안드로이드스튜디오를조금씩익혀보기에좋은책입니다. 김태호 ( 레진엔터테인먼트 ) 안드로이드스튜디오환경을처음접하는독자도쉽게따라할수있도록실습을위한절차들이자세히설명되어있습니다. 기초적인안드로이드스튜디오사용법뿐만아니라안드로이드애플리케이션개발에대한전반적인내용도다루고있어서초보자에게도움이많이될것입니다. 석나영 ( 숭실대학교 ) 이분야를공부하고있는학생으로서세세하게나누어설명하고어렵지않게작성되어있어서이해하는데많은도움이되었습니다. xxii 핵심만골라배우는안드로이드스튜디오

송주연 ( 다음카카오 ) 이번베타리딩을통해안드로이드앱개발에대해처음부터다시차근차근살펴보는계기가되었습니다. 예제프로젝트중심으로아주자세하게설명되어있어서안드로이드스튜디오로앱개발을처음시작하시는분들께큰도움이될책이라고생각됩니다. 이상현 (SI 개발자 ) 이전에 핵심만골라배우는 ios 7 프로그래밍 을보고구성이잘된정말좋은책이라고느꼈는데, 같은저자의책이라그런지다채로운분야를책에나온그대로따라가기만해도쉽게익힐수있었습니다. 너무쉽게공부할수있어서인지상대적으로느린에뮬레이터를원망하게하는책입니다. 이재빈 ( 연세대학교 ) 실제안드로이드디바이스가없어도안드로이드스튜디오를이용해가상으로앱을만들어볼수있다는것은엄청난매력입니다. 그뿐만아니라안드로이드개발에필요한것들을전반적으로자세하게알려주는이책은앞으로안드로이드계의바이블이되지않을까생각합니다. 바이블이라는이름에맞게그양도방대하지만, 필요한부분만참고해서보는것만으로도충분한가치를지녔다고봅니다. 전상우 ( 아주대학교 ) 각장마다개념및예제가잘정리되어내용이해가쉬웠습니다. 안드로이드스튜디오와안드로이드프로그래밍에아무런지식이없는사람에게도정말로도움이될만한책이라고생각합니다. Beta Readers... 제이펍은책에대한애정과기술에대한열정이뜨거운베타리더들로하여금출간되는모든서적에사전검증을시행하고있습니다. 베타리더후기 xxiii

Chapter 1 개요 안드로이드세계에온여러분을환영한다. 이책에서는안드로이드스튜디오 (Android Studio) 와안드로이드 5 롤리팝 (Lollipop) SDK(Software Development Kit) 를사용해서안드로이드애플리케이션 (application, 줄여서 app) 을개발하는데필요 한기법을소개할것이다. 안드로이드스튜디오는안드로이드애플리케이션을개발할때사용하는최신의통합개발환경 (IDE, Integrated Development Environment) 이다. 그동안은이클립스 (Eclipse) 에서안드로이드 ADT(Android Developer Tools) 를플러그인 (plug-in) 하여사용하였지만, 구글에서는안드로이드에더욱특화된 IDE로안드로이드스튜디오를개발하였다. 그리고이클립스용안드로이드 ADT는앞으로는지원하지않을것이다. 따라서안드로이드개발자라면당연히안드로이드스튜디오에익숙해져야한다 ( 참고로, 안드로이드스튜디오는 JetBrains의 IDE인 IntelliJ IDEA를기반으로개발되었다 ). 이책에서는우선안드로이드애플리케이션을개발하고테스트하는환경을구축하는데필요한내용을설명한다. 그리고안드로이드스튜디오의주요기능과사용법을살펴본다. 예를들어, 각종도구창, 코드편집기, 디자이너도구와같은것들이다. 그다음에안드로이드의아키텍처를간략히살펴본후안드로이드스튜디오를사용해서애플리케이션과사용자인터페이스를설계하고만드는방법들을자세히알아볼것이다. 이때데이터베이스, 콘텐트제공자 (content provider), 인텐트와같은여러가지고급주제들도다룬다. 또한터치스크린처리, 동작인식, 카메라사용, 비디오와오디오의재생과수록방법도설명한다. 그리고새로소개된인쇄, 화면전환, 클라우드기반파일스토리지도다룬다. 1

지금까지이야기한보편적인안드로이드애플리케이션개발기법들외에도이책에서는구글플레이 (Google Play) 와연관된내용들도설명한다. 구글맵 (Google Map) API를사용한지도구현이라든지구글플레이개발자콘솔에우리애플리케이션을게시하고인앱결제 (in-app billing) 를하는방법들이다. 또한애플리케이션프로젝트파일들을구성및관리하고빌드 (build) 하기위해안드로이드스튜디오에서플러그인하여사용하는자동화프로젝트시스템 ( 도구 ) 인그래들 (Gradle) 에대해서도살펴본다. 이책에서는여러분이자바 (Java) 프로그래밍을해본경험이있다고간주할것이므로자바언어에대해서별도로언급하지는않을것이다. 그리고윈도우 (Windows) 나맥 (Mac) 또는리눅스 (Linux) 가실행되는컴퓨터가있고, 안드로이드스튜디오와안드로이드 SDK 를다운로드할수있으면시작할준비가된것이다. 1.1 안드로이드스튜디오의장점 지금까지안드로이드개발자들은이클립스에서안드로이드 ADT를플러그인하여애플리케이션을개발하였다. 그러나안드로이드스튜디오에서는더특화된기능을추가로제공한다. 그리고앞으로구글에서는구글클라우드플랫폼 (Google Cloud Platform) 과연계시켜더욱확장된기능을제공할것이다. 중요한것만요약하면다음과같다. 유연성이좋은 Gradle 기반의프로젝트빌드시스템을사용한다 ( 이클립스에서는 Ant 사용 ). 하나의프로젝트코드로여러가지안드로이드장치용애플리케이션을구현할수있다. 이기 능은안드로이드웨어 (Android Wear) 에서특히유용하다. 구글의각종서비스와다양한장치유형을지원하는템플릿들이추가되었다. 그래픽레이아웃편집기의기능이많이추가되었다 ( 테마편집을지원 ). 코드의성능이나버전호환성및기타문제점을잡아내는 Lint의기능이더좋아졌다. 구글클라우드플랫폼을자체적으로지원하여구글클라우드메시징 / 앱엔진과쉽게통합할 수있다. 우리코드를사전에분석하여완성도를보완해주고리팩토링 (refactoring) 을해주는분석도구 가추가되었다. 2 1 개요

1.2 소스코드다운로드하기 이책에나오는각종예제의안드로이드스튜디오프로젝트파일들은다음에서다운로드할수있다. URL https://github.com/jpub/androidstudio 예제프로젝트코드를안드로이드스튜디오로로드하는절차는다음과같다. 1. Welcome to Android Studio 대화상자에서 Import project(eclipse ADT, Gradle, etc.) 옵션을선택한다. 2. 프로젝트선택대화상자가나오면임포트 (import) 하려는프로젝트관련파일들이있는폴더 [ 서 브디렉터리 (sub directory)] 를선택하고 OK 를클릭한다. 3. Sync Android SDKs 대화상자가나오면 OK 를클릭한다 ( 임포트하는프로젝트에지정되어있는안드로이드 SDK 디렉터리와현재사용중인컴퓨터의안드로이드 SDK 디렉터리가달라서이대화상자가 나오는것이다. OK 를클릭하면현재사용중인컴퓨터의안드로이드 SDK 디렉터리가프로젝트의디폴 트로사용된다 ). 4. 만일 Language Level Changed 대화상자가나오면 Yes 를클릭한다. 그러면프로젝트가다시로드된다. 이책의모든실습프로젝트는최소 SDK 버전이 API 22: Android 5.1(Lollipop) 로지정되어있다. 그리고애플리케이션으로실행할때는실습컴퓨터의 AVD 에뮬레이터와삼성갤럭시 S6 엣지스마트폰을같이사용하였다. 만일다운로드한프로젝트소스를에뮬레이터가아닌각자의스마트폰이나태블릿으로실행하고자할때는그장치의안드로이드버전과같거나또는낮은버전으로최소 SDK 버전을변경해야한다. 이때는 build.gradle 파일의 minsdkversion 번호를해당안드로이드버전의 API 레벨번호로수정하고실행하면된다 (57장의 57.4절참조 ). 그리고 5.0 이전버전의안드로이드시스템에서실행할때는 부록 C 에설명한대로지원라이브러리의 Activity와 Fragment 클래스를사용하도록코드를수정한다 (import 문과액티비티클래스선언문만변경하면된다 ). 또한이책의실습프로젝트애플리케이션을에뮬레이터에서실행할때한글로입출력하고싶다면부록 A의 에뮬레이터에서의한글처리 를참조하자. 1.2 소스코드다운로드하기 3

1.3 궁금사항문의 여러분이만족하는책이되었으면한다. 혹시오류를발견하거나문의사항이있으면 jcspro@hanafos.com 혹은 jeipub@gmail.com 으로메일을보내주기바란다. 1.4 오탈자 이책의내용에오류가없도록최선의노력을했지만, 혹시오탈자가있을지도모르겠다. 그런경우는제이펍 (www.jpub.kr) 의이책소개페이지에있는정오표코너에서안내하도록하겠다. 4 1 개요

Chapter 2 안드로이드스튜디오개발환경구성하기 안드로이드애플리케이션을개발하기에앞서제일먼저할일은우리의컴퓨터시스템을개발플랫폼으로구성하는것이다. 그러기위해서는자바 JDK(Java Development Kit) 와안드로이드스튜디오 IDE 및안드로이드 SDK를설치해야한다. 단, 안드로이드 SDK는안드로이드스튜디오패키지에포함되어제공되므로별도로다운로드할필요는없다. 이장에서는그런소프트웨어들의다운로드와설치에대해설명한다 ( 윈도우, 맥 OS X, 리눅스운영체제모두 ). 2.1 개발시스템요구사항 안드로이드애플리케이션개발은다음중어떤운영체제에서도가능하다. 윈도우 2003(32비트또는 64비트 ) 윈도우비스타 (Vista)(32비트또는 64비트 ) 윈도우 7(32비트또는 64비트 ) 윈도우 8 / 윈도우 8.1 맥 OS X 10.8.5 이상 ( 인텔기반의시스템 ) 리눅스 [GNU C 라이브러리 (glibc) 2.11 버전이상 ] 2.1 개발시스템요구사항 5

그리고필요한하드웨어는다음과같다. 최소 2GB의 RAM(4GB 권장 ) 1.5GB의디스크공간 2.2 자바 JDK 설치하기 안드로이드 SDK는자바프로그래밍언어를사용해서개발되었다. 마찬가지로안드로이드애플리케이션도자바로개발한다. 따라서자바 JDK를제일먼저설치해야한다. 안드로이드애플리케이션개발시필요한자바 JDK는 JDK SE(Standard Edition) 6 버전이상이면된다. 단, 안드로이드 5.0 롤리팝 (Lollipop) 버전이상의애플리케이션개발에는 JDK 7 이상의버전이필요하다. 2.2.1 윈도우에서설치하기 다음의오라클 (Oracle) 사이트에서최신의윈도우용 JDK 를다운로드하자. URL http://www.oracle.com/technetwork/java/javase/downloads/index.html 이웹페이지의맨앞에나오는것이최신버전이다. JDK DOWNLOAD 버튼을클릭 하면다운로드페이지가나올것이다. 거기에서두개의 Accept License Agreement 를 클릭한후 Windows x86(32 비트 ) 또는 Windows x64(64 비트 ) exe 파일을클릭하여다 운로드하면된다. 그리고다운로드된 exe 를실행시켜설치하자 ( 설치할위치만지정하면되 므로간단하다 ). 설치가끝나면다음과같은절차로 Path 와 JAVA_HOME 두개의환경변수를지정한 다 ( 윈도우 XP 와비스타및윈도우 7). 1. 시작메뉴의내컴퓨터에서오른쪽마우스버튼을클릭한후속성을선택한다. 2. 속성 ( 시스템등록정보 ) 창에서고급탭을선택한후환경변수버튼을누른다. 3. 환경변수대화상자에서시스템변수의 Path 변수를찾고편집버튼을누른다. 문자열의맨끝에다음경로를추가한다. 6 2 안드로이드스튜디오개발환경구성하기

<JDK 가설치된디렉터리 >\bin 이때각경로는세미콜론 (;) 으로구분해야한다는것에유의하자. 예를들어, JDK 가 C:\ Program Files\Java\jdk1.8.0_45 에설치되었다면 Path 변수맨끝에다음을추가하면된다. ; C:\Program Files\Java\jdk1.8.0_45\bin 4. 그다음에는시스템변수의새로만들기버튼을누른다. 변수이름은 JAVA_HOME 으로입력하고 ( 모두대문자임에유의 ), 변수값은 3 번과동일한 <JDK 가설치된디렉터리 > 를입력한다. 예를 들어, JDK 가 C:\Program Files\Java\jdk1.8.0_45 에설치되었다면다음을입력한다. C:\Program Files\Java\jdk1.8.0_45 여기서는세미콜론을넣지않는다. 만일 JAVA_HOME 변수가이미있다면편집버튼을누르고 변수값만변경한다. 5. 각대화상자에서확인버튼을눌러서속성창을닫는다. 윈도우 8.1 에서는다음과같이환경변수를지정한다. 1. 시작화면에서화면의오른쪽아래모서리로마우스커서를이동한후참메뉴가나타나면검색 (Search) 을선택하고제어판 (Control Panel) 을입력한다. 검색결과에서제어판아이콘이나타나 면클릭한다. 2. 제어판창이열리면오른쪽위의범주 (Category) 를큰아이콘 (Large Icons) 으로선택한다. 그리고아이콘목록에서시스템 (System) 을선택한다. 3. 앞의 2.2.1 에설명한 2 번부터 5 번까지를똑같이해준다. 2.2.2 맥 OS X 에서설치하기 맥 OS X 최신버전에는기본적으로자바가설치되어있지않을것이다. 자바의설치유 무를확인하기위해터미널창 (terminal window) 을열고다음명령을실행해보자. java -version 2.2 자바 JDK 설치하기 7

자바가설치되어있다면다음과같은내용이터미널창에나타날것이다. java version 1.8.0_45 Java(TM) SE Runtime Environment Java HotSpot(TM) 64-Bit Server VM 그러나자바가설치되지않은경우는오라클자바웹페이지를보여주는 More Info 버튼이있는대화상자와함께다음메시지가나타난다. No Java runtime present, requesting install 오라클자바웹페이지를접속하여맥 OS X 용자바 SE JDK 8 을다운로드하자. 그리고다운로드된디스크이미지 (.dmg 파일 ) 를열고아이콘을더블클릭하여자바패키지를설치한다 ( 그림 2-1 참조 ). 그림 2-1 Java for OS X 인스톨러창이나타나고 JDK 설치가진행될것이다. 그리고설치가완료되면터미널창에서다음명령을실행하자. 앞에서처럼자바버전정보가터미널창에나올것이다. java -version 8 2 안드로이드스튜디오개발환경구성하기

안드로이드스튜디오가자바 JDK를찾을수있도록맥 OS X에서는다음과같이설정해준다. 파인더 (Finder) 창을열고 Applications 밑의 Utilities 폴더를선택한다. 그리고 Java Preferences를실행하고새로설치한 JDK 버전을목록의제일위로올려서우선적으로사용될수있게한다. 2.3 리눅스에서설치하기 만일우분투 (Ubuntu) 64 비트버전이실행중인시스템이라면다음과같이 32 비트라이 브러리지원패키지를먼저설치할필요가있다. sudo apt-get install ia32-libs 그리고윈도우시스템에서처럼다음의오라클웹사이트에서리눅스용자바 JDK 패키지 를다운로드하자. URL http://www.oracle.com/technetwork/java/javase/downloads/index.html 리눅스 JDK 패키지는두가지형태로제공된다. 레드햇엔터프라이즈 (Red Hat Enterprise) 리눅스, 페도라 (Fedora), 센트 OS(CentOS) 등의레드햇기반리눅스시스템에설치하기 위한 RPM 포맷과우분투와같은다른리눅스시스템을위한 tar 포맷이다. 레드햇기반리눅스시스템에서는.rpm JDK 파일을다운로드한후터미널창에서 rpm 명령을사용하여설치한다. 예를들어, 다운로드한 JDK 파일의이름이 jdk-8u45- linux- x64.rpm 이라면설치하는명령은다음과같다. su rpm -ihv jdk-8u45-linux-x64.rpm tar 압축패키지를사용해서설치할때는다음과같이하면된다. 1. JDK 를설치할디렉터리를생성한다. 예를들어, 여기서는 /home/demo/java 로할것이다. 2. 오라클웹사이트에서각자시스템에적합한 tar.gz 패키지를다운로드한다. 2.3 리눅스에서설치하기 9

3. 1 번의디렉터리로이동한후다음명령을실행한다. 여기서 <jdk-file> 은다운로드된 JDK 파일명으로대체하면된다. tar xvfz <jdk-file>.tar.gz 4. 다운로드된 tar.gz 파일을삭제한다. 5. JDK 가설치된디렉터리밑에있는 bin 디렉터리경로를 $PATH 변수에추가한다. 만일 JDK 를설치한디렉터리가 /home/demo/java/jdk1.8.0_45 이면다음내용을 $PATH 환경변수에추 가하면된다. /home/demo/java/jdk1.8.0_45/bin 이경우우리홈디렉터리의.bashrc 파일에하나의명령을추가하는것이일반적이다. 예 를들어, 우리홈디렉터리로이동한후거기에있는.bashrc 파일의맨끝에다음라인을 추가하고저장한다. export PATH=/home/demo/java/jdk1.8.0_45/bin:$PATH 이렇게변경한후에는새로이터미널창을열어 bash 셸 (shell) 을사용할때마다 JDK 의 경로가 $PATH 환경변수에포함될것이다. 따라서자바컴파일러 (javac) 와그외의각 종도구들을쉽게사용할수있다. 2.4 안드로이드스튜디오패키지다운로드하기 안드로이드애플리케이션을개발하면서수행하는대부분의작업은안드로이드스튜디오환경을사용해서처리된다. 안드로이드스튜디오는다음웹페이지에서다운로드할수있다. URL http://developer.android.com/sdk/index.html 페이지중앙의 Download Android Studio for 버튼을누르면접속한컴퓨터의운영체제에맞는최신버전의안드로이드스튜디오다운로드가시작된다 ( 또는그밑의 Other Download Options 링크를클릭한후추가로나타나는 All Android Studio 10 2 안드로이드스튜디오개발환경구성하기

Packages 목록에서선택 ). 그리고그다음화면에서 I have read and agree with the above terms and conditions 를체크하고다운로드버튼을누른후파일다운로드대 화상자에서저장버튼을누르고저장할위치를지정하면다운로드가시작된다. 2.5 안드로이드스튜디오설치하기 다운로드된패키지에는안드로이드스튜디오와안드로이드 SDK 및플러그인모두가포함되어있어서이것을안드로이드스튜디오번들 (bundle) 이라고한다. 따라서다운로드된패키지를설치하면그것들이모두설치되어안드로이드스튜디오에서바로애플리케이션개발을시작할수있다. 설치하는방법은운영체제에따라다르며그내용은다음과같다. 2.5.1 윈도우에서설치하기 다운로드된안드로이드스튜디오설치파일 (android-studio-bundle-< 버전번호 >-windows.exe) 을윈도우탐색기창에서찾은후더블클릭하여실행시키면설치가시작된다. 설치절차는간단하고쉬우며다음과같다. 그림 2-2의안드로이드스튜디오설치대화상자가나타나면 Next 버튼을누른다. 그림 2-2 2.5 안드로이드스튜디오설치하기 11

그러면설치할컴포넌트를선택할수있는대화상자가나타난다 ( 그림 2-3). 그림 2-3 안드로이드스튜디오는기본적으로설치가된다. AVD(Android Virtual Device) 는 5장에서설치할것이므로체크를지우자. 그리고안드로이드 SDK는이미설치된것이없을때만체크하면된다. Intel HAXM( 하드웨어가속기매니저 ) 은설치하는게좋다. Next 버튼을누르면안드로이드 SDK의 License Agreement 대화상자가나타난다 ( 그림 2-4). 그림 2-4 12 2 안드로이드스튜디오개발환경구성하기

I Agree 버튼을누른다. 그러면그림 2-5 의또다른 License Agreement 대화상자가나 타난다. 그림 2-5 여기서도 I Agree 버튼을누른다. 그다음에는안드로이드스튜디오를설치할위치와안 드로이드 SDK 를설치할위치를지정할수있는대화상자가나타난다 ( 그림 2-6). 그림 2-6 2.5 안드로이드스튜디오설치하기 13

여기에나타난디폴트디렉터리에설치해도되고 Browse... 버튼을눌러위치를변경해도된다 ( 단, 안드로이드스튜디오와안드로이드 SDK는서로다른홈디렉터리에설치해야한다는것에유의하자 ). 안드로이드스튜디오에서개발한안드로이드앱은실제장치또는가상장치 ( 에뮬레이터 ) 로실행할수있다. Next 버튼을누르면에뮬레이터의실행속도를빠르게해주는가속기의최대사용메모리를지정하는대화상자가나타난다 ( 그림 2-7). ( 인텔 x86 CPU가아닌시스템에서는이대화상자가나타나지않을수도있다.) 그림 2-7 512MB ~ 1023MB 범위로지정가능하지만윈도우시스템의경우는 512MB 로하는것 이좋다 ( 각자시스템사양에따라권장메모리가다를수있다 ). Next 버튼을누르면시작메뉴 폴더를지정하는대화상자가나타난다 ( 그림 2-8). Install 버튼을누르면설치가시작된다. 14 2 안드로이드스튜디오개발환경구성하기

그림 2-8 안드로이드스튜디오는각자원하는디렉터리에설치할수있다. 시작버튼과메뉴가있는윈도우버전의경우는새로설치한안드로이드스튜디오가 모든프로그램 의메뉴항목으로추가되므로그항목을선택하면실행된다. 윈도우 8의경우는작업표시줄 (task bar) 에추가하여쉽게액세스할수있다. 그렇게하려면안드로이드스튜디오가설치된디렉터리밑의 bin 서브디렉터리에있는안드로이드스튜디오실행파일 (studio.exe 또는 studio64.exe) 에서오른쪽마우스버튼을클릭한후메뉴의작업표시줄에추가 (Pin to Taskbar) 를선택하면된다. 안드로이드스튜디오실행파일은 32비트버전 (studio.exe) 과 64비트버전 (studio64.exe) 으로제공되므로만일 32비트윈도우시스템을실행중이라면 studio.exe 를사용해야한다. 2.5.2 맥 OS X 에서설치하기 맥 OS X 버전의안드로이드스튜디오는디스크이미지파일 (.dmg) 로다운로드된다. 다운로드가끝나면파인더 (Finder) 창에서그파일 (android-studio-ide -< 버전번호 >-mac.dmg) 을찾아서더블클릭하자. 그러면그림 2-9와같이보일것이다. 2.5 안드로이드스튜디오설치하기 15

그림 2-9 설치는간단하다. Android Studio 아이콘을마우스로끌어서 Applications 폴더에놓으면된다. 그러면안드로이드스튜디오패키지가시스템의 Applications 폴더에설치될것이다. 설치된안드로이드스튜디오를실행할때는파인더창을사용해서 Applications 폴더에있는실행파일을찾아더블클릭하면된다. 그리고더쉽게실행시키려면파인더창의안드로이드스튜디오실행파일아이콘을마우스로끌어서 Dock에넣으면된다 (Dock은윈도우시스템의작업표시줄과유사하다 ). 안드로이드스튜디오를실행할때 JVM을찾을수없다는에러대화상자가나타날수있다. 이경우에는 Mac OS X 자바 6 JRE 패키지를다운로드하고설치할필요가있다. 이때는다음링크를접속하여애플사이트에서다운로드하면된다. URL http://support.apple.com/kb/dl1572 그리고 OS X 자바패키지가설치되면안드로이드스튜디오가에러없이실행될것이다. 16 2 안드로이드스튜디오개발환경구성하기

2.5.3 리눅스에서설치하기 터미널창을열고안드로이드스튜디오를설치할디렉터리로이동한후다음명령을실행한다. unzip /< 패키지경로 >/android-studio-ide-< 버전번호 >-linux.zip 다운로드된안드로이드스튜디오번들패키지는 android-studio라는서브디렉터리에설치된다. 따라서이명령이 /home/demo 디렉터리에서실행되었다면 /home/demo/ android-studio 밑에압축이풀려설치될것이다. 설치된안드로이드스튜디오를실행할때는터미널창을열고 android-studio/bin 서브디렉터리로이동한후다음명령을실행하면된다../studio.sh 2.6 안드로이드스튜디오 Setup Wizard 안드로이드스튜디오를설치한후처음실행할때는이전버전의안드로이드스튜디오설정내역을가져오기위한옵션을제공하는대화상자가나타날것이다. 만일여러분의컴퓨터에이전버전의안드로이드스튜디오설정내역이있고새로설치한최신버전에그런설정내역을가져오고자한다면그대화상자에서 I want to import my settings from a custom location 을선택한다. 그러나처음설치하는경우는 I do not have a previous version of Android Studio or I do not want to import my settings 를선택한다. 그다음에 OK 버튼을누른다. 안드로이드스튜디오가로드되면안드로이드스튜디오의사용자인터페이스 (UI) 테마를선택하는대화상자가추가로나타난다. 이것은안드로이드스튜디오 UI의모습을어떤것으로할것인가를나타낸다. 기본적으로지정된 IntelliJ를그대로두고 Next 버튼을누르면그림 2-10의 Setup Wizard 대화상자가나타나고최신버전의각종컴포넌트 (SDK 2.6 안드로이드스튜디오 Setup Wizard 17

포함 ) 를다운로드및설치한다 ( 대화상자의 Show Details 버튼을누르면상세한설치내역을볼수있다 ). 만일앞의그림 2-3 대화상자에서안드로이드 SDK를선택하지않고기존에설치된것을사용할경우에는그림 2-10처럼 SDK의컴포넌트들을최신버전으로업그레이드해준다. 그림 2-10 작업이끝나면 Finish 버튼을누른다. 그러면그림 2-11 의안드로이드스튜디오웰컴스 크린 (Android Studio Welcome screen) 이나타날것이다. 이후에안드로이드스튜디오를 실행할때는 Setup Wizard 가나타나지않고곧바로웰컴스크린이나타난다. 18 2 안드로이드스튜디오개발환경구성하기

그림 2-11 2.7 가장최신버전의안드로이드 SDK 패키지설치하기 지금까지는자바 JDK와안드로이드스튜디오 IDE 및안드로이드 SDK를설치하였다. 이제는필요한패키지들이제대로설치되었는지그리고누락된패키지는없는지확인할필요가있다. 또한 SDK의다른버전들 ( 최신버전포함 ) 도추가로설치또는제거할수있다. 그런작업은안드로이드 SDK에포함된도구 ( 소프트웨어 ) 인안드로이드 SDK 매니저 (Android SDK Manager) 가해주며, 안드로이드스튜디오에서메뉴로선택하여실행할수있다. 안드로이드 SDK의각종도구가안드로이드스튜디오에플러그인되어있기때문에애플리케이션개발에필요한모든작업들을안드로이드스튜디오를벗어나지않고쉽게할수있는것이다. 안드로이드스튜디오를실행시키면앞의그림 2-11과같은웰컴스크린이나타난다. 그리고오른쪽패널의 Configure SDK Manager를선택하면기존에사용하던그림 2-12의 2.7 가장최신버전의안드로이드 SDK 패키지설치하기 19

SDK 매니저 UI( 사용자인터페이스 ) 가독립적인창으로나타난다. 그러나안드로이드스튜디오에서프로젝트를열고작업중일때는메인메뉴의 Tools Android SDK Manager 를선택한후그다음에나타나는새로운 SDK 매니저 UI( 그림 2-13 참조 ) 에서왼쪽밑의 Launch Standalone SDK Manager를클릭하면된다. 그림 2-12 그다음에아래에열거한패키지들의 Status 열에 Installed( 설치됨 ) 로나와있는지확인한다. Tools Android SDK Tools Tools Android SDK Platform-tools Tools Android SDK Build-tools ( 가장최신버전의 ) Android 버전 SDK Platform ( 가장최신버전의 ) Android 버전 ARM EABI v7a System Image, Intel x86 Atom System Image 20 2 안드로이드스튜디오개발환경구성하기

( 가장최신버전의 ) Android 버전 Documentation for Android SDK: 애플리케이션개발시에 수시로참조할 API 문서등이있으므로설치하는것이좋다. 안드로이드 SDK 가설치된디렉 터리밑의 \docs 서브디렉터리에각종문서파일들이저장된다. Extras Android Support Repository Extras Android Support Library Extras Google Repository Extras Google USB Driver( 윈도우시스템에서만필요함 ) Extras Intel x86 Emulator Accelerator (HAXM installer) 안드로이드버전끝에붙은 W는안드로이드웨어 (Wear) 를의미하며몸에착용하는웨어러블 (wearable) 장치의애플리케이션개발이필요한경우만설치한다 ( 안드로이드 4.4 이하버전에서만 필요하며, 5.x 롤리팝부터는따로설치할필요가없다 ). 위의패키지들중 Not Installed( 설치안됨 ) 로나온것이있을때는해당패키지의체크상자를체크한후맨오른쪽밑의 Install packages... 버튼을누르면패키지설치대화상자가나타난다. 그리고 Accept License를선택하고 Install 버튼을누르면설치가시작되며, 우리가지정한패키지를 SDK 매니저가다운로드하고설치한다. 이때진행상태를 SDK 매니저창맨아래쪽에보여준다. 설치가끝나면선택한패키지들의 Status 열에모두 Installed 로나와있는지확인하자. 만일여전히 Not installed 로나오는것이있으면그패키지가선택되었는지다시확인후에 Install packages... 버튼을눌러추가로설치한다 ( 서로다른종류의여러패키지를한번에선택해서설치할때는매패키지마다 Accept License 를따로받으므로 Install 버튼을여러번눌러야되는경우가있다 ). 안드로이드스튜디오 1.3 버전부터는기존에사용하던 SDK 매니저 UI와는다른형태의새로운 SDK 매니저 UI가추가되었다. 이것은기존의 SDK 매니저 UI와기능적으로동일하다. 그러나 SDK 컴포넌트를플랫폼과도구로분류하여알기쉽게해주며, 내부적으로는 SDK 매니저를안드로이드스튜디오에더욱밀접하게통합시켰다는점이다르다. 프로젝트가열려있는안드로이드스튜디오메인메뉴의 Tools Android SDK Manager 를선택하거나 File Settings... Appearance & Behavior System Settings Android SDK 를선택하면, 그림 2-13과같이새로운 SDK 매니저 UI가나타난다. 2.7 가장최신버전의안드로이드 SDK 패키지설치하기 21

그림 2-13 위에있는 Android SDK Location의오른쪽 버튼을누르면 SDK가설치된위치를변경할수있다. 그리고설치또는삭제할컴포넌트는탭으로분류되어있다. SDK Platforms 탭을누르면안드로이드시스템의컴포넌트들을선택할수있으며, SDK Tools 탭을누르면각종도구를선택할수있다. SDK Update Sites 탭에서는업그레이드할것이있는지 SDK 매니저가확인하는사이트를선택할수있다. 탭아래에는설치나삭제할수있는컴포넌트들을보여주며, 오른쪽밑의 Show Package Details를체크하면기존에사용하던그림 2-12의 SDK 매니저 UI와거의동일하게상세한내역이나타나며사용하는방법도거의같다. 제일오른쪽의 Status에서는해당컴포넌트가설치되었는지 (Installed) 또는아닌지 (Not installed) 여부와업그레이드버전이있는지를보여준다. 또한, 설치되지않은컴포넌트의제일왼쪽체크상자를선택하면설치하라는의미이며, 설치된항목의체크를지우면삭제를나타낸다. 그리고선택이끝나고 Apply 버튼을누르면작업을할것인지여부를확인받은후대화상자가추가로나타나서컴포넌트설치작업진행내역을알려준다. 22 2 안드로이드스튜디오개발환경구성하기

2.8 명령행에서안드로이드 SDK 도구사용하기 안드로이드애플리케이션을개발하기위해서는여러가지도구 ( 유틸리티프로그램 ) 들이필요하다. 예를들어, 앞에서설명했던 SDK 매니저와같은도구들이다. 안드로이드 SDK 에는 API 라이브러리외에그런도구들이실행파일로같이제공된다. 애플리케이션을개발하는과정에서그런도구들을우리가일일이찾아서명령행 (command-line) 에서따로따로실행시켜야한다면무척불편할것이다. 따라서안드로이드스튜디오에서는그런도구들을플러그인하여우리가스튜디오환경을벗어나지않아도쉽게실행할수있도록해준다. 그러나때로는그런도구들을명령프롬프트창 ( 윈도우시스템 ) 이나터미널창 ( 리눅스나맥 OS X 시스템 ) 의명령행에서우리가직접실행할필요가생길수있다. 그때는운영체제에서실행파일을쉽게찾을수있도록그런도구들이있는디렉터리경로를시스템의 PATH 환경변수에지정할필요가있다. 다음경로를 PATH 변수에추가하자. 여기서 <path_to_android_sdk_installation> 은안드로이드 SDK가설치된파일시스템위치를나타낸다 ( 여기서맥 OS X이나리눅스의경우는 \ 대신 / 사용 ). <path_to_android_sdk_installation>\sdk\tools <path_to_android_sdk_installation>\sdk\platform-tools 각자시스템에설치된 SDK의위치는 SDK 매니저를실행시킨후매니저창의맨왼쪽위를보면알수있다. 예를들어, 윈도우시스템에서는그림 2-14와같다. 그림 2-14 2.8 명령행에서안드로이드 SDK 도구사용하기 23

PATH 변수에추가하는방법은사용중인운영체제에따라다르며그내용은다음과같다. 2.8.1 윈도우 7( 윈도우 XP 와비스타도동일 ) 1. 시작메뉴의내컴퓨터에서오른쪽마우스버튼을클릭한후속성을선택한다. 2. 속성 ( 시스템등록정보 ) 창에서고급탭을선택한후환경변수버튼을누른다. 3. 환경변수대화상자에서시스템변수의 Path 변수를찾고편집버튼을누른다. 문자열의맨끝에바로위의두가지경로를추가한다. 이때각경로는세미콜론 (;) 으로구분해야한다는것 에유의하자. 예를들어, 안드로이드 SDK 가 C:\Users\demo\AppData\Local\Android\sdk 에설 치되었다면 Path 변수끝에다음을추가하면된다. ; C:\Users\demo\AppData\Local\Android\sdk\platform-tools; C:\Users\demo\AppData\Local\Android\sdk\tools 4. 각대화상자에서확인버튼을눌러서속성창을닫는다. 그러면 path 지정이잘되었는지확인해보자. 명령프롬프트창을열고다음명령을실행한다. echo %Path% 반환되는 path 변수의값에안드로이드플랫폼도구의경로가포함되어있어야한다. 그리고다음과같이 adb를실행시켜서 platform-tools 경로가잘지정되었는지확인해보자. adb 제대로실행되면지정가능한명령행옵션들의내역을보여줄것이다. 마찬가지로안드로이드 SDK 매니저를실행시켜서 tools 경로가잘지정되었는지확인하자. android 24 2 안드로이드스튜디오개발환경구성하기

이두가지명령중어느하나라도다음과같은메시지가나온다면 Path 환경변수에 추가한경로가잘못된것이다. adb is not recognized as an internal or external command, operable program or batch file. 2.8.2 윈도우 8.1 1. 시작화면에서화면의오른쪽아래모서리로마우스커서를이동한후참메뉴가나타나면검색 (Search) 을선택하고제어판 (Control Panel) 을입력한다. 검색결과에서제어판아이콘이나타 나면클릭한다. 2. 제어판창이열리면오른쪽위의범주 (Category) 를큰아이콘 (Large Icons) 으로선택한다. 그리고아이콘목록에서시스템 (System) 을선택한다. 3. 앞의 2.8.1 에설명한 2 번부터 4 번까지를똑같이해준다. 그다음에는 path 지정이잘되었는지확인해보자. 화면의오른쪽밑모서리로마우스 커서를이동한후검색을선택하고 cmd 를입력한다. 검색결과에서명령프롬프트를선 택하여명령프롬프트창을연다. 명령프롬프트창에서다음명령을실행한다. echo %Path% 반환되는 path 변수의값에안드로이드플랫폼도구의경로가포함되어있어야한다. 그리고다음과같이 adb를실행시켜서 platform-tools 경로가잘지정되었는지확인해보자. adb 제대로실행되면지정가능한명령행옵션들의내역을보여줄것이다. 마찬가지로안드로이드 SDK 매니저를실행시켜서 tools 경로가잘지정되었는지확인하자. 2.8 명령행에서안드로이드 SDK 도구사용하기 25

android 이두가지명령중어느하나라도다음과같은메시지가나온다면 Path 환경변수에 추가한경로가잘못된것이다. adb is not recognized as an internal or external command, operable program or batch file. 2.8.3 리눅스 리눅스에서는자바 JDK 설치시수정했던.bashrc 파일을한번더수정하면된다. 안드로이드 SDK가 /home/demo/android/sdk 에설치되었다면.bashrc 파일의 export 라인을다음과같이수정하면된다. export PATH=/home/demo/java/jdk1.8.0_45/bin:/home/demo/Android/sdk/ platform tools:/home/demo/android/sdk/tools:/home/demo/android-studio/ bin:$path 맨끝에 android-studio/bin 디렉터리를추가한것에유의하자. 안드로이드스튜디오를실행시키는 studio.sh 스크립트를터미널창의현재디렉터리와관계없이실행할수있게하기위함이다. 2.8.4 맥 OS X 맥 OS X에서 $PATH 환경변수를변경하는방법은여러가지가있을수있다. 그중에서가장확실한방법은 $PATH에추가될경로를포함하는새로운파일을 /etc/paths. d 디렉터리에추가하는것이다. 안드로이드 SDK를설치한위치가 /Users/demo/Library/ Android/sdk 라고한다면다음두라인을포함하는 android-sdk 라는파일을 /etc/paths.d 디렉터리에생성하여경로를구성할수있다. /Users/demo/Library/Android/sdk/tools /Users/demo/Library/Android/sdk/platform-tools 26 2 안드로이드스튜디오개발환경구성하기

이것은시스템디렉터리이므로파일을생성할때 sudo 명령을사용해야한다는것에유 의하자. 예를들면, 다음과같다. sudo vi /etc/paths.d/android-sdk 2.9 안드로이드스튜디오와 SDK 의버전업그레이드하기 종종안드로이드스튜디오와안드로이드 SDK의새로운릴리스 (release) 가나오곤한다. SDK의경우는그림 2-12와그림 2-13에서설명한두가지형태의 SDK 매니저 UI 중하나를사용하여업그레이드한다. 안드로이드스튜디오를업그레이드하는방법은두가지가있다. 안드로이드스튜디오웰컴스크린의제일밑에있는 Check for updates now를클릭하거나프로젝트가열려있는안드로이드스튜디오메인메뉴에서 Help Check for Update... 를선택하면된다. 안드로이드스튜디오 1.3 버전부터는 SDK 매니저가안드로이드스튜디오에밀접하게통합되면서안드로이드스튜디오는물론이고안드로이드 SDK 컴포넌트도업그레이드할것이생기면자동으로통보해준다. 그리고통보된메시지의 Update 버튼을클릭하면그림 2-13의새로운 SDK 매니저 UI가나타나서우리가원하는것을업그레이드할수있다. 2.10 안드로이드 SDK 와자바 JDK 의설치경로변경하기 안드로이드스튜디오를설치하고사용하다가여러가지이유로안드로이드 SDK나자바 JDK의설치경로를변경할필요가생길수있다. 예를들어, 자바 JDK의새로운버전을다른경로에설치하고그것을안드로이드스튜디오에서사용하고자할경우이다. 이때는변경된경로를안드로이드스튜디오에게알려주어야한다. 그방법은간단하다. 우선, 안드로이드스튜디오를실행시키면앞의그림 2-11과같은웰컴스크린이나타난다. 그리고오른쪽 Quick Start 메뉴의 Configure를선택하면각종설정을할수있는대화상자가나타난다. 거기에서제일밑의 Project Defaults 를선택하면안드로이드스튜디오프로젝트의기본설정을지정할수있는대화상자가나타나며, 거기에서 Project Structure 를 2.10 안드로이드 SDK 와자바 JDK 의설치경로변경하기 27

선택하면안드로이드 SDK와자바 JDK의설치경로를변경할수있는대화상자가나타난다. 그다음에오른쪽의 버튼을눌러원하는경로로변경한후 OK 버튼을누르면된다. 이렇게경로를변경하면이후의모든안드로이드스튜디오프로젝트에이설정이적용되어처리된다. 2.11 요약 안드로이드애플리케이션을개발하기에앞서제일먼저할일은자신에게맞는개발환경을구축하는것이다. 그러기위해서는자바 JDK, 안드로이드 SDK, 안드로이드스튜디오를설치해야한다. 이번장에서는세가지운영체제 ( 윈도우, 맥 OS X, 리눅스 ) 에그런패키지들을설치하는데필요한내용을알아보았다. 28 2 안드로이드스튜디오개발환경구성하기