안드로이드 개발 레벨업 교과서

2017. 8. 16. 00:15


안드로이드 개발 레벨업 교과서





안드로이드 개발을 한단계 업그레이드 해주는 좋은책으로 추천한다.






목차


01장: 안드로이드 스튜디오의 편리한 기능을 활용해 효율적으로 개발한다

1.1 안드로이드 스튜디오를 사용해보자

1.1.1 안드로이드 스튜디오와 그 특징을 이해하자

1.1.2 새 프로젝트를 만들자

1.1.3 실제 디바이스에서 동작시켜 보자

1.1.4 안드로이드 스튜디오의 폴더 구성을 살펴보자

1.2 개발을 빠르게 하는 기능을 활용하자

1.2.1 안드로이드 스튜디오로 실용적인 개발 환경을 구축하자

1.2.2 단축키를 이용해 코드를 빠르게 입력하자

1.2.3 편리한 플러그인을 철저히 활용하자

1.2.4 편리한 디버그 기능을 활용하자

1.3 안드로이드 스튜디오 2.0의 새로운 개발 환경

1.3.1 인스턴트 런

1.3.2 새로운 에뮬레이터를 시험해보자

1.4 정리


02장: 각 컴포넌트를 복습한다(1): 액티비티와 프래그먼트 기초

2.1 액티비티를 이해하자

2.1.1 액티비티란?

2.1.2 액티비티의 수명주기를 이해하자

2.1.3 액티비티의 백스택을 이해하자

2.2 뷰와 레이아웃을 이해하자

2.2.1 뷰를 이해하자

2.2.2 레이아웃을 이해하자

2.2.3 커스텀 뷰를 만들자

2.3 프래그먼트로 UI를 가진 컴포넌트를 통합하자

2.3.1 프래그먼트를 이해하자

2.3.2 프래그먼트 수명주기를 이해하자

2.3.3 프래먼트를 동적으로 추가·삭제하자

2.3.4 중첩 프래그먼트를 이용하자

2.3.5 UI를 갖지 않는 프래그먼트를 이용하자

2.4 정리


03장: 각 컴포넌트를 복습한다(2): ContentProvider, Service, BroadcastReceiver 기초

3.1 ContentProvider로 데이터 읽기 쓰기를 구현해보자

3.1.1 ContentProvider로부터 데이터를 읽어오자

3.1.2 ContentProvider를 만들자

3.2 BroadcastReceiver로 브로드캐스트 이벤트를 수신하자

3.2.1 BroadcastReceiver의 기본을 이해하자

3.2.2 LocalBroadcastReceiver를 이해하자

3.2.3 브로드캐스트를 수신해 처리할 때 주의할 점을 알아보자

3.3 Service로 백그라운드 처리를 구현하자

3.3.1 Service의 종류와 수명주기를 이해하자

3.3.2 상주 서비스를 만들자

3.3.3 IntentService를 활용하자


04장: 개발에 도움을 주는 지원 라이브러리 활용법: RecyclerView, CardView, Pallete 활용

4.1 지원 라이브러리로 호환성을 유지하면서 개발을 진행합시다

4.1.1 지원 라이브러리의 기본을 이해하자

4.1.2 지원 라이브러리 종류와 특징을 이해하자

4.2 지원 라이브러리 예제를 실행한다

4.2.1 사용자에게 통지하는 NotificationCompat을 이해하자

4.3 리스트를 표시하는 RecyclerView 위젯을 이용해보자

4.3.1 RecyclerView의 특징을 이해하자

4.3.2 RecyclerView로 리스트를 표시하자

4.3.3 RecyclerView를 커스터마징하자

4.4 정리


05장: 변경에 강하게 설계한다: MVVM 설계 기법의 이해와 라이브러리 활용

5.1 다양한 설계 기법을 이해하자

5.1.1 MVP를 이해하자

5.1.2 MVVM을 이해하자

5.2 액티비티 클래스에 플랫하게 구현해보자

