이게 진짜 Android 프로그래밍이다
정금호 지음 / 영진.com(영진닷컴) / 2014년 4월
평점 :
장바구니담기


반갑습니다. 저는 현직 초등 교사로, 컴퓨터를 활용한 교육에 관심이 아주 많고 전공 역시 초등 컴퓨터 교육입니다. 스마트교육 콘텐츠 및 교수학습 활용을 위해서 안드로이드 프로그래밍에 관심이 많습니다.

 

안드로이드와 자바를 배운지는 6개월 정도 되었고, 이제 겨우 책을 보고 예제를 따라할 수 있는 정도의 실력이 되었습니다.

 

이번에 영진 닷컴에서 "이게 진짜 Android 프로그래밍이다" 라는 책이 나와서 서평을 써볼까 합니다.

 

먼저, 책의 외형은 다음과 같습니다. 


책 표지입니다. 전체는 538쪽으로 약간 두께가 있고 일반적인 B5사이즈입니다.

 


책의 목차입니다. 


예제 소스입니다.

실전 예제 중 초성 검색 기능 구현 부분입니다.

 

 

먼저 시중에 나와있는 다른 안드로이드 책들에 비해 이 책이 갖고 있는 특징에 대해서 써볼까 합니다.

 

첫째, 안드로이드 개발시 유의해야 할 사항을 실무적인 관점에서 제시하고 있습니다. 안드로이드는 출시된 지 몇년이 지나지 않았음에도 불구하고 급격한 버전업으로 인해 많은 혼란을 겪고 있습니다. 각 버전별로 사용자도 다양하고, 그에 따른 개발의 방향도 다르기 때문에 불과 2~3년전에 나온 안드로이드 예제가 새로운 환경에서는 다른 방향으로 만들어야 하는 경우도 있습니다.

 


책에서 소개된 안드로이드 버전별 점유율 그래프입니다. 아직도 2.x버전을 사용하는 사람이 많다는 사실을 소개하고, 이에 따른 개발자의 방향을 제시하고 있습니다.

마찬가지로 화면 밀도별 점유율도 제공하고 있습니다.

 

 

둘째, 안드로이드 개발자 도구(Android Developer Tools-ADT) 22.6버전의 변경점을 자세히 다루고 있습니다. 

 

ADT가 22.6으로 버전업하면서, 예전과는 다르게 액티비티가 아닌 프래그먼트를 기본으로 만들도록 바뀌었습니다. 그렇지만 시중에 나온 거의 대부분의 안드로이드 책은 "액티비티"를 기준으로 만들어지는 ADT 22.3이하 버전을 기준으로 써져 있습니다. 저 역시 대학원에서 안드로이드 수업을 하면서 예제 만들기를 발표하는데, Hello World 예제가 만들어지지 않아서 크게 당황한 적이 있었습니다. 

 

이러한 급격한 변경은 초보자들을 "멘붕"에 빠뜨리기 쉬운데, 이 책에는 그 내용을 빠뜨리지 않고 기술하고 있습니다. (아마 제가 알기론 국내 안드로이드 책에선 처음으로 이 내용을 다루지 않았나 싶습니다.)

책에서 다루고 있는 22.6버전의 특징

 

셋째, 기능을 순서대로 나열한 "사전"식 구성이 아닌, 철저한 실무 예제 중심으로 쓰여져 있습니다. 

 

보통의 안드로이드 서적은 안드로이드의 기능을 A부터Z까지 나열한 사전식 구성과 그 예제로 이루어져 있습니다. 러한 책은 모든 기능을 익히기엔 좋지만, 상황에 따른 기능의 조합이 어려운 것이 단점입니다.

 

이 책에서는 기능을 나열하지 않고, 기능을 조합한 예제로 이루어져 있습니다. 따라서 기능 전체를 다루고 있지 않는다는 단점이 있지만, 상황에 맞는 예제를 찾아 쉽게 구현할 수 있다는 장점이 있습니다. 실제로 이 책에는 다른 서적에서 중요하게 다루는 방송 수신자나 NFC, 카메라 등의 기능이 빠져 있습니다

 

이 책에서는 멀티 터치, 초성 검색, 파일 탐색기, 확장 ListView, 갤러리, 캘린더, 구글 지도 연동과 같은 예제가 나와 있습니다.

 

넷째, 외부 Java 라이브러리를 활용한 내용을 다루고 있습니다. 안드로이드는 자바 언어를 기반으로 하기 때문에, 자바의 라이브러리를 그대로 가져다 쓸 수 있습니다. 이 책에서는 네이버와 다음의 API활용, 위키사전 연동 어플리케이션, 차트, 바코드 인식, 메일 전송, 티맵 연동, 야후 날씨에 대해 다루고 있습니다. 

 

