본문 바로가기

2013
마이크로소프트웨어

글: 김도균 | dokyun@dokyun.pe.kr / 2013-06


<COVER STORY 1>

성공적인 앱 개발을 위한 FAQ

안드로이드 개발환경의 이해

안드로이드는 스마트폰을 넘어 다양한 기기로 적용 범위가 확대되고 있다. 애플의 iOS가 새로운 모바일 세상을 열었지만 안드로이드의 등장으로 말미암아 이제 비즈니스에서도 모바일은 필수적으로 고려해야 할 분야가 됐다. 한때 애플은 무소불위의 영향력을 행사했지만 이제 오픈소스란 거대한 흐름과 구글의 전폭적인 지원으로 안드로이드가 시장을 장악하고 있는 실정이다. 애플에게 반기를 든 글로벌 제조사들이 안드로이드 진영에 합류하고 수많은 안드로이드 기기가 출시됨에 따라 이제 안드로이드가 모바일 OS의 2인자에서 1인자로 도약할 날도 멀지 않았다.



Open Software, Open Device, Open Ecosystem’이란 목표 하에 개발된 모바일 플랫폼 ‘안드로이드’는 OS와 미들웨어, 핵심 애플리케이션이 포함된 모바일 기기를 위한 소프트웨어 스택이다. 안드로이드는 2013년 1분기 기준으로 국내 스마트폰 OS 시장의 약 90%를 장악했고 태블릿, 스마트TV, 셋톱박스, 차량용 인포메이션 시스템 등으로 영향력을 확대하고 있다. 이렇듯 안드로이드가 단기간 안에 성공할 수 있었던 요인은 무엇일까?

안드로이드는 시장의 주류였던 자바 기반의 프로그래밍 환경을 제공해 개발자의 진입 장벽이 낮았다. 거대 소프트웨어 기업인 구글은 자사의 웹서비스를 모바일로 확대해 수익을 극대화하는 전략을 선택했고 그 결과 안드로이드는 라이선스가 무료일 뿐 아니라 오픈소스 정책을 고집해 코드가 누구에게나 공개돼 있다. 게다가 구글이 안드로이드 개발을 주도하면서 개발에 필요한 문서, 샘플코드, 개발 툴이 잘 갖춰져 있으며 써드파티 개발자를 위한 애플리케이션과 모바일 광고 생태계로 이동통신사와 모바일 제조사의 참여를 이끌어냈다는 점도 안드로이드가 성공할 수밖에 없는 요인이다.


안드로이드의 미래
거대한 플랫폼 생태계를 구축한 안드로이드의 미래에 대해 다양한 전망이 제기되고 있다. 안드로이드와 크롬의 결합이 대표적이며, 최근 공개된 구글 글래스 API가 안드로이드 환경에 어떤 변화를 가져올 것인가 등 세간의 관심이 온통 구글에 집중돼 있다. 특히 곧 개최될 구글 IO에서는 안드로이드 4.2(젤리빈)의 차기작인 안드로이드 5, 키 라임 파이(Key Lime Pie)가 공개될 전망이다. 이 OS는 리눅스 커널 3.8 기반으로 설계돼 메모리 효율이 향상되고 지톡(GTalk)보다 발전된 형태의 새로운 메시지 플랫폼인 구글 바블(Google Babble)이 포함될 것으로 예상되고 있다. 이 같은 루머를 제기한 테크레이다(www.techrader.com)에서는 키 라임 파이의 주요 특징을 다음과 같이 전망했다.


- 게임, 멀티미디어 감상, 취침 등의 상황에 맞춰 정의된 프로파일에 따라 자동으로 성능을 관리
- 다양한 안드로이드 기기에서 일관되고 연속된 사용성과 사용자 경험 제공
- 페이스북 홈과 유사한 소셜 기능을 내장
- 내장 키보드에 선긋기 모드 추가
- 애플 페이스 타임과 같은 안드로이드 표준 영상통화 앱 탑재
- 연락처에서 다수의 사람에게 SMS나 MMS를 전송
- 받은 메시지를 다양한 안드로이드 기기와 동기화
- 특정 앱에 대한 업데이트 차단 기능 추가
- 애플처럼 전문 리뷰어에게 유료 앱을 무료로 제공하는 프리비(Freebie) 코드 제공
- 점차 복잡해진 설정 항목을 더 쉽게 찾을 수 있는 정렬 기능 제공



<그림 1> 키 라임  파이(출처: www.techradar.com)


안드로이드의 아키텍처
안드로이드의 아키텍처는 크게 자바로 구성된 구성요소와 C 언어 기반의 네이티브 코드로 나뉜다. <그림 2>는 안드로이드 플랫폼의 주요 구성요소이며, 각 계층별 기능은 다음과 같다.



<그림 2> 안드로이드 아키텍처


최상위 계층인 응용 애플리케이션에는 내장 앱이나 개발 앱이 해당되며, 프레임워크 계층은 안드로이드 컴포넌트의 재사용과 교체의 용이성, 앱 배포 등과 관련된 기능이 내장돼 있다.

안드로이드 런타임은 핵심 라이브러리의 집합과 다양한 기기에서 동작하는 달빅 가상 머신이 여기에 해당하며, 라이브러리 계층의 경우 다양한 컴포넌트에서 고성능 앱 개발에 활용할 수 있는 C/C++ 라이브러리를 제공한다. 하드웨어 추상화 계층은 제조사에서 자체 컴포넌트를 추가할 수 있는 곳으로 표준화되지 않은 라이브러리 문제를 해결하기 위해 일관된 함수 이름과 형식이 정해져 있다. 

리눅스 커널 계층은 오픈소스로서 이미 안전성이 검증되고 다양한 드라이버를 지원하는 리눅스 커널을 통해 백그라운드 스레드와 메모리 관리, 보안, 디바이스 드라이버를 제공한다. 최근에는 바인더와 로우 메모리 킬러, 전원관리 등이 추가됐다.


안드로이드 개발자로 첫 발 내딛기
굳이 개발자 등록을 하지 않아도 안드로이드 SDK를 다운로드하고 개발자 웹사이트를 이용할 수 있다. 그러나 자신이 개발한 앱을 구글 플레이로 전 세계에 배포하기 위해서는 반드시 개발자 등록을 해야 한다. 애플과 마이크로소프트처럼 개발자 등록에 비용이 들지만 1/4 수준으로 저렴하고 한 번만 등록하면 갱신이 필요 없다.

즉, 안드로이드 개발자가 되기 위한 첫 단계가 개발자 등록인 것이다. <그림 3>은 개발자 등록 웹사이트의 첫 화면으로, 필수 데이터를 입력하고 안드로이드 마켓 개발자 배포 계약에 동의하면 구글 체크아웃을 통해 개발자 등록 수수료를 결제한다. 결제가 완료되면 ‘구글 플레이 개발자 콘솔’에서 판매자 계정 정보를 설정하자. 무료 앱만 배포할 계획이라면 판매자 설정 과정은 건너뛰어도 된다.



<그림 3> 개발자 등록 웹사이트


