안드로이드 앱 성능 최적화

2017. 8. 18. 15:07

안드로이드 앱 성능 최적화





23000원짜리 책 치고는 작고 얇은 책 (부록인 줄..)

하지만 앱 최적화 관련 내용이 매우 좋다. 완성도 높은 앱 개발이 고민이라면 꼭 읽어보시길 추천함




* * *


안드로이드 앱 성능 최적화

속도, 최적화, 테스트 실전 가이드

목차


1장. 안드로이드 성능 입문 

_1.1 사용자에게 성능은 중요합니다 

__1.1.1 전자상거래와 성능 최적화 

__1.1.2 전자상거래 판매를 넘어서 

__1.1.3 성능 개선과 인프라 비용 절감 

_1.2 가장 큰 성능 실패: 서비스 중단 

__1.2.1 순차적 정전과 같은 성능 

__1.2.2 성능 문제에 대한 소비자의 반응 

__1.2.3 스마트폰의 배터리 수명: 석탄 광산의 카나리아 

_1.3 성능 문제를 테스트하기 

__1.3.1 합성 테스트 

__1.3.2 실제 사용자 모니터링(RUM) 

_1.4 결론 


2장. 안드로이드 디바이스 랩 만들기 

_2.1 고객들은 어떤 기기를 사용하나요 

_2.2 기기 성능 분류 

__2.1.1 화면 크기 

__2.1.2 SDK 버전 

__2.1.3 CPU/메모리와 저장장치 용량 

_2.3 고객들은 어떤 네트워크를 사용하나요 

_2.4 당신의 기기는 고객의 기기와 다릅니다 

_2.5 테스팅 

_2.6 디바이스 랩 구축하기 

__2.6.1 기기를 사는 데 몇백만 원이 필요하다고요? 

__2.6.2 그래서 어떤 기기를 선택해야 하나요? 

__2.6.3 휴대폰 이외의 기기들 

__2.6.4 안드로이드 오픈소스 프로젝트(AOSP) 기반 기기들 

__2.6.5 기타 옵션들 

__2.6.6 추가 고려 사항 

__2.6.7 나만의 디바이스 랩 

_2.7 결론 


3장. 하드웨어 성능과 배터리 수명 

_3.1 안드로이드의 하드웨어 기능 

_3.2 덜 써야 더 쓴다 

_3.3 배터리가 빨리 소모되는 원인은 무엇인가 

__3.3.1 안드로이드 전력 프로파일 

__3.3.2 화면 

__3.3.3 무선신호 

__3.3.4 CPU 

__3.3.5 추가 센서 

__3.3.6 절전 모드! 

__3.3.7 wakelock과 alarm 

__3.3.8 도즈 프레임워크 

_3.4 기본적인 배터리 소모 분석 

__3.4.1 앱별 배터리 소모량 

__3.4.2 배터리 정보와 데이터 사용량의 결합 

__3.4.3 App Standby 

_3.5 배터리 모니터링 심화 과정 

__3.5.1 batterystats 

__3.5.2 Battery Historian 

_3.6 JobScheduler 

_3.7 결론 


4장. 화면과 UI 성능 개선하기 

_4.1 UI 성능 벤치마킹 

__4.1.1 쟁크 

_4.2 안드로이드 UI 및 렌더링 성능 개선의 역사 

_4.3 뷰 구성하기 

__4.3.1 계층 구조 뷰어 

_4.4 리소스 줄이기 

__4.4.1 화면 겹쳐 그리기 문제 

__4.4.2 오버드로 확인하기 

__4.4.3 계층 구조 뷰어(Hierarchy Viewer)로 오버드로 확인하기 

__4.4.4 킷캣에서 오버드로를 없애는 방법 

_4.5 GPU 렌더링 프로파일링으로 쟁크 분석하기 

__4.5.1 안드로이드 마시멜로에서의 GPU 렌더링 

_4.6 쟁크를 넘어선 프레임 생략 

__4.6.1 Systrace 

__4.6.2 Systrace로 살펴보는 화면 출력 

__4.6.3 Systrace와 CPU로 인한 렌더링 차단 

__4.6.4 ‘구글 I/O 2015’에서 발표된 Systrace 업데이트 

__4.6.5 칩 공급 업체별 도구 

_4.7 인지 성능 

__4.7.1 스피너: 좋은점과 나쁜점 

__4.7.2 로딩 시간을 숨겨주는 애니메이션 

__4.7.3 즉각적인 업데이트의 착한 거짓말 

__4.7.4 인지 성능을 향상시키기 위한 팁 

_4.8 결론 


5장. 메모리 성능 

_5.1 안드로이드 메모리는 어떻게 동작하는가 

__5.1.1 공유 메모리와 전용 메모리 

__5.1.2 더티 메모리와 클린 메모리 

__5.1.3 메모리 정리(가비지 컬렉션) 

__5.1.4 앱이 사용하는 메모리 용량 알아내기 

__5.1.5 Procstats 

__5.1.6 안드로이드 메모리 부족 경고 

_5.2 자바의 메모리 관리와 누수 

_5.3 메모리 누수를 추적하기 위한 도구 

__5.3.1 힙 덤프 

__5.3.2 Allocation Tracker 

__5.3.3 메모리 누수 추가하기 

__5.3.4 힙 심층 분석: MAT와 LeakCanary 

__5.3.5 이클립스 메모리 분석기 도구(MAT) 

__5.3.6 LeakCanary 

_5.4 결론 


6장. CPU와 CPU 성능 최적화 

_6.1 CPU 사용량 측정하기 

_6.2 Systrace를 통한 CPU 사용량 분석 

_6.3 Traceview(Legacy Monitor DDMS 도구) 

_6.4 Traceview(안드로이드 스튜디오) 

_6.5 다른 프로파일링 도구 

_6.6 결론 


7장. 네트워크 성능 

_7.1 와이파이와 무선 통신망 신호 

__7.1.1 와이파이 

__7.1.2 무선 통신망 

__7.1.3 RRC 상태 기계 

_7.2 테스트 도구 

__7.2.1 Wireshark 

__7.2.2 Fiddler 

__7.2.3 MITMProxy 

__7.2.4 ARO(AT&T Application Resource Optimizer) 

__7.2.5 하이브리드 앱과 WebPageTest.org 

_7.3 안드로이드를 위한 네트워크 최적화 

__7.3.1 파일 최적화 

__7.3.2 텍스트 파일 축소(사우더스의 “자바스크립트를 작게 하라” 항목) 

__7.3.3 이미지 

__7.3.4 파일 캐싱 

__7.3.5 파일을 넘어서 

__7.3.6 연결의 그룹화 

__7.3.7 앱에서 무선망 사용 여부 감지하기 

__7.3.8 좋은 것에도 끝이 있는 법: 연결 종료 

__7.3.9 반복되는 핑 

__7.3.10 네트워킹 보안(HTTP 대 HTTPS) 

_7.4 전 세계 무선 통신망 적용 범위 

__7.4.1 CDN 

__7.4.2 느린 네트워크에서 앱 테스트하기 

__7.4.3 (파산을 막기 위해) 느린 네트워크 에뮬레이션하기 

__7.4.4 네트워크에 따라 반응하는 앱 만들기 

__7.4.5 지연시간에 대한 회계 

__7.4.6 마지막 마일 지연 

_7.5 기타 무선신호 

__7.5.1 GPS 

__7.5.2 블루투스 

_7.6 결론 


8장. 최종 사용자 모니터링 

_8.1 RUM 도구 사용하기 

_8.2 RUM 분석: 샘플 앱 

_8.3 크래시 

__8.3.1 Crashlytics 크래시 보고서 살펴보기 

__8.3.2 사용량 분석 

__8.3.3 실시간 정보 

_8.4 사용자를 구해주는 빅데이터? 

__8.4.1 RUM SDK 성능 

_8.5 결론 


부록 A. 조직 차원의 성능개선 

_A.1 동의 얻기(성능에 중점을 둔 관리) 

_A.2 성능에 대해 이야기하기 

_A.3 개발 

_A.4 테스팅 

_A.5 성능 기준 수치

__A.5.1 성능 기준 적용하기