[구글I/O 2015] 더 완벽해진 안드로이드 IDE ‘안드로이드 스튜디오 1.3 프리뷰’

송성광 saltfactory@gmail.com | 하이브레인넷 부설연구소에서 하이브리드 모바일 앱 개발과 데이터베이스 기반의 웹 서비스를 연구하고 있다. 창원대학교 데이터베이스 연구실에서 박사 학위를 준비하며 하이브리드 앱 개발 특강도 하고 있다. 모바일과 웹 서비스에 관한 블로그(http://blog.saltfactory.net)를 운영하며 틈틈이 하이브리드 앱 개발 책을 집필하고 있다.
정리| 조수현 기자 suhyeoni@imaso.co.kr

얼마 전 구글I/O 2105에서 안드로이드 개발 툴에 관한 신기술이 쏟아졌다. 최근 머티리얼 디자인(Material Design)으로 디자인을 통합한 구글은 파편화된 기기와 SDK까지 통합하는 새로운 기술을 선보이며 개발 환경과 생산성 혁신에 힘을 기울이고 있다. 그러한 구글이 올해 안드로이드 스튜디오 1.3 프리뷰를 발표했다. 어떤 것들이 소개됐을까? 이에 구글I/O의 발표 자료를 토대로 차기 안드로이드 스튜디오의 특징과 신기술을 살펴봤다.

안드로이드 스튜디오는 2년 전 처음 릴리즈됐다. 안드로이드가 처음 공개됐을 때에만 해도 자체적인 IDE는 없었다. 이 때문에 안드로이드 앱은 터미널이나 단순한 편집기를 통해 개발됐다. 이후 많은 개발자들은 자바 기반의 안드로이드 개발을 좀 더 쉽게 하고자 오픈소스 IDE인 이클립스(eclipse)를 사용하기 시작했다.

[그림 1] 안드로이드 스튜디오

안드로이드 개발 진영에서 ADT(Android Development Toolkit)라는 이클립스 플러그인을 내놓자 이클립스는 안드로이드 개발을 위한 통합 IDE로 널리 활용되기 시작했다. 그러나 안드로이드만을 위한 IDE가 아니다보니 플러그인으로 인한 크래시, 성능 저하 등이 끊임없이 문제가 됐다.

그러던 와중에 안드로이드를 위한 공식 IDE가 안드로이드 스튜디오란 이름으로 등장했다. 안드로이드 스튜디오는 젯브레인스(JetBrains)의 IDE인 인텔리제이(IntelliJ)에 기반을 두고 있다. 상용 소프트웨어인 인텔리제이와 달리 무료일 뿐 아니라 성능과 안전성 모두 우수해 안드로이드 스튜디오에 이목이 집중됐다. 최초의 안드로이드 스튜디오는 이클립스 ADT의 기능 대부분을 지원했을 뿐 아니라 빠르고 안정적이었다.

이후 안드로이드 스튜디오는 IDE 하나만으로도 많은 일을 할 수 있는 개발 환경으로 점차 발전하기 시작했다. 인텔리제이의 통합환경 기반에 빌드 도구도 그래들(gradle)로 변경되면서 복잡한 의존성과 빌드 문제가 해결됐다. 최근 발표된 안드로이드 스튜디오 1.3 프리뷰는 이전보다 더 많은 기능과 향상된 성능을 제공한다.

안드로이드 개발자가 원하는 IDE 기능
구글I/O 2015의 한 세션에서 발표된 ‘What’s New in Android Development Tools’의 첫 슬라이드 그래프([그림 2] 참조)를 보자. 많은 안드로이드 개발자들이 원하는 기능은 디자인 툴, 빠른 애뮬레이터, NDK 지원, 앱 테스트 지원 등인 것을 알 수 있다. 안드로이드 스튜디오 1.3에서는 이러한 요구들이 모두 수용됐다.

[그림 2] 안드로이드 개발자가 원하는 기능

안드로이드 디자인 라이브러리 지원
구글은 이제 웹과 모바일을 통합하고 있다. 구글의 모든 서비스는 머티리얼 디자인으로 개발되고 있다. 웹을 위한 프레임워크인 폴리머(Polymer)를 통해 웹과 모바일 웹 서비스에 머티리얼 디자인을 적용할 수 있다. 하이브리드 앱 개발 시에는 폴리머나 써드파티 머티리얼 디자인 라이브러리를 이용할 수도 있다. 그러나 웹 환경이 아닌 네이티브 안드로이드 앱에 머티리얼 디자인을 적용하는 것은 매우 복잡하다. 이를 해결하고자 추가적인 비용 지출 없이 머티리얼 디자인 형태로 개발할 수 있는 디자인 라이브러리들이 있다. 이러한 라이브러리의 사용법은 간단한데, 앱의 build.gradle 파일을 열어 com.android.support:design 라이브러리를 추가하면 된다.

[그림 3] 안드로이드가 지원하는 디자인 라이브러리

[toggle title=”[리스트 1] 디자인 라이브러리 이용하기” load=”show”]
[source]dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) compile ‘com.android.support:appcompat-v7:22.2.0’ compile ‘com.android.support:design:22.2.0’ }[/source]
[/toggle]

