Citrine is native mobile framework.
▶ About Citrine
- It’s a component based structure and mobile app development platform with Web
technologies (XML(MOML), Java Script)
▶ Feature of Citrine
- Object Oriented Approach
This approach solves inefficiency for mobile app development through object oriented
approaches using MOML (Mobile Object Markup Language)
- Simple functional definition
This defines complicated functions by abstracting them matched with actual usage.
- Independent development
This independently separates library developers from application developments and
implements a base to integrate them easily.
- Component based structure
It provides a base by which services developed by service providers are integrated
with other applications.
Citrine is native mobile framework.
▶ About Citrine
- It’s a component based structure and mobile app development platform with Web
technologies (XML(MOML), Java Script)
▶ Feature of Citrine
- Object Oriented Approach
This approach solves inefficiency for mobile app development through object oriented
approaches using MOML (Mobile Object Markup Language)
- Simple functional definition
This defines complicated functions by abstracting them matched with actual usage.
- Independent development
This independently separates library developers from application developments and
implements a base to integrate them easily.
- Component based structure
It provides a base by which services developed by service providers are integrated
with other applications.
goorm is the cloud-based Integrated Development Environment. It is developed in only javascript and using various open source libraries. It is also an open-source project. goorm supports currently C/C++ and Java as well as HTML, CSS, PHP and Javascript. Other languages will be supported with plugin.
goorm is the cloud-based Integrated Development Environment. It is developed in only javascript and using various open source libraries. It is also an open-source project. goorm supports currently C/C++ and Java as well as HTML, CSS, PHP and Javascript. Other languages will be supported with plugin.
3. 1. SNS 이해
◈ SNS, Socialmedia
Social
Media
3 3/56
4. 1. SNS 이해
◈ SNS, Socialmedia
사회 구성원들의 의견 , 생각 , 경험 등
을 서로 공유하기 위해 사용하는 개방화
된 온라인 플랫폼 또는 미디어 툴
누구나 미디어를 생산해내는 생산자
동시에 소비자다 .
4 4/56
5. 안드로이드 소개
학습목표
모바일 운영체제의 일반적인 특징과 새롭게 등장한 안드로이드의 주요 특
징 및 전체적인 아키텍처를 알아본다 .
안드로이드 학습을 위한 개발 환경을 설치하고 원활한 실습을 위한 환경
설정 방법을 알아본다 .
내용
모바일 개발
안드로이드 학습 가이드
개발 환경 구축
5/56
6. 1. 모바일 개발
모바일 환경
모바일 , 디지털 생활의 중심
기존 핸드폰과의 차이 ( 스마트폰 vs 핸드폰 )
• 기존의 핸드폰은 통화 기능만 제공함 .
• 스마트폰은 MP3, 동영상 감상 , DMB, 카메라 , GPS 등의 첨단 기능을 제공함 .
6/56
7. 1. 모바일 개발
모바일 환경
모바일의 발달 배경
• 작은 부피로도 많은 데이터의 저장이 가능한 메모리 .
• 프로세서 파워의 향상 .
• 배터리 효율의 향상 .
모바일 운영체제 ( 노말폰 vs 스마트폰 )
모바일 운영체제
• 모바일에서 실행되는 운영체제 .
• 모바일 하드웨어 자원을 직접 제어하고 관리하는 시스템 소프트웨어 .
• 데스크톱 운영체제에 비해 부피가 작고 상대적으로 쉽게 개발 가능함 .
노말폰 (Nomal Phone) 의 특징
• 별도의 운영체제가 없고 통화 기능만 제공 .
• 제조사에서 미리 설치해 놓은 프로그램만 사용 가능 .
• 제한적인 기능만 제공 .
• 잔 고장이 없으나 소프트웨어 추가 설치가 거의 불가 .
7/56
8. 1. 모바일 개발
모바일 운영체제 ( 노말폰 vs 스마트폰 )
스마트폰의 특징
• 필요에 따라 프로그램의 추가 설치 가능 .
• 폰에 별도의 운영체제가 필요 .
• 다양한 기능 제공 .
• 잔 고장이 많지만 소프트웨어 추가 설치가 가능 .
모바일 운영체제의 종류
• Palm
• RIM
• 윈도우 모바일
• 심비안
• iPhone OS
8/56
9. 1. 모바일 개발
모바일 운영체제 ( 노말폰 vs 스마트폰 )
2009 년 2 분기에 조사된 모바일 운영체제 점유율
• 심비안이 과반 이상의 점유율을 차지하고 있지만 점점 쇠퇴해가고 있는 중이라 앞으로는 크게 영
향력을 행사하지 못할 것임 .
• 모바일 운영체제들은 구조가 완전히 달라 프로그램끼리 서로 호환되지 않으며 , 고유한 장단점을
가지고 있음 .
9/56
10. 1. 모바일 개발
모바일 점유율
OS 2009 2010 2011 2014
심비안 46.9% 40.1% 34.2% 30.2%
안드로이드 3.9% 17.7% 22.2% 29.6%
RIM 19.9% 17.5% 15.0% 11.7%
iOS 14.4% 15.4% 17.1% 14.9%
윈도우폰 8.7% 4.7% 5.2% 3.9%
기타 6.1% 4.7% 6.3% 9.6%
10/56
11. 1. 모바일 개발
안드로이드의 History
개발
• 2005 년 7 월 , 개발 시작
• 2007 년 11 월 , 안드로이드 첫 버전 릴리즈
• 2008 년 10 월 , 최초의 상용 안드로이드 폰 출시 (HTC 사의 G1)
• 정식버전이 발표된지 3 년이 되지 않은 젊은 운영체제
안드로이드 SKD
• 구글이 2008 년 부터 SDK 와 문서를 배포하고 주지적으로 업그레이드 하고 있음 .
11/56
12. 1. 모바일 개발
안드로이드 SDK
2.2 Froyo( 프로요 )
• 2010 년 5 월 발표
• 웹브라우징의 성능 개선
• 자바 실행 속도 향상
• 메모리 관리 능력향상
12/56
13. 1. 모바일 개발
안드로이드 SDK
2.3 Gingerbread( 진저 브레이드 )
• 2010 년 12 월에 발표
• 개발자를 위한 JVM 의 가비지 컬렉션을 개선
• UI 개선
• 근거리 통신 기술 지원 (2.3.3)
• GPS 수신 , 배터리 소모 개선 (2.3.4)
13/56
14. 1. 모바일 개발
안드로이드 SDK
3.0 Honeycomb( 허니컴 )
• 2011 년 4 월 11 일에 발표
• 테블릿 PC 전용 운영체제
• UI 홀로그래픽 탑재
• 멀티태스킹 지원
• 위젯 기능 강화
• 웹브라우징 개선
14/56
15. 1. 모바일 개발
안드로이드 SDK
Ice cream Sandwich( 아이스크림 샌드위치 )
• 안드로이드 4.0 버전으로 11 월에 발표 예정
• 테블릿용 기능들을 스마트폰에 적용할 예정
15/56
16. 1. 모바일 개발
안드로이드의 등장
안드로이드는 새로 등장한 모바일 운영체제
개발 주체는 OHA(Open Handset Alliance) 컨소시엄으로 되어 있지만 , 실질적인 리더는
인터넷 검색 업체인 구글 (Google) 임
안드로이드 운영체제의 특징
비독점 개방 플랫폼을 지향
개방 플랫폼 vs 비개방 플랫폼
[ 개방 플랫폼 ]
•라이선스 비용이 없음 .
•개발이 자유로움 .
•개발툴들의 성능이 낮고 문제 발생 시 , 기술 지원을 받을 수 없음 .
[ 비개방 플랫폼 ]
•라이선스 비용 지불 .
•개발 환경이 잘 구축되어 있음 .
•문제 발생 시 , 기술 지원이 가능 .
16/56
17. 1. 모바일 개발
안드로이드의 특징
운영체제의 핵심이라고 할 수 있는 커널은 공개 운영체제인 리눅스에 기반 한다 .
안드로이드 개발에 공식적으로 자바 언어를 사용한다 .
검증된 많은 라이브러리들을 대거 포함하고 있어 웬만한 기능은 별도의 외부 라이브러리
를 사용할 필요가 없다 .
플랫폼에 내장된 빌트인 프로그램과 사용자가 만든 프로그램이 동일한 API 를 사용하므
로 모든 프로그램은 평등하다 .
개방된 환경인만큼 개발툴과 관련 문서들이 모두 무료로 제공된다 .
안드로이드의 단점
• 오래되지 않은 만큼 숙련된 개발자가 많지 않으며 , 관련 자료도 부족하다 .
• 공식 문서가 아직 완비되지 않은 상태다 .
• SDK 도 너무 자주 업그레이드되어 안정적이지 못하며 개발툴의 사소한 버그들도 상당히 많은 편
이다 .
17/56
18. 1. 모바일 개발
안드로이드의 아키텍처
효율적이고 안정적인 자원 관리를 위해 계층을 구성하였다 .
하위에서는 저수준 지원 요소들이 있고 상위로 올라갈수록 응용 요소들이 있다 .
추상화와 보안을 위한 인접한 계층끼리만 통신할 수 있다 .
⑤
④
② ③
①
안드로이드 아키텍처
18/56
19. 1. 모바일 개발
안드로이드의 아키텍처
① : 리눅스 커널
• 백그라운드 스레드 , 메모리 관리 , 보안 , 디바이스 드라이버 등의 저수준 관리 기능을 담당함 .
• 디바이스 드라이버의 지원이 광범위함 .
② : 라이브러리
• 라이브러리는 장비의 전반적인 속도를 결정하는 중요한 요소임 .
• 공직 언어인 자바가 아니라 C 로 작성되어 있음 .
• 안드로이드 라이브러리 종류
• BSD 파생 libc 라이브러리
• 2D 그래픽을 위한 서피스 관리자 및 SGL
• 3D 그래픽을 위한 OpenGL
• 벡터 폰트 출력을 위한 FreeType
• 오디오 , 비디오 재생을 위한 미디어 지원
• 데이터베이스 지원을 위한 SQLite
• 인터넷 브라우징을 위한 SSL 과 크롬 , 사파리에 채용된 WebKit
19/56
20. 1. 모바일 개발
안드로이드의 아키텍처
③ : 런타임
• 달빅 가상 머신과 자바 코어 라이브러리로 구성되어 있음 .
• 안드로이드는 자바 가상 머신을 직접 사용하지 않으며 모바일 환경에 최적화한 달빅 (Dalvik) 가상
머신을 사용함 .
• 각 프로세스별로 별도의 달빅 가상 머신이 할당되므로 안정성이 높고 메모리 사용량을 줄여 복수
개의 가상 머신도 효율적으로 동작하도록 설계되었음 .
④ : 프레임워크
• 안드로이드의 API.
• 응용 프로그램들은 하위의 커널이나 시스템 라이브러리를 직접적으로 호출할 수 없으며 API 를
통해서 기능을 요청해야 함 .
• API 는 하드웨어 액세스를 추상화하며 UI 제작에 필요한 위젯을 정의하고 시스템 라이브러리와
통신할 수 있는 래퍼를 제고함 .
⑤ : 응용프로그램
• 인터넷 브라우저 , 바탕화면 , 주소록 등 플랫폼과 함께 설치되는 애플릿들은 물론이고 마켓에서
다운받아 설치하는 게임 , 유틸리티 등도 모두 이 수준에서 실행됨 .
20/56
21. 1. 모바일 개발
안드로이드 실행
안드로이드 실행 파일은 전통적인 실행 파일과 다름
전통적인 실행 파일
• 실행 파일에는 프로그램을 구성하는 코드와 데이터가 들어 있음 .
• 실행 파일이 메모리상으로 올라와 실행을 시작하면 프로세스가 됨 .
• 실행 파일과 프로세스가 1:1 로 대응되며 응용 프로그램끼리는 서로 독립적임 .
안드로이드의 실행 파일
• 실행 파일은 같은 패키지에 속한 자바 클래스와 리소스의 집합일 뿐이며 프로세스와 반드시 대등
되지 않음 .
• 응용 프로그램끼리 서로의 기능을 공유할 수 있음 .
• 다른 프로그램의 구성 요소를 불러와 같은 주소 공간에서 실행할 수 있음 . ( 윈도우의 COM 이나
OMG 의 CORBA 등과 개념적으로 유사함 )
• 안드로이드 응용 프로그램은 적절한 권한만 있으면 누구든지 인스턴스화할 수 있는 4 개의 컴포넌
트로 구성됨 .
• main 같은 유일한 진입점이 따로
21/56
22. 1. 모바일 개발
안드로이드 실행
안드로이드의 응용 프로그램
• 안드로이드 응용 프로그램은 적절한 권한만 있으면 누구든지 인스턴스화할 수 있는 4 개의 컴포넌
트로 구성된다 .
• main 같은 유일한 진입점이 따로 없으며 처음으로 생성되는 인스턴스의 생성자가 실직적인 진입
점이 된다 .
인스턴화할 수 있는 4 개의 컴포넌트 : 액티비티 , 서비스 , 방송 수신자 , 콘텐트 제공자
[ 액티비티 ]
• 사용자 인터페이스를 구성하는 기본 단위다 . 눈에 보이는 화면 하나가 액티비티이며 여러개의 뷰
들로 구성된다 .
• 응용 프로그램은 필요한 만큼의 액티비티를 가질 수 있으며 그 중 어떤 것을 먼저 띄울지를 지정
한다 .
[ 서비스 ]
• UI 가 없어 사용자 눈에 직접적으로 보이지 않으며 백그라운드에서 무한히 실행되는 컴포넌트다 .
• 전형적인 예로 미디어 플레이어를 들 수 있는데 비활성화된 상태라도 노래는 계속 재생되어야 한
다.
• UI 가 없으므로 사용자의 명령을 받아들일 수 있는 액티비티와 연결해서 사용된다 .
22/56
23. 1. 모바일 개발
인스턴화할 수 있는 4 개의 컴포넌트
[ 방송수신자 (Broadcast Receiver) ]
•시스템으로부터 전달되는 방송을 대기하고 신호 전달 시 수신하는 역할을 한다 .
•예를 들어 배터리가 떨어졌다거나 사진을 찍었다거나 네트워크 전송이 완료되었다는등의 신호를 받
는다 .
•신호만 대기할 뿐 UI 를 따로 가지지는 않으므로 방송 수신 시 방송의 의미를 해석하고 적절한 액티
비티를 띄우는 역할을 한다 .
[ 콘텐트 제공자 (Content Provider)]
•다른 응용 프로그램을 위해 자신의 데이터를 제공한다 .
•안드로이드는 보안이 엄격하여 다른 응용 프로그램의 데이터를 함부로 액세스 하지 못하도록 되어
있다 .
•응용 프로그램 간에 데이터를 공유할 수 있는 합법적인 유일한 장치가 바로 콘텐트 제공자다 .
응용 프로그램은 액티비티 , 서비스 , 방송 수신자 , 콘텐트 제공자 중 일부만을 가질 수
도 있고 여러 개를 가질 수도 있다 .
23/56
24. 2. 안드로이드 학습 가이드
안드로이드 학습
모바일 환경은 일반 데스크톱 환경에 비해 많은 제약 사항이 존재하므로 모바일 플랫폼과
모바일 환경 자체에 대해서도 어느 정도의 상식이 있어야 한다 .
안드로이드 개발을 위한 선수 과목
자바
• 안드로이드의 SDK 가 자바로 제공되며 기본 언어가 자바이므로 자바 언어에 대한 문법적 이해가
필수적이다 .
XML 문서
• 안드로이드는 레이아웃 배치와 리소스 정의 , 응용 프로그램 설정 구성 등에 XML 문서를 광범위
하게 사용한다 .
이클립스
• 공식 개발툴인 이클립스의 사용법도 잘 알아야 한다 .
24/56
25. 2. 안드로이드 학습 가이드
안드로이드 학습 준비
안드로이드가 리눅스 커널에 기반을 두지만 리눅스를 잘 몰라도 상관없다 . 윈도우 환경
에서 학습 및 개발을 한다면 리눅스를 직접 다룰 필요는 없다 .
학습을 위해 하드웨어를 따로 준비할 필요는 없고 컴퓨터만 있으면 된다 .
에뮬레이터가 잘 구비되어 있으므로 폰을 따로 준비하지 않아도 된다 .
풍부한 모바일 사용 경험 . 모바일 사용 경험이 풍부해야 사용자를 배려하느 좋은 프로그
램을 만들 수 있다 . 안드로이드 자체의 난이도가 높지는 않지만 플랫폼 자체에 대한 경험
은 상당히 중요하다 .
25/56
26. 3. 개발환경 구축
안드로이드 개발 환경의 특징
통합된 개발 환경을 한 회사에서 주도적으로 만든 것이 아니어서 이것저것 설치해야 하고
순서도 잘 지켜야 한다 .
사용할 버전이나 운영체제에 따라 약간씩 달라지는 부분이 있고 사소한 버그도 있어 충분
한 주의를 기울여야 한다 .
안드로이드 개발 관련 프로그램 설치 순서
• JDK 1.6 업데이트 18
• 이클립스 3.5
• ADT 플러그인
• 안드로이드 S 아 2.1
• AVD 생성 및 옵션 조정
JDK 설치
안드로이드의 기본 개발 언어가 자바이므로 JDK 를 먼저 설치한다 .
JDK 에 JRE 가 포함되어 있으므로 JRE 만 따로 설치할 필요는 없다 .
JDK 는 사용 목적에 따라 SE(Standard Edition), EE(Enterprise Edition), ME(Mobile
Edition) 등 세 가지로 제공되는데 안드로이드 개발에는 SE 나 EE 를 사용한다 .
26/56
27. 3. 개발환경 구축
JDK 설치
JDK 는 가급적 최신 버전으로 설치한다 .
JDK 는 Sun 사이트에서 구할 수 있다 . (java.sun.com)
27/56
28. 3. 개발환경 구축
JDK 설치
다운받은 설치 파일을 실행하면 라이선스 , 동의창이 나타나고 설치할 기능을 묻는다 .
• 디폴트로 전부 선택되어 있으며 목록의 아이콘을 클릭해 제외시킬 수 있지만 웬만하면 다 설치하
는 것이 좋다 .
• 설치 경로는 디폴트인 Program Files 로 하고 [Next] 버튼을 눌러 설치를 시작한다 .
• 설치 완료 대화상자에서 [Finish] 버튼을 누르면 설치가 종료된다 .
28/56
29. 3. 개발환경 구축
JDK 설치 확인
설치 확인 코드 ‘ Hello.java’
class Hello {
public static void main(String args[]) {
System.out.println("First Java Program");
}
}
Hello.java 파일을 bin 폴더에 저장 후 , 명령행에서 다음과 같이 컴파일 및 실행한다 .
• 명령행에 문자열이 출력되면 JDK 가 제대로 설치된 것이다 .
29/56
30. 3. 개발환경 구축
이클립스
안드로이드 응용 프로그램 개발에는 주로 이클립스를 사용한다 .
이클립스는 통합 개발 환경을 제공한다 .
이클립스 다운 (www.eclipse.org)
클
릭
30/56
31. 3. 개발환경 구축
이클립스
홈페이지 상단 메뉴의 Downloads 를 클릭하면 이클립스의 여러 가지 버전을 다운받을 수
있는 링크들이 나타난다 .
이클립스는 유로파 (3.3.x), 가니메데 (3.4.x), 갈릴레오 (3.5.x) 식으로 목성의 위성 이름을
붙여 릴리즈하며 언어나 플랫폼에 따라 여러 가지 버전이 제공되는데 안드로이드 개발용
으로는 클래식 버전이나 엔터프라이즈 버전이 적합하다 .
Eclipse IDE for Java EE Developer 오른쪽의 Windows 32bit 링크를 눌러 윈도우 버전
을 다운받는다 .
• eclipse-jee-galileo-SR1-win32.zip(189M)
압축 파일 안에 eclipse 폴더가 있는데 이 폴더를 C:Program Files 폴더에 압축을 푼다 .
물론 시스템 상황에 따라 다른 폴더에 압축을 풀어도 상관없다 .
eclipse 폴더 안의 eclipse.exe 가 주 실행 파일이다 . JRE 만 제대로 설치되어 있다면 별
문제없이 실행된다 .
31/56
32. 3. 개발환경 구축
이클립스
최초 실행 시 , 워크 스페이스를 물어 본다 .
이후 C:AndroidExam 폴더 아래에 실습 프로젝트를 생성할 것이다 .
실무를 할 때는 이클립스 메뉴의 [File-Switch workspace] 명령으로 워크스페이스를 언제
든지 변경할 수 있다 .
32/56
33. 3. 개발환경 구축
이클립스
[workbench] 를 클릭하면 개발 환경으로 들어간다 .
33/56
34. 3. 개발환경 구축
이클립스 테스트
[File-New-Project...] 명령을 실한 한다 .
34/56
35. 3. 개발환경 구축
이클립스 테스트
마법사 선택 대화상자에서 [Java-Java Project] 를 선택하면 새 프로젝트를 만드는 대화상
자나 나타난다 .
프로젝트 이름에 “ FirstEclipse” 를 입력하고 나머지 옵션은 디폴트로 한다 .
35/56
36. 3. 개발환경 구축
이클립스 테스트
( 참고 ) 사용 중인 이클립스 버전에 따라 다음과 같은 대화상자가 나타날 수도 있다 .
• 자바 프로젝트는 Java 퍼스펙티브가 접합하므로 변경하겠느냐는 질문이다 . 디버그 모드로 진입
할 때도 동일한 질문을 하는데 메시지를 잘 읽어 보고 [Yes] 버튼을 클릭한다 .
36/56
37. 3. 개발환경 구축
이클립스 테스트
소소 파일 추가
• 메뉴에서 [File-New-Class] 명령을 선택하고 Name 란에 프로젝트명과 똑같은 이름을 설정한다 .
• 주 소스는 main 메서드도 같이 생성해야 하므로 public static void main(String[] args) 옵션을 선
택한다 .
37/56
38. 3. 개발환경 구축
소소 파일 추가
• main 메소드 안쪽에 다음 코드를 작성한다 . ( 문자열을 출력하는 간단한 출력문이다 .)
소스 컴파일
• [File-Save( + )] 명령을 선택하면 소스가 저장되면서 자동으로 컴파일 된다 .
• 이클립스의 디폴트 옵션이“저장시 컴파일”로 되어 있어서 저장만 하면 컴파일 된다 . 소스에 오타
가 있다면 아래쪽의 Problems 창에 에러가 발생한 곳과 에러 원인이 출력되는데 수정 후 다시 저
장하면 된다 .
• 에러가 없으면 Problems 에 아무 것도 나타나지 않으며 “ 0 items” 라고 표시 된다 .
38/56
39. 3. 개발환경 구축
소소 파일 실행
• 저장 및 컴파일 되었으면 [Run-Run( + )] 명령으로 실행한다 .
• 명령창이 따로 열리지 않고 아래쪽의 Console 창에 실행 결과가 나타난다 . 문자열이 출력되면 모
든 것이 정상적으로 잘 설치된 것이다 .
프로젝트 폴더의 구조
• 프로젝트 폴더의 구조는 아주 단순하다 .
• src 폴더에 소스 파일이 저장되고 bin 폴더에 컴파일 된 실행 파일이 저장되며 프로젝트 루트 폴
더에는 두 개의 설정 파일이 생성된다 .
39/56
40. 3. 개발환경 구축
플러그인
플러그인은 이클립스와 안드로이드를 연결하는 설정이다 .
이클립스는 플러그인이라는 장치를 통해 임의의 플랫폼에 대한 개발툴을 추가 설치할 수
있도록 지원하며 구글은 이클립스에 플러그인 되는 안드로이드 개발 킷을 제공한다 .
안드로이드 개발 킷을 ADT(Android Development Tool) 라 한다 .
ADT 패킷
• 안드로이드 프로젝트 생성 마법사
• XML 레이아웃 편집기
• 패키지 제작툴
• 이클립스에 통합된 DDMS
이클립스의 [Help-Install New
Software] 명령을 선택하면 업데
이트 대화상자가 나타난다 .
업데이트 대화 상자
40/56
41. 3. 개발환경 구축
플러그인
대화상자에서 [Add] 버튼을 누르고 ADT 가 있는 위치를 가르쳐 준다 .
ADT 는 https://dl-ssl.google.com/android/eclipse/ 사이트를 통해 배포된다 .
• 접속 프로토콜이 보안이 적용된 https 이다 . 네트워크 상황에 따라 방화벽이나 보안 문제로 인해
접속이 안 되는 경우가 종종 있는데 이 경우 https 를 http 로 바꿔 주면 된다 .
41/56
42. 3. 개발환경 구축
플러그인
접속 사이트에서 제공하는 플러그인의 목록이 표시되는데 중앙의 목록에 Developer
Tools 라는 항목이 나타난다 .
• ADT 와 DDMS 두 개의 플러그인이 포함되어 있는데 루트의 Developer Tools 항목을 클릭해 전
체 선택하고 [Next] 버튼을 누르면 이클립스가 이 소프트웨어를 다운받고 설치까지 자동으로 수
행한다 .
42/56
43. 3. 개발환경 구축
플러그인
플러그인 설치
• 운영체제에 따라 서명이 누락된 소프트웨어라는 보안 경고가 뜨는 경우도 있는데 무시해도 상
• 관 없다 .
• ADT 설치가 완료되면 이클립스를 재시작하라는 메시지 박스가 나타난다 . 새로 추가된 기능에 의
해 이클립스의 기능이 완전히 바뀔 수 있으므로 가급적이면 재시작하는 것이 좋다 .
• 이클립스가 자동 종료되었다가 재시작 되면 ADT 설치가 완료된 것이다 .
43/56
44. 3. 개발환경 구축
안드로이드 SDK
SDK(Software Development Kit)
• 특정한 소프트웨어 꾸러미 , 소프트웨어 프레임워크 , 하드웨어 플랫폼 , 컴퓨터 시스템 , 게임기
, 운영 체제 등을 위한 응용 프로그램을 만들 수 있게 하는 개발 도구의 집합이다 .
안드로이드를 위한 SDK
• 안드로이드 개발 라이브러리 , 도움말 문서 , 개발 보조 툴 등을 포함하므로 용량이 방대하다 .
• 개발 목적에 따라 필요한 SDK 목록이 틀리고 업데이트 빈도가 잦기 때문에 꼭 필요한 부분만 선
택적으로 설치 및 업데이트할 수 있도록 되어 있다 .
• 개발에 필요한 파일은 SDK 를 통해 배포되며 ADT 는 이클립스와 SDK 를 연결해 주기만 한다 .
• 안드로이드 SDK 사이트 http://developer.android.com
44/56
45. 3. 개발환경 구축
안드로이드 SDK
안드로이드 SDK 설치
• 안드로이드 SDK 사이트 http://developer.android.com
• 윈도우용 , 매킨토시용 , 리눅스용 SDK 가 각각 제공되는데 윈도우 환경에서 실습을 진행하므로
윈도우용을 다운받는다 .
45/56
46. 3. 개발환경 구축
안드로이드 SDK 설치
• 라이브러리와 문서들로 구성되어 있으므로 따로 설치할 필요는 없고 압축만 풀어 두면 된다 .
• 아무 곳에나 풀어도 상관없지만 Program Files 폴더 안에 두도록 하자 .
SDK 설정
• ADT 에게 SDK 가 어디에 있는지 위치를 설정한다 .
• 이클립트의 [Window-Preference] 메뉴를 선택하고 왼쪽 메뉴에서 Android 를 클릭한 후 SDK 폴
더의 위치를 지정한다 . 앞에서 다운 받아 압축을 풀어둔 폴더를 지정해 주면 된다 .
• 단순한 디렉토리에 불과하므로 여러 개의 SDK 를 설치해 놓고 번갈아 가며 사용하는 것도 가능하
며 워크스페이스별로 각각 다른 버전 의 SDK 를 사용할 수도 있다 .
46/56
47. 3. 개발환경 구축
안드로이드 SDK 추가 설치
• SDK 의 위치를 지정했다면 다음은 추가로 더 필요한 SDK 요소들을 다운받는다 .
• 이클립스의 메뉴에서 [Window-Android SDK and AVD Manager] 명령을 선택하면 다음 대화상자
가 열린다 .
• Available Packages 탭에는 설치 가능한 목록들이 나열되는데 이전 버전의 SDK 도 모두 같이 설
치할 수 있다 .
• 최신 버전만 설치하는 것도 가능하지만 이전 버전으로 작성된 예제들도 있으므로 하드 디스크 공
47/56
48. 3. 개발환경 구축
안드로이드 SDK
안드로이드 SDK 설치 파일 : 문서 , 샘플 , 개발툴
문서
• docs 폴더에는 안드로이드 개발 관련 문서들이 제공된다 .
• HTML 포맷이므로 웹 브라우저를 통해 읽을 수 있다 .
샘플
• platforms 폴더 안에 많지는 않지만 몇 가지 샘플 프로젝트가 제공된다 .
• 각 버전별로 디렉토리가 구성되어 있으며 버전이 높을수록 예제의 개수도 늘어난다 .
• 예제를 통해 안드로이드의 기능을 둘러 볼 수 있으며 기본적인 코딩 기법을 배울 수 있다 .
개발툴
• tools 폴더에는 컴파일러 , 디버거 , 에뮬레이터 등 개발에 꼭 필요한 프로그램들이 제공된다 .
• 대부분 명령행에서 동작하는 것들인데 다행히 이클립스가 적절한 때 호출해 주므로 직접적으로 사
용해야하는 것은 별로 없다 .
48/56
49. 3. 개발환경 구축
AVD 생성
모바일 개발을 할 때는 통상 에뮬레이터에서 테스트를 수행하는데 안드로이드폰 에뮬레
이터를 AVD(Android Virtual Device) 라고 부른다 .
AVD 는 소프트웨어적으로 만든 가상의 장비이지만 진짜 안드로이드폰과 기능이 동일하
다.
• 1.1 버전까지는 에뮬레이터가 기본 제공되어 간편하기는 했지만 다양한 테스트를 하기에는 여러
가지 문제가 있었다 .
• 1.5 버전부터는 AVD 를 필요한 만큼 만들어 두고 번갈아 가면서 사용할 수 있도록 바뀌었다 .
이클립스의 메뉴에서 [Window-Android SDK and AVD Manager] 명령을 선택하고 목
록에서 Virtual Devices 페이지를 선택한다 .
49/56
50. 3. 개발환경 구축
AVD 생성
새로운 AVD 를 생성하기 위해 New 버튼을 누른 후 다음과 같이 입력한다 .
• 이름은 가상 장비간의 구분을 위한 명칭인데 중복되지만 않으면 아무렇게나 주어도 상관없다 .
• 짧게 scv 라고 이름을 붙여 주도록 하자 .
• 타깃은 Android 2.1 로 선택하고 가상의 메모리 카드인 SD Card 는 32MB 로 설정한다 .
• 스킨은 화면의 해상도를 선택하는데 HVGA 가 안드로이드의 표준이므로 디폴트대로두면 된다 .
• 그 외 하드웨어 장치 옵션들도 선택할 수 있다 .
• 가상 장비의 옵션을 적당히 편집한 후 아래쪽의 Create AVD 버튼을 누른다 .
50/56
51. 3. 개발환경 구축
AVD 생성
AVD 설정
• AVD 는 “ C:User 사용자계정명 .androidavd” 폴더 안에 저장되며 가상 장비의 메모리 , 구성 등
의 정보가 기록되어 있다 .
• 똑같은 절차를 거쳐 각각 다른 이름과 다른 설정으로 여러 대의 AVD 를 미리 생성해 놓을 수도 있
다.
51/56
52. 3. 개발환경 구축
AVD 생성
AVD 확인
• AVD 가 제대로 생성되었는지 Start 버튼을 눌러 기동한다 .
52/56
53. 3. 개발환경 구축
AVD 생성
AVD 가 기동되지 않을 때 대처방법 : 버그 수정
• 에뮬레이터가 제대로 실행되면 다행이나 한글 윈도우에서는 약간의 문제가 발생할 수도 있다 .
• AVD 생성 후 첫 기동했을 때 에뮬레이터가 뜨지 않고 다음과 같은 에러 메시지가 나타나는 경우
가 종종 있다 .
• AVD 가 저장되는 경로에 영문이 아닌 문자가 있으면 이클립스가 에뮬레이터를 제대로 기동시키지
못한다 .
• SDK 업데이트 속도가 워낙 빠르다 보니 구글이 동양권의 운영체제까지 충분하게 테스트하지 못
해 발생한 일종의 버그다 . 53/56
54. 3. 개발환경 구축
AVD 가 기동되지 않을 때 대처방법 : 버그 수정
• 해결방법은 AVD 를 한글이 포함되지 않는 경로로 옮기는 것이다 .
• AVD 의 경로는 GUI 상에서 편집할 수 없으므로 명령행에서 편집해야 한다 .
[ 버그 수정 1]
• 명령창을 열고 AVD 가 저장되어 있는 C:User 사용자계정 .androidavd 폴더로 이동한 후 다음
명령으로 AVD 를 적당한 곳으로 이동시킨다 .
android move avd -n scv -p c:Windowsscv.avd
<scv 라는 이름의 AVD 를 C:Windows 아래의 scv.avd 폴더로 이동시키라는 명령이다 .>
• 루트를 깔끔하게 유지하기 위해 Windows 폴더 아래로 옮겼는데 Program Files 아래에 둘 수도
있고 C:Avd 식으로 별도의 폴더를 만들어도 상관없다 .
( 경로에 한글만 포함되지 않으면 된다 .)
• 이 명령이 제대로 동작하려면 java 와 안드로이드 SDK 에 대해 Path 지정이 되어 있어야 한다 .
또 대상 폴더의 부모 폴더는 존재해야 하며 마지막 폴더인 scv.avd 는 직접 생성하므로 존재해서
는 안 된다 .
54/56
55. 3. 개발환경 구축
AVD 가 기동되지 않을 때 대처방법 : 버그 수정
[ 버그 수정 2]
•탐색기로 AVD 폴더를 원하는 곳으로 이동시키고 정보 파일의 경로만 살짝 수정하면 된다 .
C:User 사용자계정 .androidavd 폴더안에 생성되어 있는 scv.avd 를 잘라내서 C:Windows 폴더
에 붙여 넣는다 .
•메모장으로 avd 폴더에 남아 있는 scv.ini 파일을 열어 path 를 이동한 경로명으로 수정한다 .
target=android-7
path=C:Windowsscv.avd
55/56
56. 3. 개발환경 구축
옵션 설정
실습과 한글 호환성 확보를 위해 몇 가지 옵션을 조정한다 .
워크스페이스의 문자셋을 UTF-8 로 변경한다 .
• 한글로 주석을 달기 위해서는 UTF-8 인코딩을 사용하는 것이 유리하며 배포되는 예제들도 대부
분 UTF-8 인코딩을 사용하므로 예제를 제대로 보기 위해서라도 조정하는 것이 좋다 .
• Preference 창에서 [General-Workspace] 의 Text file encoding 을 [Other-UTF-8] 로 변경한다 .
이 옵션을 조정하지 않으면 예제의 한글 주석이 깨져 보이는 문제가 있다 .
56/56
57. 3. 개발환경 구축
옵션 설정
[General-Editors-TextEditors-Spelling-Enable spell checking] 옵션을 해제한다 .
• 주석의 맞춤법 검사를 해 주는 기능인데 컴파일러에게는 너무 사치스러운데다 편집 속도를 떨어뜨
리므로 사용하지 않는 것이 좋다 .
• 한글을 제대로 인식하지 못해 영문 단어와 한글 조사가 붙어 있으면 무조건 오타 처리되어 보기 싫
은 밑줄이 그어지는 문제가 있다 .
57/56
58. 3. 개발환경 구축
옵션 설정
[Java-Code Style-Organize Imports] 페이지의 “ Number of imports needed for .*” 옵션
을 1 로 변경한다 .
• 이클립스는 import 문을 자동으로 정리해 주는 편리한 기능을 제공하는데 매 클래스마다 import
문이 작성되어 소스가 너무 길어진다 . 이 값을 1 로 바꿔 놓으면 패키지의 모든 클래스를 한꺼번
에 임포트해 주므로 실습할 때 편리하고 결과 소스가 짧아지는 효과가 있다 .
58/56
59. 3. 개발환경 구축
옵션 설정
[Java-Compiler-Errors-Warings-Unnecessary code] 의 모든 옵션들을 Ignore 로 변경한
다.
• 이 옵션을 바꾸지 않으면 실습 중에 수많은 경고가 발생한다 .
59/56
60. 3. 개발환경 구축
설치 확인
시스템에 어떤 파일들이 생성되었는지 , 적재적소에 제대로 배치되어 있는지 탐색기로 살
펴보고 점검해 본다 .
다음과 같은 폴더들이 생성되어 있다면 제대로 설치가 완료된 것이다 .
60/56
61. 3. 개발환경 구축
리눅스에서 구축
JDK 설치
• 우분투의 패키지 관리자를 사용하면 JDK 는 아주 쉽게 설치할 수 있다 .
• 터미널을 열고 다음 명령을 실행한다 .
sudo apt-get install sun-java6-bin
• 우분투의 패키지 관리자가 최신 버전을 찾아 다운 및 설치를 자동으로 수행한다 .
61/56
62. 3. 개발환경 구축
리눅스에서 구축
이클립스 설치
• http://www.eclipse.org 로 가서 Elclipse IDE for Java EE Developers 의 Linux 32bit 버전을 다운
받아 저장한다 .
• 압축을 해제한 후 홈 디렉토리로 이동시키는 것이 좋다 .
• 홈 디렉토리로 이동한 후 다음 명령으로 이클립스를 실행한다 .
cd ~/eclipse
./eclipse
• 이후의 실행 과정은 윈도우와 동일하다 .
62/56
63. 3. 개발환경 구축
리눅스에서 구축
리눅스용 안드로이드 SDK 설치
• 안드로이드 홈 페이지에서 리눅스용 SDK 를 다운받은 후 터미널에서 압축을 해제하고 홈 디렉토
리로 옮긴다 .
• 명령행에서 작업하려면 .bashrc 를 편집해 tools 디렉토리를 패스로 지정해 놓는 것이 좋으나 이
클립스를 사용할 것이라면 굳이 필요치 않다 .
ADT 설치
• ADT 플러그인을 설치한다 .
• AVD 생성은 윈도우에서의 설치와 동일하다 .
63/56