다섯째, 어플리케이션 개발 기획에 대해 다루고 있습니다. 앱 개발은 단순한 프로그래밍이 아닌 종합 예술(?)이 되어가고 있습니다. 프로그래머와 디자이너, 기획자의 의사 소통과 협업이 중요한 것입니다. 이 책에서는 애자일 개발 방법론이나 작업 차트, SVN을 이용한 소스코드 관리, 미디어위키를 활용한 개발정보 입력 및 공유와 같은 내용을 포함하고 있어 개발시 필요한 실무적인 방법론과 의사 소통에 대해서도 도움이 되고 있습니다. 또한 어플리케이션 아이디어를 얻는 방법과 벤치마킹 방법에 대해서도 다루고 있는데, 이러한 부분은 다른 안드로이드 개발서와는 다른 특징이라고 할 수 있습니다.

 

--------------------------------------------------------------------

시중에는 초보자를 위한 안드로이드 책이 많이 나와 있지만, 실제 프로그래밍을 한번도 접하지 못한 초보자가 그런 책만을 보고 안드로이드 개발을 하는 것은 "불가능" 에 가깝습니다. 왜냐하면 안드로이드 개발을 하기 위해서는 자바 언어의 구조에 대한 이해가 필요하기 때문입니다. 그 이해가 없이는 소스를 그대로 입력해도 에러를 내뿜는 이클립스 화면을 보며 한숨만 짓게 될 것입니다.

 

저는 초등학교때 베이직을 배우고 학부생 때 자바를 배웠지만 Hello World를 띄우고 콘솔창에서 반복문을 만드는 정도에 그쳤습니다. 저 역시 프로그래밍에 대한 지식이 거의 없는 상태에서 안드로이드를 배우는 것은 쉬운 것이 아니었습니다. 어느 안드로이드 책을 통해 배우더라도 거기에 나오는 자바 명령을 이해하기 위해 "자바"언어, 혹은 다른 객체지향 언어(예를 들면 액션스크립트 같은)를 배우는 것이 선행되어야 한다고 생각합니다.

 

따라서 이 책은 안드로이드를 처음 배우는 "초보자"에게는 적당하지 않습니다. 그런 사람들에게는 안드로이드 전체의 기능을 사전식으로 나열한 입문서가 더 적당할 것입니다. 이 책에서 사용되는  '액티비티, 서비스, 매니페스트, 메소드, 레이아웃, 프레그먼트'같은 용어는, 어느 정도의 기초 지식을 갖고 있지 않은 사람은 이해하기가 무척 어려울 것입니다.

 

이 책은 다른 안드로이드 책을 한번 정도 보았거나, 자바 언어에 대해 어느정도 이해를 갖고 있는 "중간 단계의 초보자"에게 적당합니다. 

 

머리말에는 "이 책은 현역 안드로이드 프로그래머가 자신의 개발 노하우와 개발 팁을 정리해놓은 레퍼런스"라는 표현이 나와 있는데, 적절한 표현이라고 생각됩니다. 안드로이드 개발을 하면서 기능 설명만으로 부족한 부분을 잘 메워주는 중단 단계의 개발자에게는 정말로 도움이 될 것입니다.

 


 

전체목차 - (출처 : 영진닷컴)

Chapter 01 안드로이드 프로그래밍 개요

1. 안드로이드 소개

2. 안드로이드 플랫폼

2.1 Android 2.2 (Froyo)

2.2 Android 2.3 (Gingerbread)

2.3 Android 3.x (Honeycomb)

2.4 Android 4.0 (Ice Cream Sandwich)

2.5 Android 4.3 (Jellybean)

2.6 Android 4.4 (KitKat)

3. 국내에 출시된 안드로이드폰 

3.1 안드로이드 여명기 - 2010년

3.2 안드로이드 전성기 - 2013년

4. 안드로이드 애플리케이션 개발 시 유의 사항

4.1 오픈 소스의 단점

4.2 안드로이드 OS의 버전 문제

4.3 안드로이드폰을 만드는 제조사가 다른 문제

5. iOS와 Windows Phone 개발 환경과의 비교

연습 문제

 

Chapter 02 안드로이드 개발 환경 구축하기

1. JDK 설치하기

2. 이클립스 설치하기

3. 안드로이드 SDK 설치하기

3.1 윈도우에서 개발 환경 구축하기

3.2 HelloWorld 만들기

3.3 Mac에서 개발 환경 구축하기 

4. ADT 22.6 버전 이상에서 프로젝트 생성하기

연습 문제 72

 

Chapter 03 Java 기초 노트

1. Java의 특징

2. Java 프로그램 구조

2.1 패키지(package)

2.2 임포트(Import)문

2.3 주석문

2.4 키워드

2.5 식별자

2.6 표현어

3. Java 기본 문법