이제 더 이상 jar 라이브러리 파일을 다운로드하고 classpath를 잡는 번거로운 일을 하지 않아도 된다. 모든 것을 그래들이 알아서 처리한다. 메이븐 라이브러리 저장소에서 가져와 로컬 저장소에 저장하고, 자동으로 프로젝트에 추가한다. 지금부터는 이러한 디자인 라이브러리를 이용해 머티리얼 디자인의 플로팅 액션 버튼(Floating Action Button)을 앱에 추가해 보자([그림 4]).

[그림 4] 플로팅 액션 버튼

main_layout.xml 파일에 android.support.design.widget.FloatingActionButton을 정의하면 손쉽게 플로팅 액션 버튼을 추가할 수 있다([리스트 2] 참조).

[toggle title=”[리스트 2] 플로팅 액션 버튼 추가” load=”show”]
[source][/source]
[/toggle]

만약 레이아웃을 머티리얼 디자인의 카드뷰 형태로 만들고 싶다면 build.gradle 파일을 열고, com.android.support:design을 추가한 다음 dependencies에 com.android.supprt:cardview 라이브러리를 추가하면 된다. 그리고 레이아웃 정의 위치에 엘리먼트를 정의하면 레이아웃을 카드뷰 형태로 바꿀 수 있다.

Vector Drawable
안드로이드 기기의 해상도는 다양하다. 단일 크기의 비트맵 이미지로 안드로이드 앱을 개발하면 디바이스의 해상도에 따라 이미지 품질이 저하되는 등의 문제가 발생했다. 이에 개발자들은 다양한 해상도에 대응하는 이미지를 만들고, 이를 drawable-xhdpi와 같은 디렉토리에 넣어야 했다. 안드로이드 스튜디오 1.3 프리뷰에서는 이러한 작업을 더 이상 할 필요가 없다. 벡터 이미지로 다양한 스크린 해상도에 대응 가능해졌기 때문이다. 벡터 이미지를 이용하면 해상도 따라 이미지 크기가 변경되도 품질 저하가 없을 뿐 아니라 비트맵 이미지보다 용량도 작다. app/src/main/res/drawable 디렉터리에 벡터로 표현된 XML 파일 하나만 넣어두면 모든 해상도에 대응할 수 있다. 지금부터는 [그림 5]와 같은 벡터 이미지를 안드로이드 앱에 출력해 보자.

[그림 5] 안드로이드 로고 예제

[그림 5]와 같은 이미지 파일은 벡터(SVG)로 표현할 수 있다. 이를 XML로 저장하면 group과 path 정보를 가지고 있는데, 이를 안드로이드에서 사용하는 리소스 xml에 맞게 변환한 다음 drawable/android.xml에 저장하면 된다.

[toggle title=”[리스트 3] 벡터 값을 적용한 android.xml 이미지” load=”show”]
[source]

답글 남기기