5.2.1 어떤 앱을 만들지 생각하자

5.2.2 앱에 사용할 화면과 기능을 이해하자

5.2.3 구현 방법을 확인하자

5.2.4 패키지 구분법을 확인하자

5.2.5 리포지토리 화면을 이해하자

5.2.6 고찰과 깨달음

5.3 MVP를 사용하자

5.3.1 패키지가 나뉜 것을 확인하자

5.3.2 MVP로 안드로이드 프로젝트를 구현하자

5.3.3 고찰과 깨달음

5.4 MVVM을 사용하자

5.4.1 데이터 바인딩을 사용해보자

5.4.2 데이터 바인딩으로 MVVM을 사용해보자

5.4.3 패키지 구조를 확인하자

5.4.4 리포지토리 화면을 이해하자

5.4.5 고찰과 깨달음

5.5 정리


06장: 빌드 시스템을 이해하고 커스터마이징한다: 그레이들의 이해

6.1 그레이들의 기본을 이해하자

6.1.1 그레이들의 특징을 파악하자

6.1.2 Android Gradle 플러그인 특징을 이해하자

6.1.3 안드로이드의 빌드 파일을 살펴보자

6.1.4 모듈의 build.gradle을 이해하자

6.1.5 그레이들의 태스크를 이해하자

6.2 안드로이드 그레이들 플러그인을 활용해 개발 효율을 높이자

6.2.1 안드로이드 그레이들 플러그인의 설정을 이해하자

6.2.2 상황에 맞게 프로젝트를 커스터마이징하자

6.2.3 빌드 변형을 이해하자

6.3 커맨드라인으로 실행하자

6.3.1 커맨드라인에서 실행하는 장점

6.3.2 빌드

6.3.3 응용 조작을 마스터하자

6.4 정리


07장: 단위 테스트를 이해하자: 단위 테스트 작성

7.1 테스트의 의의와 종류를 이해하자

7.1.1 테스트를 이해하자

7.1.2 테스트의 종류를 정리하고 이해하자

7.2 단위 테스트를 작성해 보자

7.2.1 단위 테스트의 사전준비를 하자

7.2.2 테스트를 구현하자

7.3 테스트 도입 전략을 세우자

7.3.1 테스트 도입을 향한 첫걸음

7.3.2 메서드가 지나치게 길지만 테스트는 작성하고 싶다

7.3.3 리팩터링 기능 활용

7.4 정리


08장: UI 테스트를 이해하고 실천한다: UI 테스트 작성

8.1 UI 테스트를 이해하자

8.1.1 단위 테스트와의 차이를 이해하자

8.1.2 UI 테스트의 실제

8.2 UI 테스트를 구현하자

8.2.1 UI 테스트 프레임워크 에스프레소를 활용하자

8.2.2 에스프레소 사용 환경을 준비하자

8.2.3 에스프레소를 이해하자

8.3 테스트를 더 깊이 이해하고 활용하자

8.3.1 다른 앱과의 연계와 홈 화면에서의 동작을 테스트하자

8.3.2 테스트 운영 방침을 정하자

8.4 정리


09장: 자동화로 매우 빠른 개발 환경을 만든다: CI 기초

9.1 CI의 의미를 이해하자

9.1.1 CI의 기초를 이해하자

9.1.2 CI로 해야 할 일과 시점을 이해하자

9.1.3 CI의 하루를 생각해 보자

9.2 안드로이드 앱 개발에 CI를 도입하자

9.2.1 Jenkins와 Circle CI를 이해하자

9.2.2 Jenkins를 동작시키자

9.2.3 빌드를 자동화하자

9.2.4 테스트를 자동화하자

9.2.5 인스펙션을 자동화하자

9.2.6 디플로이를 자동화하자

9.2.7 Circle CI의 기본을 이해하자

9.3 정리


10장: 디자인을 이해하고 사용하기 쉬운 앱을 만든다: 엔지니어도 알 수 있는 디자인의 기초

