안드로이드 개발 기본

이 글은 안드로이드 개발에 입문하면서 개념적으로 많은 도움을 받았거나 자주 찾아보게 되는 정보들을 모은 것으로, 대부분의 출처가 되고 있는 Android Developers 사이트의 Develop Apps 페이지에서 가능한 많은 내용을 정독하는 것이 가장 좋다. iOS에 익숙한 개발자라면 Stuart Hall의 글을 먼저 읽어보는 것이 iOS에 대응하는 안드로이드의 기능이나 개념을 이해하는 데 도움이 된다.

1. 기본 툴

안드로이드 플랫폼에서 개발을 시작할 때, adb 툴과 android 툴에 대하여 개발 중에 필요할 명령들을 정확히 익히고 시작하는 것이 좋다. Eclipse나 Android Studio 같은 IDEIntegrated Development Environment를 사용하지 않는다면 기본적으로 안드로이드 툴체인은 Ant를 빌드 툴로 사용하기 때문에 Ant에 대해서도 알아두는 것이 좋다.

2. 프로젝트의 생성과 관리

프로젝트의 최초 생성, 기존 프로젝트를 자신의 환경로컬 SDK 경로와 target ID 등으로 업데이트하는 방법과 서드파티third-party 라이브러리를 레퍼런스에 추가하고 사용하는 법을 설명한다.

3. 기기로부터 스크린샷을 얻는 방법

기기에서 /system/bin/screencap을 실행하여 스크린샷을 SD카드에 저장한 후 adb pull을 통해 로컬 컴퓨터로 가져 나올 수 있다. 스토어에 제공할 스크린샷을 준비할 때 편리하다.

$ adb shell screencap -p /sdcard/screenshot.png
$ adb pull /sdcard/screenshot.png screenshot.png

4.3(API 18)부터 스크린샷 캡처를 구현하는 방법이 변경되어 에뮬레이터로부터는 스크린샷을 찍을 수 없다. 안드로이드 5.1API 레벨 22을 지원하는 Android SDK 24.1.2와 거기에 함께 포함된 안드로이드 5.1 시스템 이미지에서 수정되었다.

4. Logcat과 pidcat

안드로이드 기기에서 android.util.Log를 통하여 발생하는 로그는 Logcat을 통해 볼 수 있다.

$ adb logcat

기기에서 발생하는 모든 로그가 출력되며, 옵션을 통하여 로그를 필터링할 수 있지만 번거롭고 읽기에 쉽지 않다. 태그와 로그 레벨에 따라 컬러링하여 로그를 출력해주는 pidcat을 사용하면 지정한 앱package에서만 출력하는 로그를 편리하게 읽을 수 있다.

pidcat

OS X에서는 Homebrew를 통하여 쉽게 설치할 수 있다.

$ brew install pidcat
$ pidcat com.example.myapp

5. lint

lint를 사용하면 소스 코드뿐 아니라 리소스에 대해서도 사소한 실수를 점검할 수 있는데, 안드로이드 플랫폼에 대한 정확한 지식이 없을 때 더 유용하다.

6. 다양한 크기의 화면과 태블릿을 지원하기

화면의 크기 및 DPI, 방향 등에 대응하여 리소스를 정의할 때, qualifier를 활용하여 리소스를 오버라이드하면 리소스를 단순하게 유지하면서 다양한 크기의 화면을 쉽게 지원할 수 있다.

Activity를 Fragment로 분리하고 재사용하여 태블릿같이 큰 화면을 활용하는 앱을 만들 수 있다.

7. 스타일과 테마

View나 윈도우에 적용되는 룩앤필을 정의하는 것을 스타일이라 하고, Activity나 앱 전체에 적용되는 것은 테마라고 한다. 새로운 앱을 만들 때, 먼저 Activity나 앱 전체에 OS에서 제공하는 테마 중에 어울리는 것을 찾아 설정하자.

8. 디버깅

이미 실행 중인 안드로이드 프로세스에 jdb 디버거를 연결하여 디버깅할 수 있다.

9. 공용 액션바 아이콘

새로 고침, 공유와 같이 액션바에서 자주 사용되는 공용 아이콘을 다운로드하여 사용할 수 있도록 제공한다. Adobe Illustrator용 원본 파일와 export 스크립트도 포함되어 있다.