오픈 소스 어플라이언스 플랫폼 |
난이도 : 초급 Frank Ableson, Software designer 원문 게재일 : 2009 년 5 월 12 일 Android는 Linux® V2.6 커널 기반의 완벽한 운영 환경입니다. Android의 초기 전개 대상은 스마트폰과 저가형 플립폰 장치를 포함한 휴대폰 분야였습니다. 하지만 Android의 다양한 컴퓨팅 서비스 및 기능 지원은 휴대폰 시장을 넘어설 수 있을 정도로 강력한 잠재력을 가지고 있습니다. Android는 다른 플랫폼 및 애플리케이션에서도 유용하게 사용할 수 있습니다. 이 기사에서는 Android 플랫폼을 소개한 후 기본적인 Android 애플리케이션을 코딩하는 방법에 대해 설명합니다. BlackBerry와 iPhone은 둘 다 인기가 높은 고성능 모바일 플랫폼이면서도 서로 다른 고객층을 가지고 있다. BlackBerry는 기업 비즈니스 사용자를 고객으로 확보하고 있지만 소비자 장치 분야에서는 사용 편의성과 "멋진 디자인"을 겸비한 iPhone과의 경쟁을 따라잡지 못하고 있다. 아직까지 검증되지 않은 새로운 플랫폼인 Android는 두 영역의 휴대폰 고객층을 만족시키고 업무와 놀이를 연결할 수 있는 가능성을 가지고 있다. 오늘날 많은 네트워크 기반 또는 네트워크 지원 가전 기기에서 Linux 커널을 실행하고 있다. Linux 커널은 경제적으로 전개 및 지원할 수 있고 좋은 디자인으로 쉽게 채택될 수 있는 견고한 플랫폼이다. 그러한 장치의 UI 중 일부는 HTML을 기반으로 하기 때문에 PC 또는 Mac 브라우저를 통해서도 볼 수 있다. 하지만 모든 가전 기기에 일반 컴퓨팅 장치를 이용한 제어가 필요하지는 않다. 스토브, 전자레인지 또는 제빵기와 같은 일반적인 가전 기기를 생각해 보자. Android를 이용해서 이러한 가전 기기를 제어할 수 있고 컬러 터치 스크린이 장착되어 있다면 어떨까? 스토브 상단에 표시되는 Android UI를 통해 요리를 할 수도 있을 것이다. 이 기사에서는 Android 플랫폼에 대해 설명한 후 이 플랫폼을 모바일 및 비모바일 애플리케이션에서 활용하는 방법을 살펴본다. Android SDK를 설치하고 단순한 애플리케이션을 빌드하는 과정도 소개한다. 다운로드 섹션에서 이 기사의 예제 애플리케이션에 대한 소스 코드를 다운로드할 수 있다.
Android 플랫폼은 보다 나은 휴대폰을 만들기 위해 결성된 단체인 Open Handset Alliance의 제품이다. Google이 주도하고 있는 이 단체에는 이동 통신 업체, 장치 제조업체, 컴포넌트 제조업체, 소프트웨어 솔루션 및 플랫폼 제공업체, 마케팅 업체를 비롯한 여러 기업에서 참여하고 있다. 소프트웨어 개발 차원에서 Android는 오픈 소스 세계의 중심에서 큰 관심을 받고 있다. 최초로 출시된 Android 지원 휴대폰은 HTC에서 제조하고 T-Mobile에서 공급한 G1 휴대폰이다. 이 휴대폰은 1년에 가까운 연구 개발 끝에 출시되었으며 유일한 소프트웨어 개발 도구도 개선을 거듭하여 SDK 릴리스로 탄생되었다. G1 출시일이 가까워지면서 Android 팀에서는 SDK V1.0을 발표했으며 새 플랫폼을 위한 애플리케이션도 선을 보이기 시작했다. 혁신을 촉진하기 위해 Google에서는 2회에 걸친 "Android Developer Challenges"를 개최하여 수백만 달러의 상금을 우수 출품작에게 지급했다. G1 출시 후 수 개월이 지나서 애플리케이션을 검색하여 휴대폰에 직접 다운로드할 수 있는 Android Market의 서비스가 개시되었다. 약 18개월에 걸쳐서 새로운 모바일 플랫폼이 공적인 영역에 진입했다.
Android는 데스크탑 운영 체제라는 착각이 들 정도로 매우 다양한 기능을 제공한다. Android는 Linux 커널을 기반으로 하는 계층화된 환경이며 다양한 기능을 담고 있다. UI 서브시스템에는 다음과 같은 구성 요소가 있다.
Android에는 iPhone의 Mobile Safari 브라우저에 사용되는 것과 동일한 오픈 소스 브라우저 엔진인 WebKit 기반의 내장형 브라우저가 포함되어 있다. Android는 WiFi, Bluetooth 및 이동 통신망(예: GPRS, EDGE 및 3G)을 이용한 무선 데이터를 비롯한 다양한 연결 옵션을 자랑한다. Android 애플케이션의 유명한 기술은 Google Maps에 연결하여 애플리케이션 내에서 주소를 직접 표시하는 기능이다. Android 소프트웨어 스택에는 위치 기반 서비스(예: GPS) 및 가속도 센서에 대한 지원도 포함되어 있지만 필수 하드웨어가 구비되어 있지 않는 Android 장치도 있다. 카메라 기능도 지원된다. 역사적으로 모바일 애플리케이션이 데스크탑 애플리케이션을 따라잡기 위해 심혈을 기울이고 있는 두 분야는 그래픽/미디어와 데이터 저장 방법이다. Android는 OpenGL 라이브러리를 포함한 내장 2D 및 3D 그래픽 지원을 통해 그래픽 문제를 해결했다. 데이터 저장 문제는 Android 플랫폼에 유명한 오픈 소스 SQLite 데이터베이스가 포함되면서 완화되었다. 그림 1에서는 Android 소프트웨어 계층을 간단하게 보여 준다. 그림 1. Android 소프트웨어 계층
앞에서 설명한 대로 Android는 Linux 커널 위에서 실행된다. Android 애플리케이션은 Java 프로그래밍 언어로 작성되었으며 VM(Virtual Machine) 내에서 실행된다. 하지만 여기서 주의할 점은 이 VM이 일반적으로 예상하고 있는 JVM이 아니라 Dalvik Virtual Machine이라는 오픈 소스 기술이라는 점이다. 아래 그림에서 볼 수 있듯이 각 Android 애플리케이션은 Dalvik VM 인스턴스 내에서 실행되고 이 인스턴스는 Linux 커널 관리 프로세스 내에 있다. 그림 2. Dalvik VM Android 애플리케이션은 다음과 같은 분류 요소 중 하나 이상의 요소로 구성되어 있다.
Android 애플리케이션은 AndroidManifest.xml 파일과 함께 장치에 전개된다. AndroidManifest.xml에는 애플리케이션을 장치에 올바르게 설치하는 데 필요한 구성 정보가 있다. 이러한 구성 정보에는 필수 클래스 이름, 애플리케이션에서 처리할 수 있는 이벤트 유형 및 애플리케이션을 실행하는 데 필요한 권한이 포함된다. 예를 들어, 파일을 다운로드하기 위해 애플리케이션이 네트워크에 액세스해야 하는 경우에는 이 권한이 매니페스트 파일에 명시적으로 설정되어 있어야 한다. 많은 애플리케이션에서는 이 특정 권한이 설정되어 있다. 이와 같은 선언적 보안은 악성 애플리케이션이 장치에 영향을 미칠 수 있는 가능성을 줄여 준다. 다음 섹션에서는 Android 애플리케이션을 개발하는 데 필요한 개발 환경에 대해 설명한다.
Android 애플리케이션 개발 작업을 가장 쉽게 시작하는 방법은 Android SDK와 Eclipse IDE를 다운로드하는 것이다(참고자료 참조). Android 개발 작업은 Microsoft® Windows®, Mac OS X 또는 Linux에서 수행할 수 있다. 이 기사에서는 Eclipse IDE와 Eclipse용 Android Developer Tools 플러그인을 사용하는 것으로 간주한다. Android 애플리케이션은 Java 언어로 작성되지만 Dalvik VM(비Java 가상 시스템)에서 컴파일 및 실행된다. Eclipse에서는 상황에 맞는 도움말 및 코드 제안 힌트를 비롯한 다양한 기능을 갖춘 Java 환경이기 때문에 매우 직관적으로 Java 언어를 코딩할 수 있다. Java 코드가 정상적으로 컴파일되면 Android Developer Tools이 AndroidManifest.xml 파일을 포함한 애플리케이션이 올바르게 패키지되었는지 확인한다. Eclipse 및 Android Developer Tools 플러그인이 없어도 Android 애플리케이션을 개발할 수 있지만 Android SDK에 대해서 알고 있어야 한다. Android SDK는 하드 드라이브의 디렉토리에 압축 해제되는 ZIP 파일로 배포된다. 여러 가지 SDK 업데이트가 있으므로 SDK 설치를 쉽게 전환할 수 있도록 개발 환경을 잘 관리하는 것이 좋다. SDK에 포함된 내용은 다음과 같다.
Android 애플리케이션은 실제 장치에서도 실행되지만 Android SDK와 함께 제공되는 Android Emulator에서도 실행된다. 그림 3에서는 Android Emulator의 홈 화면을 보여 준다. 그림 3. Android Emulator
그림 4. adb 쉘 명령 사용하기이 쉘 환경에서 다음과 같은 작업을 수행할 수 있다.
동일한 명령 프롬프트 환경에서 SQLite 데이터베이스와 상호 작용하고 프로그램을 시작하는 등의 작업을 포함한 여러 가지 시스템 레벨 작업을 수행할 수 있다. 전화기에 연결된 상태라는 것을 감안하면 이는 상당히 뛰어난 기능이다. 다음 섹션에서는 단순한 Android 애플리케이션을 작성한다.
이 섹션에서는 Android 애플리케이션의 개발 과정을 간단히 설명한다. 예제 애플리케이션은 상상할 수 있을 정도로 단순한 수정된 "Hello Android" 애플리케이션이다. 이 기사에서는 휴대폰을 손전등으로 사용할 수 있도록 간단한 수정을 통해 화면 배경색을 완전 흰색으로 설정한다. 참신한 아이디어는 아닐지라도 예제로서는 유용한 아이디어이다. 전체 소스 코드를 다운로드한다. Eclipse에서 애플리케이션을 작성하기 위해 File > New > Android project를 선택한다. 그러면 New Android Project 마법사가 실행된다. 그림 5. New Android Project 마법사 그런 다음 단일 활동과 UI 레이아웃이 main.xml에 저장되어 있는 단순한 애플리케이션을 작성한다. 이 레이아웃에는 Android FlashLight라고 하는 수정할 텍스트 요소가 있다. 이 단순한 레이아웃은 다음과 같다. Listing 1. FlashLight 레이아웃
strings.xml에 한 쌍의 색 리소스를 작성한다. Listing 2. strings.xml에서 색 설정하기
기본 화면 레이아웃의 배경색은 레이아웃에는 단일 이 애플리케이션에는 다음과 같은 FlashLight.java라는 Java 소스 파일이 있다. Listing 3. Flashlight.java
이 코드는 New Project 마법사에서 직접 생성된 상용구이다.
애플리케이션을 실행하면 흰색 화면에 검은색 텍스트가 표시된다. 그림 6. Flashlight의 흰색 화면 FlashLight 애플리케이션을 위해 설정된 AndroidManifest.xml 파일은 다음과 같다. Listing 4. FlashLight를 위한 AndroidManifest.xml
이 파일은 Eclipse용 Android Developer Tools 플러그인에 의해 자동으로 작성되므로 아무 작업도 수행하지 않아도 된다. 물론 이 애플리케이션은 매우 훌륭하다고 표현할 수는 없겠지만 곤히 잠들어 있는 아내를 방해하지 않고 간단한 문서를 읽으려고 할 때나 전원이 차단되어 지하실에 있는 퓨즈함을 찾으러 갈 때 유용하게 사용할 수 있다.
이 기사에서는 상위 레벨에서 Android를 살펴본 후 단순한 애플리케이션을 작성해 보았다. 예제에 흥미를 느껴서 Android 플랫폼에 대한 학습 욕구가 커졌기를 바란다. Android는 휴대폰에 멈추지 않고 더 넓은 시장에서 그 가치를 인정 받는 오픈 소스 플랫폼이 될 것이다.
|
출처: http://www.ibm.com/developerworks/kr/library/os-android-devel/index.html