10.1 디자인의 기본을 이해하자

10.1.1 '색'과 '폰트'를 이해하자

10.1.2 콘텐츠를 위한 레이아웃을 이해하자

10.1.3 사진 사용법에 주의하자

10.2 디자인 진행 방법을 전략적으로 생각하자

10.2.1 디자인의 경쟁자 조사를 하자

10.2.2 콘셉트 테스트를 실시하자

10.3 앱 제작을 성공으로 이끌자

10.3.1 행동과 목표를 명확히 하자

10.3.2 3단계 프로토타이핑을 알자

10.4 정리


11장: 머티리얼 디자인을 이해한다: 머티리얼 디자인 가이드라인의 이해

11.1 머티리얼 디자인을 파악하자

11.1.1 지금까지의 소프트웨어 UI와의 차이를 이해하자

11.1.2 머티리얼 디자인을 활용하자

11.2 대표적인 컴포넌트를 이해하자

11.2.1 리스트와 그리드 리스트, 카드의 특징을 이해하자

11.2.2 버튼과 피드백을 이해하자

11.2.3 인터랙션을 분석하자

11.3 정리


12장: 머티리얼 디자인을 구현한다: 안드로이드 디자인 지원 라이브러리의 활용

12.1 적용할 준비를 하자

12.1.1 OS 버전별로 이용할 머티리얼 디자인의 요소를 결정하자

12.1.2 머티리얼 디자인 테마를 적용하자

12.2 부분 적용할 수 있는 디자인 요소를 이해하자

12.2.1 리플 이펙트(물결 효과)를 구현하자

12.2.2 Elevation과 Shadow를 이해하자

12.2.3 컬러 팔레트를 정의하자

12.3 머티리얼 디자인의 UI 요소를 구현하자

12.3.1 Android Design Support Library를 도입하자

12.3.2 NavigationView를 구현하자

12.3.3 TabLayout으로 탭을 구현하자

12.3.4 AppBar의 동작을 제어하자

12.3.5 FloatingActionButton과 SnackBar를 적용하자

12.4 정리


13장: 안전한 앱을 만든다: 보안 검사

13.1 안드로이드 보안 모델을 이해하자

13.1.1 안드로이드 소프트웨어 스택과 보안

13.1.2 리눅스의 보안 모델을 이해하자

13.1.3 Permission에 관해 이해하자

13.1.4 Runtime Permission에 관해 이해하자

13.1.5 앱 간의 Permission을 이해하자

13.2 보안에 강한 앱을 만들자

13.2.1 서명 검증을 구현하자

13.2.2 외부로부터의 입력 데이터를 검증하자

13.2.3 디딤돌 공격을 받지 않기 위해

13.2.4 데이터를 저장하자

13.2.5 난독화하자

13.2.6 동적 코드 로딩을 이해하자

13.2.7 HTTPS 통신을 이해하자

13.3 과거 사례로부터 배워 안전성이 높은 앱을 만들자

13.3.1 비공개 데이터를 앱에 공개해 버린 사례에서 배우자

13.3.2 WebView의 과거 사례에서 배우자

13.3.3 OS의 취약성을 이해하자

13.3.4 안전성이 높은 앱으로 완성하자

13.4 정리


14장: 척척 움직이는 경쾌한 앱으로 완성한다: 병목 개선

14.1 앱을 척척 움직이게 하는 달성 기준을 알자

14.1.1 척척 움직이는 앱이란 어떤 것일까

14.1.2 척척 동작하는 앱을 만드는 데 필요한 지식을 정리하자

14.2 병목을 발견하자

14.2.1 StrictMode로 확인하자

14.2.2 프로파일러를 활용하자

14.3 레이아웃을 최적화해 성능을 높이자

14.3.1 lint로 다양한 문제를 검사하자

14.3.2 GPU Overdraw로 불필요한 그리기의 중복을 없애자

14.3.3 Hierarchy Viewer로 레이아웃 구조를 파악하자