3.1 변수와 상수

3.2 연산자

3.3 제어자

3.4 배열

4. 제어문

4.1 반복문

4.2 선택문

4.3 예외 처리

4.4 분기문

5. 클래스와 인터페이스

5.1 클래스

5.2 인터페이스

연습 문제

 

Chapter 04 안드로이드 애플리케이션 분석

1. 안드로이드 애플리케이션 구성 요소

1.1 액티비티

1.2 서비스

1.3 인텐트

1.4 컨텐트 프로바이더

2. 리소스 완벽 활용

3. 환경설정 쉽게 만들기

연습 문제

 

Chapter 05 레이아웃 설계

1. 안드로이드 애플리케이션 UI 개념

2. XML 하드 코딩

2.1 기본 뷰 속성

2.2 TextView 전용 속성

2.3 ImageView 전용 속성

2.4 화면 정렬 및 배치 관련 속성

2.5 RelativeLayout 관련 속성

3. RelationLayout을 이용한 자유자재 레이아웃 디자인

3.1 상대 좌표를 사용한 레이아웃 설계

3.2 절대 좌표를 사용한 레이아웃 설계

4. 다중 해상도 대응을 위한 동적 레이아웃 구현

연습 문제

 

Chapter 06 실전 안드로이드 애플리케이션 개발

1. 멀티 터치 구현하기

2. 초성 검색 기능 구현하기

2.1 조합형과 완성형

2.2 유니코드

2.3 기능 구현하기

3. 파일 탐색기 구현하기

4. 확장 ListView 구현하기

5. 확장 GridView 구현하기

6. 이미지 파일 목록 구현하기

7. 캘린더 기능 구현하기

8. 구글 지도 연동하기

8.1 Google Maps Android API V1 방식

8.2 Google Maps Android API V2 방식

연습 문제

 

Chapter 07 안드로이드 시스템 건드리기

1. 안드로이드 애플리케이션 기본 개념

1.1 프로세스 관리

2. 애플리케이션 관리

2.1 설치된 애플리케이션 목록 보여주기

2.2 애플리케이션 제거(언인스톨)하기

2.3 애플리케이션 APK 파일 백업하기

3. 시스템 정보 얻기

3.1 내부/외부 메모리 용량 구하기

3.2 Shell 명령어를 이용한 시스템 정보 얻기

연습 문제

 

Chapter 08 외부 Java 라이브러리 활용하기

1. JAR 파일

1.1 Open API 활용하기

1.2 네이버 Open API 사용하기

1.3 다음 오픈 API 사용하기

2. Wikipedia 연동 애플리케이션 구현 

3. 차트 만들기

4. 바코드 인식 프로그램

5. 메일 전송 기능 구현 

6. Tmap 연동 기능 구현

7. 야후 날씨 API 연동

연습 문제

 

Chapter 09 SQLite 실전 응용

1. SQLite 소개

2. SQLite 동적 생성

3. SQLite Manager 사용

4. SQLite 외부 파일 처리

5. 단어 암기장 애플리케이션 구현

5.1 단어 퀴즈 애플리케이션 구현

연습 문제 470

 

Chapter 10 앱스토어 소개

1. SKT T스토어

1.1 판매 회원 등록

1.2 상품 등록

1.3 상품 판매 및 관리

1.4 고객 문의 관리

2. 구글 Play 스토어

2.1 개발자 등록

2.2 애플리케이션 등록

2.3 애플리케이션 관리

3. 애플리케이션 패키지 제작

3.1 비서명 APK 파일 생성

3.2 서명용 keystore 생성

3.3 Keystore를 이용한 APK 파일 서명 

3.4 Zipalign을 이용한 최적화

연습 문제 

 

Chapter 11 애플리케이션 기획 및 개발

1. 나만의 애플리케이션을 기획하기

1.1 평소에 생활하면서 느끼던 불편함을 소재로 삼는다

1.2 내가 제일 관심이 있는 것을 애플리케이션으로 만든다

2. 간단한 아이디어를 이용한 프로그램 기획 사례

2.1 좋은 프로그램의 아류작 만들기

2.2 유용하게 사용하는 프로그램 따라 만들기

3. 벤치마킹을 통한 프로그램 기획 사례

4. 성공하는 애플리케이션을 기획하는 비법

5. 실패할 수 밖에 없는 애플리케이션을 기획하는 방법

Appendix 개발 방법론 및 개발 도구의 활용

1. 애자일 개발 방법론

2. 작업 일정판과 일일 소멸 차트

3. SVN을 이용한 소스 코드 관리하기

4. Mantis를 이용한 이슈 관리하기

5. MediaWiki를 이용한 개발 정보 관리하기

6. 팀 협업 시스템 소개

객관식 연습문제 해답

실무 예제 안드로이드


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo