완벽한 안드로이드 앱을 만드는 실무 노하우 139

2016. 6. 15. 09:39


완벽한 안드로이드 앱을 만드는 실무 노하우 139


 

 

완벽한 안드로이드 앱을 만드는 실무 노하우 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가지 비밀" 같은 책 말이다 ㅎ