14.4 메모리를 의식하고 개발하자

14.4.1 다양한 메모리 상황을 확인하자

14.4.2 LeakCanary를 활용해 메모리 누수를 방지하자

14.5 그밖의 최적화 방법을 이해하자

14.6 정리


15장: 모네타이즈를 실현한다: 인앱 결제 구현

15.1 모네타이즈를 이해하자

15.1.1 모네타이즈의 기본을 이해하자

15.1.2 광고 모델을 이해하자

15.1.3 과금 모델을 이해하자

15.1.4 모네타이즈 모델을 조합하자

15.2 인앱 결제를 구현하자

15.2.1 In-App Billing(IAB)의 기본을 이해하자

15.2.2 인앱 상품 관리를 이해하자

15.2.3 결제 처리 구현 환경을 준비하자

15.2.4 IInAppBillingService.aidl로 IAB를 구현하자

15.2.5 매번 과금을 구현하자

15.3 IAB를 테스트하자

15.3.1 테스트 전략을 세우자

15.3.2 정적 응답으로 단위 테스트를 하자

15.3.3 테스트 계정으로 결합 테스트를 하자

15.3.4 실제 결제로 운영 테스트를 하자

15.4 정리


16장: 지문인증 API를 활용한다: 지문인증 구현

16.1 지문인증을 이해하자

16.1.1 지문인증 관련 API를 이해하자

16.1.2 지문인증을 앱에 내장하자

16.1.3 디바이스의 잠금화면을 앱에서 이용하자

16.1.4 지원 단말을 확인하자

16.2 지문인증 관련 API를 구현하자

16.2.1 구글의 예제 코드를 확인하자

16.2.2 Fingerprint Authentication을 구현하자

16.2.3 Confirm Credential을 구현하자

16.3 정리


17장: 앱의 장점을 전하자: 앱 공개

17.1 개발자 콘솔을 활용해 한발 앞서가는 릴리스를 구현하자

17.1.1 알파 버전/베타 버전을 활용하자

17.1.2 apk를 나누어 릴리스하자

17.2 사용자 설치 수를 자세히 이해하자

17.2.1 A/B 테스트로 페이지 전환율을 높이자

17.2.2 설치에 관한 데이터를 이해하자

17.3 사용자에게 적절히 앱을 전달하자

17.3.1 앱이 문제없이 동작하는지 파악하자

17.3.2 사용자의 리뷰를 확인하고 응답하자

17.3.3 릴리스 빈도와 방법을 최적화하자

17.4 정리


18장: 공개한 앱을 성장시키자: 그로스 핵

18.1 설치 수를 늘리자

18.1.1 유입 채널을 점검하자

18.1.2 자연 유입과 ASO를 이해하자

18.1.3 채널별로 효과가 높은 유도에 힘을 쏟자

18.1.4 프로모션과 광고를 정리하자

18.2 일상에서 많이 사용되는 앱을 목표로 하자

18.2.1 지표를 모두 찾아내 개선점을 파악하자

18.2.2 개선책을 실시하자

18.2.3 처음 시작할 때 효과적으로 앱을 소개하자

18.2.4 앱을 널리 퍼뜨리자

18.3 정리


19장: 푸시를 활용해 실시간으로 정보를 전달한다: GCM의 이해

19.1 푸시 알림의 장점과 이용법을 이해하자

19.1.1 푸시 알림의 기본을 이해하자

19.1.2 로컬 푸시와 리모트 푸시의 차이를 알자

19.1.3 푸시 알림을 효과적으로 사용하자

19.2 리모트 푸시를 구현하자

19.2.1 GCM과 아키텍처를 이해하자

19.2.2 구글의 예제 코드를 실행해 보자

19.2.3 GCM을 구현하자(클라이언트)

19.2.4 서버에서 푸시를 구현하자

19.3 GCM을 활용하자 ~ GCM 주제 메시징 ~

19.3.1 구독한 사람에게만 푸시하자

19.4 정리