완벽한 안드로이드 앱을 만드는 실무 노하우 139
제1장_효율적인 안드로이드 개발을 위한 조언
001 개발에 앞서 고객을 이해시키자
002 지원할 단말을 결정한다
003 멀티 스크린 지원 여부를 확정한다
004 안드로이드 버전을 고려하자
005 고객과 개발자의 책임 범위를 명확하게 정한다
006 서비스를 시작할 때까지 스케줄을 정하자
007 고객과 협의해야 할 세부적인 사항을 확정하자
008 타사에서 개발한 앱을 유지보수할 때의 주의 사항
009 개발팀 내부의 규칙을 정하자
010 개발 중에 주의해야 할 것들
011 서비스 시작 이후에 반드시 알아두어야 할 포인트
제2장_의도하지 않은 동작을 방지하자
012 최적의 실행 모드와 실행 플래그를 선택한다
013 액티비티 앨리어스를 사용하여 액티비티 이름이 변경되는 경우를 대비하자
014 다른 앱에서 사용할 수 없도록 컴포넌트의 공개 범위를 제한하자
015 서비스가 강제 종료되는 상황을 고려하자
016 서비스가 갑자기 크래쉬되는 상황을 대비하자
017 브로드캐스트 메시지의 전송 순서를 고려하자
018 걸려오는 전화를 수신할 수 없는 경우도 고려하자
제3장_앱은 강제 종료되지 않아야 한다 107
019 앱에서 ANR이 발생하지 않도록 하는 방법을 알아두자
020 홈 화면에서 ANR이 발생하지 않도록 하는 방법을 알아두자
021 단말이 데이터를 수신할 때 ANR이 발생하지 않도록 하는 방법을 알아두자
022 레이아웃을 화면에 출력할 때 느려지지 않도록 하자
023 ANR의 원인을 분석하자
024 예외 처리에 대한 방침을 결정하자
025 메인 스레드가 강제 종료되지 않도록 하는 방법을 알아두자
026 예외 상황을 고려하여 메서드를 선택하자
027 어떻게 초기화를 해야 할지 미리 고려하자
028 불필요한 객체는 삭제하자
029 이미지에 대한 메모리 누수를 방지하자
030 이미지 크기가 큰 경우를 고려하자
031 메모리를 효율적으로 사용하는 객체를 고려하자
032 하나의 앱에서 여러 힙 메모리를 확보하여 사용하자
033 대용량의 힙 메모리를 확보한다
034 액티비티를 강제 종료할 때 데이터를 유지하는 방법을 알아두자
035 Fragment가 강제 종료될 때 데이터를 유지하는 방법을 알아두자
제4장_스트레스 없는 앱을 만드는 방법
036 사용자에게 진행 상황을 전달하자
037 시간이 오래 걸리는 작업은 사용자가 직접 중단할 수 있도록 하자
038 대기 상태에서도 UI 기능은 계속 실행되어야 한다
039 시작 화면을 표시하면서 백그라운드로 데이터를 로드하자
040 사소한 부분까지 고려해 성능을 높인다
041 데이터 저장 시간을 고려하자
042 셀룰러 통신을 사용하는 경우에는 시간이 오래 걸리는 통신을 피하자
043 오류가 발생하더라도 사용자를 불안하게 만들지 않는다
044 NDK는 신중하게 사용하자
045 직관적으로 이해할 수 있도록 디자인한다
046 새로운 컴포넌트를 확인하자
047 작은 화면에 기능을 한정하지 말자
048 참신한 컴포넌트를 도입하자
049 잘못된 사용자 조작을 막기 위한 방법
제5장_멀티 스레드의 활용
050 표준 비동기 처리의 이해
051 표준 동기화를 이해하자
052 스레드와 AsyncTask를 구분한다
053 AsyncTask를 중단시킨다
054 안드로이드의 비동기 처리를 이해하자
제6장_불필요한 코드와 작업을 제거하자
055 배터리를 잡아먹지 않도록 설계부터 신중하게
056 주기적인 통신을 피하자
057 전원 공급 상태에 따라 사용하는 통신 주파수를 변경하자
058 인터넷 연결에 따라 주기적인 통신 작업을 제어한다
059 통신 방법에 따라 통신 상태를 변경하자
060 네트워크로 송수신하는 데이터를 줄여 배터리를 아끼자
061 데이터를 한꺼번에 묶어서 수신하면 통신 횟수를 줄일 수 있다
062 수신한 데이터를 캐시하여 통신량을 줄이자
063 푸시 기능을 사용한다
064 재시도할 때는 일정 간격을 두고 통신하자
065 리줌 다운로드(Resume Download)를 활용하자
066 사용자가 결정할 수 있도록 한다
067 불필요한 화면은 끄자
068 위치 정보를 얻어올 때 배터리 소모를 고려하자
제7장_데이터는 보호되어야 한다
069 apk 파일은 누구나 접근할 수 있다
070 앱의 설정 파일을 보면 앱에서 제공하는 기능을 확인할 수 있다
071 툴을 사용하면 소스 코드도 추출할 수 있다
072 에뮬레이터를 사용하면 데이터베이스에 쉽게 접근할 수 있다
073 단말의 데이터를 암호화할 수 있는지 확인하자
074 암호화 키를 어떻게 보관해야 할지 생각하자
075 AES 암호화를 사용하여 데이터베이스를 보호하자
076 오픈 소스 소프트웨어를 사용하자
077 실행 패턴을 임의로 분석하지 못하도록 보호하자
078 난독화 주의 사항
079 강력한 난독화를 위해 상업용 툴을 사용해보자
제8장_다양한 단말을 지원하는 설계
080 우선 제공할 기능을 구성해보자
081 화면에 표시될 레이아웃을 검토하자
082 안드로이드 버전에 주의하자
083 폰과 태블릿을 모두 지원하자
084 기준이 되는 단위를 정하자
085 실제 화면 크기에 맞도록 그룹으로 분류하자
086 실제 단말에 설치하기 전에 가상 디바이스에서 먼저 확인하자
087 다양한 크기를 지원하도록 웹을 디자인을 한다
088 자원 관리 방법을 결정하자
089 변경하기 쉬운 이미지를 사용한다
090 올바른 배치 방법을 알아 두자
091 SD 카드를 지원하자
092 모델별 호환성을 고려하자
093 다중 사용자를 고려하자
094 각 사용자에 대한 데이터의 저장 위치를 알아 두자
095 다중 프로세스를 고려하자
제9장_완벽한 앱을 위한 테스트 방법
096 업데이트 버전 넘버를 저장하자
097 릴리즈 관리자를 결정하자
098 개발할 때와 릴리스할 때의 바이너리를 분리하자
099 Ant를 사용하여 오류를 미연에 방지하자
100 성능을 측정하자
101 실행 처리가 늦는 경우에 대해 대비하자
102 리소스의 부하를 측정하자
103 앱의 기능에 부하를 가중하자
104 메모리 누수를 제거하자
105 앱이 지원하는 안드로이드의 버전을 고려하자
106 화면에 표현되는 컴포넌트를 고려하자
107 설정을 변경했을 때의 테스트 항목을 고려하자
108 앱이 실행되는 하드웨어를 고려하자
109 설치 방법을 고려하자
110 업데이트를 고려하자
111 안드로이드 소프트웨어 구성을 생각하자
112 프로세스가 강제 종료되는 경우를 대비하자
113 실행 중에 갑작스러운 중단이 발생할 경우를 대비하자
114 액티비티를 테스트하자
115 액티비티에 대한 화면 출력 테스트를 하자
116 콘텐트 프로바이더(ContentProvider)를 테스트 하자
117 서비스를 테스트하자
118 데이터베이스를 테스트하자
119 로더를 테스트하자
120 웹 사이트를 테스트하자
121 Espresso를 이용하자
제10장_구글 플레이에 앱을 공개하자
122 지원하는 단말을 정확히 하자
123 API 레벨을 사용하여 공개한 앱의 지원 여부를 제한하자
124 공개한 앱의 화면 크기와 해상도를 제한하자
125 단말에서 지원하는 기능에 대한 공개를 제한한다
126 라이브러리에 대한 공개를 제한하자
127 앱이 지원하는 단말의 리스트를 확인하자
128 지원하는 단말을 필터링하자
129 앱을 공개하기 전에 테스트용 바이너리를 배포하자
130 베타 테스트, 알파 테스트를 실시하자
131 테스터를 준비하자
132 테스터를 승인하자
133 테스트 버전 앱을 다운로드하자
134 앱을 성공적으로 업데이트하는 방법
135 앱을 공개하기 위해 인증서의 서명을 확인하자
136 앱을 공개하기 전에 바이너리를 최적화하자
137 구글 개발자 콘솔에서 앱의 공개 여부를 확인하자
138 앱의 공개 상태를 변경하자
139 사용자의 반응을 꼼꼼히 살피자
부록_네이티브 코드에 강해지자
A.1 NDK를 위한 환경을 구축하자
A.2 네이티브 코드를 구현해보자
A.3 C++을 사용할 때의 주의 사항
A.4 네이티브 코드에서 Java를 호출하자
* * *
조...좋은책이다.
난, 이렇게 포인트를 찝어주는 책이 좋다.
예를들어 "회사가 당신에게 알려주지 않는 50가지 비밀" 같은 책 말이다 ㅎ
'취미생활 > 영화·책' 카테고리의 다른 글
안드로이드 개발 레벨업 교과서 (0) | 2017.08.16 |
---|---|
욕망산업 (소설 대부업) (0) | 2016.08.10 |
모바일트렌드 2016 (0) | 2016.04.26 |
변화는 마침표가 없다 (0) | 2015.09.02 |
IT아키텍트가 하지 말아야 할 128가지 (0) | 2015.08.31 |