개발자 등록을 모두 완료했다면 안드로이드 개발자 웹사이트(http://developer.android.com)에서 앱 디자인과 개발에 필요한 API와 개발 도구, SDK, 관련 문서, 앱 배포 가이드 등의 정보를 확인하자(<그림 4> 참조).



<그림 4> 안드로이드 개발자 웹사이트


안드로이드 개발 환경 구성
안드로이드 앱은 자바 기반이기 때문에 우선 JDK를 설치해야 한다. JDK는 오라클 자바SE 웹사이트(www.oracle.com/tech network/java/javase/downloads/index.html)의 [Java Platform, Standard Edition] 항목에서 JDK 다운로드 버튼을 클릭한다. Java SE Download 페이지에서 개발 환경, 즉 OS에 맞는 파일을 다운로드하면 된다. 최근 JDK 1.7의 경우 보안 문제가 제기된 만큼 1.6 버전을 다운로드하는 것도 고려할 만하다.

개발 환경 구성의 다음 단계는 안드로이드 SDK 설치와 구성이다. <그림 5>와 같이 구글 개발자 웹사이트에서 안드로이드 SDK를 다운로드할 때 [USE AN EXISTING IDE] 버튼을 선택하고 [Download the SDK Tools for Windows]를 클릭하면 순수한 SDK만을 받을 수 있다. 만약 [Download the SDK ADT Bundle for Windows]를 클릭해 다운로드한 파일에는 압축만 해제하면 즉시 개발을 시작할 수 있도록 다음과 같은 프로그램이 포함돼 있다.



<그림 5> 안드로이드 SDK 다운로드


- 이클립스와 ADT 플러그인
- 안드로이드 SDK 툴
- 안드로이드 플fot폼 도구
- 최신 안드로이드 플랫폼
- 최신 안드로이드 AVD 이미지


앞서 언급했듯 SDK만을 다운로드했다면 개발 환경의 하나하나를 직접 설정해야 한다. 안드로이드 개발 환경 구축에 앞서 자바 SDK를 설치해야 함에 주의하자. 

SDK 설치 과정이 완료되면 안드로이드 SDK 매니저가 실행되며, 여기서 실제 안드로이드 SDK를 다운로드할 수 있지만 이클립스를 이용할 경우 보통 플러그인 형태의 안드로이드 SDK 매니저를 사용한다.


안드로이드 개발 도구
안드로이드 개발 효율성을 높이기 위해서 많은 이들이 개발에 필요한 다양한 기능을 모두 제공하는 통합개발환경을 구축한다. 여기에 이용되는 대표적인 도구가 이클립스다. 최근에는 C#으로 안드로이드나 iOS, 맥 애플리케이션을 개발할 수 있는 Xamarin도 등장했다.


1. 이클립스이클립스는 전 세계적으로 가장 유명한 오픈소스 IDE로, 강력한 플러그인 기능과 유연한 확장성 덕분에 개발자들 사이에서는 상용 도구 이상의 인기를 얻고 있다. 해당 웹사이트(www. eclipse.org/downloads)에서 다운로드한 파일을 ‘C:eclipse’ 폴더에 풀고 eclipse.exe를 실행하는 것만으로 이클립스를 사용할 수 있다(<그림 6> 참조).



<그림 6> 이클립스


이클립스로 안드로이드 앱을 개발하기 위해서는 ADT (Android Development Toolkit)를 설치하고 AVD(Android Virtual Device)를 설정한다. 이클립스는 다양한 플러그인으로 기능을 확장할 수 있는데 ADT도 이러한 플러그인 중 하나다. 이클립스의 메뉴에서 [Help] → [Eclipse Marketplace]를 선택하면 <그림 7>처럼 플러그인 검색 화면이 나온다. 여기서 [Android Development Tools for Eclipse]를 검색한 후 ADT를 설치하자.



<그림 7> 이클립스 마켓플레이스


안드로이드 앱을 실제 안드로이드 기기에서 개발하는 것이 좋지만 현실적으로 어렵다면 안드로이드 프레임워크가 제공하는 에뮬레이터인 AVD를 이용하면 된다. <그림 8>의 AVD 매니저에서 AVD를 생성할 수 있으며 더 자세한 정보는 안드로이드 개발자 웹사이트(http://developer.android.com/tools/devices/ emulator.html)에서 확인할 수 있다.



<그림 8> 안드로이드 AVD 매니저


2. Xamarin 2.0과 비주얼 스튜디오 2012
비주얼 스튜디오 환경과 C# 언어에 익숙한 개발자라면 반가운 소식이 최근 들려왔다. 안드로이드 앱을 이제 C#으로 개발할 수 있게 된 것이다. 이를 가능케 한 Xamarin은 노벨의 Mono 플랫폼 개발팀이 분사한 스타트업으로, Xamarin 웹사이트(http:// xamarin.com/download)에서 간단한 몇 가지 정보를 입력하는 것만으로 비주얼 스튜디오 2012를 위한 iOS와 안드로이드 개발 툴을 다운로드할 수 있다. <그림 9>처럼 XamarinInstaller.exe를 실행하면 인터넷을 통해 관련 프로그램이 다운로드되고 자동으로 설치된다.



<그림 9> Xamarin 설치


‘Xamarin for Windows’를 설치한 후 비주얼 스튜디오 2012에서 프로젝트를 생성하면 <그림 10>처럼 안드로이드와 iOS용 프로젝트 템플릿이 추가된 것을 확인할 수 있다. 첫 프로젝트라면 Xamarin 라이선스를 트라이얼로 이용할지 구매할지를 결정해야 하며, 마이크로소프트 MVP 혜택으로 라이선스를 증정 받거나 이미 구입했다면 Xamarin 웹사이트에서 라이선스를 활성화시켜야 한다.



<그림 10> 비주얼 스튜디어 2012에서 안드로이드 프로젝트 생성


이클립스에서 AVD를 제공하듯 Xamarin이 설치된 비주얼 스튜디오 2012에서도 동일한 AVD로 안드로이드 앱을 설치하고 테스트할 수 있다.


지금까지 안드로이드 개발 환경에 대해 간략하게 살펴봤다. 이미 수많은 개발서와 강의를 통해 알려졌지만 앞으로의 변화에 대한 새로운 소식들은 안드로이드 개발자하면 주목해야 할 것이다. 이제부터는 정적인 지식 전달 형식에서 벗어나 미래의 안드로이드 개발자들이 궁금할 만한 의문을 FAQ 형식으로 정리해본다. 이를 통해 개발자들이 평소 가졌던 의문이 해소되고 안드로이드 개발 환경에 대해 더 깊이 이해하는 기회가 될 것이다.


FAQ


Q. AVD로 안드로이드 앱을 개발할 때 알면 유익한 팁이 있다면?
A. AVD 경로와 AVD 실행과 관련된 다음 두 가지 팁이 유익할 것으로 생각된다.


(1) AVD 파일 경로는 반드시 영문이어야 한다.
대부분의 프로그램에서 한글 경로가 지원되지만 다양한 플러그인을 함께 사용하거나 개발 도구의 버전에 따라 한글 경로가 문제가 되는 경우도 있다. 그러므로 설치나 구성에 쓰이는 모든 경로는 가급적 영문으로 쓰는 것이 바람직하다. 만약 AVD를 이미 한글 경로에 설치했다면 다음과 같은 간단한 명령어로 영문 경로로 변경할 수 있다.


myAVD 경로를 C:AVD로 변경하길 원할 경우
android move avd -n myAVD -p c:AVDmyAVD


(2)  AVD 빠르게 실행하기
AVD는 가상 장치이기에 안드로이드 기기보다 실행 속도가 느린 편이다. 개발 과정에서 자주 AVD를 실행하고 종료하는 것보단 한 번 AVD를 실행한 후 종료하지 않고 계속 사용하는 것이 좋다. 코드 수정 후 다시 컴파일하면 이미 실행된 AVD에서 해당 앱만 다시 실행하면 된다.


Q. 개발한 안드로이드 앱을 실제 안드로이드 스마트폰에 어떻게 설치할 수 있는가?
A. 스마트폰 제조사마다 설정 메뉴가 다르지만 가장 점유율이 높은 삼성전자의 갤럭시 시리즈를 기준으로 설명하면 다음 세 단계만 거치면 개발한 앱을 스마트폰에 설치할 수 있다.


(1)  먼저 스마트폰의 USB 드라이버를 설치한다.
갤럭시 시리즈의 경우 삼성전자 웹사이트(www.samsung. com/sec/support/pcApplication/KIES)에서 유니버설 드라이버를 다운로드할 수 있다.


(2) 테스트할 스마트폰에 USB 디버깅을 활성화한다.
<그림 11>처럼 [환경설정] → [개발자 옵션] → [USB 디버깅]을 설정하자.



<그림 11> USB 디버깅 설정


(3) AVD와 스마트폰 중 앱이 실행될 장치를 지정한다.
이클립스에서 [Run] → [Run Configuration...]을 선택한 다음 [Target] 탭의 ‘Deployment Targe Selection Mode’를 ‘Always prompt to pick device’로 수정하자.


Q. 안드로이드 앱은 자바 언어로만 개발할 수 있는가?
A. 이미 잘 알려져 있듯 기본적으로 안드로이드 앱은 자바로 개발해야 하지만 사용할 개발 킷(SDK, NDK, PDK)에 따라 다른 언어로도 개발할 수 있다. 앞서 소개했듯 Xamarin과 같은 업체에서 비주얼 스튜디오 2012와 C#으로 안드로이드 앱을 개발할 수 있는 도구를 제공하고 있다.


- SDK(Software Development Kit)로는 구글에서 제공하는 자바 API로 안드로이드 앱을 개발할 수 있다.
- NDK(Native Development Kit)는 고성능을 요구하는 안드로이드 앱의 기능을 C/C++ 언어로 개발할 수 있도록 지원한다. 그러나 오픈되지 않은 라이브러리를 사용할 수 없는 단점이 있다.
- PDK(Platform Development Kit)는 안드로이드 포팅을 목적으로 SDK와 NDK를 포괄적으로 개발할 때 사용된다. PDK 개발을 위해서는 맥OS나 리눅스 등의 유닉스 계열 OS로 개발환경을 구축해야 하며, NDK에 비해 권한으로부터 자유로운 것이 특징이다.


Q. 이클립스에서 한글을 사용하고 싶다. 또한 코드에 줄번호를 표시하려면 어떤 설정이 필요한가?
A. 이클립스의 워크스페이스 문자셋을 기본설정에서 UTF-8로 변경하면 한글을 이용할 수 있다. 이클립스에서 [Windows] → [Preference] → [General] → [Workspace]를 클릭하고 [Text file encoding]의 값을 UTF-8로 변경하면 된다(<그림 12> 참조).



<그림 12> 워크스페이스 인코딩 설정


코드에 줄번호를 부여하면 코드의 가독성을 높일 수 있다. 이클립스 메뉴에서 [Windows] → [Preference] → [General] → [Editors Text Editors]를 클릭하고 속성 창에서 [Show line numbers]를 클릭하자(<그림 13> 참조).



<그림 13> 편집기 줄번호 표시


Q. 이클립스에서 안드로이드 프로젝트를 생성한 후 [프로젝트 탐색기]에 보이는 프로젝트의 구조에 대해 알고 싶다.
A. <그림 14>는 전형적인 안드로이드 프로젝트 구조다. 옵션으로 표시된 폴더는 개발자의 필요에 따라 생성할 수 있는 부분이며, 그 밖의 요소의 의미는 <표 1>에서 확인할 수 있다.



<그림 14> 안드로이드 프로젝트 구조




/필/자/소/개/

김도균dokyun@dokyun.pe.kr (프리지아 랩)

마이크로소프트 공인 강사(MCT)이자 MVP(Exchange)이며 IT 전문 번역가와 컬럼니스트로 활동하고 있다. 스마트 라이프를 추구하는 라이프 스타일 이노베이터며 사소하고 일상적인 것에 새로운 가치를 부여하는 일을 즐긴다. 기술 전문가 집단 GoDev(www. godev.kr)의 기술 창의성 리더로, 최근에는 <나홀로 개발자를 위한 안드로이드 프로그래밍의 모든 것>을 출간했으며 그간 20여권의 번역서를 낸 바 있다.




※ 본 내용은 (주)마소인터렉티브(http://www.imaso.co.kr/)의 저작권 동의에 의해 공유되고 있습니다.
    Copyright ⓒ Maso Interactive Corp. 무단전재 및 재배포 금지

맨 위로
맨 위로