안드로이드 스튜디오 2.0 미리보기: 인스턴트 런

안드로이드의 앱을 개발하는 과정은 XML 파일이나 Java 파일을 수정하고 매번 앱 APK 전체를 단말에 올려 변경 사항을 확인하는 것입니다. 앱 전체를 새로 올리기 때문에 이 과정은 시간을 많이 소비하고 안드로이드 앱 개발 과정 전체에서 많은 시간을 소진합니다.

지난 11월 23일에 발표된 안드로이드 스튜디오 2.0 프리뷰 버전은 개발 과정을 단축시켜줄 여러가지 기능을 포함하고 있습니다.

대표적인 생산성 향상 기능 중 하나는 앱의 개선 과정을 빠르게 적용할 수 있는 인스턴트 런인데요. 많은 개발자들이 이 기능에 추가에 환호하고 있습니다. 앱의 개발 주기를 짧게 잡고 빠르게 적용하기 위해 인스턴트 런 기능을 사용해보세요.

이 글은 Android Tools Project SiteInstant Run 문서의 내용을 알기 쉽게 정리한 것입니다.

안드로이드 스튜디오 2.0 프리뷰 설치하기

안드로이드 스튜디오 2.0 프리뷰 버전은 아직 정식버전이 아닙니다. 새로운 버전을 미리 실험할 수 있는 카나리 채널에서 프리뷰 버전을 다운로드 받을 수 있습니다. 크롬은 안정 버전(Stable), 베타버전(Beta), 개발버전(Dev), 카나리(Canary) 버전으로 나뉘어 지고 뒤로 갈수록 불안정한 테스트 버전입니다. 크롬은 개발 단계에 따라 카나리 버전에서 안정 버전으로 올라가게 되어 최종적으로 출시됩니다.

이런 개발 뉴스를 더 만나보세요

사용중인 안드로이드 스튜디오를 프리뷰 버전으로 대체하는 것은 여러 문제를 발생시킬 수 있습니다. 어떤 버전은 호환성을 해치는 변경점을 가지고 있습니다. 이런 경우 개발 중인 앱이 제대로 동작하지 않는 문제가 발생합니다. 프리뷰 버전은 아직 불안정한 버전이기 때문에 개발 과정에 여러가지 불편한 버그와 문제점이 발생할 수 있습니다.

프리뷰 단계의 안드로이드 스튜디오를 기존의 개발환경과 별도로 다운받아 설치하는 것을 추천합니다.

맥의 경우에는 새롭게 설치되는 버전로 대체하지 않고 유지하도록 하면 두 버전을 함께 설치할 수 있습니다.

코드 샘플 불러오기

인스턴트 런을 수행하기 위해 안드로이드의 샘플 코드를 이용해봅시다. 안드로이드 스튜디오를 열어 Import an Android code sample을 클릭합니다.

Floating Action Button Basic 예제를 수행해볼 것입니다. 목록을 스크롤하거나 검색창에 키워드를 입력하여 찾아 선택한 후 Next를 누릅니다.

프로젝트 명과 설치 경로를 지정해야한다. 기본 설정 혹은 자신에게 적합한 설정을 합시다.

화면 하단을 보면 빌드 툴 버전에 대한 에러를 볼 수 있습니다. 그 아래에 있는 Install Build Tools 23.0.2 and sync project를 눌러 버전을 업데이트합니다.

인스턴트 런 실행하기

에러 메시지가 다르거나 에러가 없는 경우에도 빌드 툴의 버전이 23.0.2 이상인지 확인하고 다음으로 진행합시다. 이 버전이 인스턴트 런 실행을 위해 필수적이지는 않습니다만 보다 빠른 dex 처리 기능들을 포함하고 있습니다. 인스턴트 런과 딱 어울리는 업데이트입니다.

환경 설정을 엽시다. 맥의 경우에는 화면 상단에 있는 메뉴에서 Android Stduio > Preferences를 클릭하고 윈도우즈의 경우에는 File > Settings를 선택합니다.

Build, Execution, Deployment 항목의 Instant Run 소항목으로 이동한 후 Update Project를 클릭합니다. 프로젝트 설정이 인스턴트 런 지원을 위해 변경되는 동안 잠시 기다립시다.

변경이 완료된 후 Application/build.gradle 파일을 보면 아래와 같은 부분을 확인할 수 있습니다.

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0-alpha1'
    }
}
...

buildscript 항목의 dependencycom.android.tools.build:gradle:2.0.0-alpha1가 추가된 것을 볼 수 있습니다.

이 설정이 추가되었다면 API 레벨 14 이상의 단말에서 인스턴트 런을 수행할 수 있습니다. API 레벨 14는 안드로이드 4.0 아이스크림 샌드위치입니다. 만약 사용하는 단말 버전이 이 버전 보다 낮다면 인스턴트 런을 사용할 수 없습니다. 준비되었다면 앱을 수행합시다.

앱을 수정하여 인스턴트 런을 경험해 봅시다. Application\src\main\java\com\example\android\floatingactionbarbuttonbasic 폴더의 FloatingActionButtonBasicFragment.java 파일을 수정합시다.

import android.widget.Toast;
@Override
public void onCheckedChanged(FloatingActionButton fabView, boolean isChecked) {
    // When a FAB is toggled, log the action.
    switch (fabView.getId()){
        case R.id.fab_1:
            Toast.makeText(getActivity(), "Instant Run rocks!", Toast.LENGTH_SHORT).show();
            Log.d(TAG, String.format("FAB 1 was %s.", isChecked ? "checked" : "unchecked"));
            break;
        case R.id.fab_2:
            Log.d(TAG, String.format("FAB 2 was %s.", isChecked ? "checked" : "unchecked"));
            break;
        default:
            break;
    }
}

수정을 완료 후에 툴바의 인스턴트 런 버튼을 눌러주세요.

앱이 눈깜박할 사이에 갱신되었습니다. 첫번째 플로팅 액션 버튼을 눌러 갱신을 확인해 봅시다.

인스턴트 런을 모든 곳에서 쓸 수 있을까요?

인스턴트 런 지원

인스턴트 런을 모든 경우에 적용할 수는 없습니다. 인스턴트 런이 적용가능한 경우는 아래와 같습니다.

  • 인스턴스 메서드 구현의 변경.
  • 정적 메서드 구현의 변경.
  • 클래스의 추가와 삭제.
  • 스트링 리소스의 추가, 삭제, 변경. (이 경우에는 액티비티가 재시작됩니다.)

인스턴트 런 미지원

인스턴트런이 아직 지원되지 못하는 경우는 다음과 같습니다.

  • 어노테이션의 추가, 삭제, 변경.
  • 인스턴스 필드의 추가, 삭제, 변경.
  • 스태틱 필드의 추가, 삭제, 변경.
  • 스태틱 메서드 시그내쳐의 추가와 삭제.
  • 인스턴스 메서드의 추가와 삭제.
  • 인스턴스 메서드 시그네쳐의 변경.
  • 현재 클래스가 상속받고 있는 부모 클래스의 변경.
  • 구현된 인터페이스 목록(list of implemented interfaces) 변경.
  • 클래스의 정적 초기자(initializer)의 변경.

알려진 문제

  • minSdkVersion가 21 미만일 때 레거시 멀티덱스에서 메서드 개수가 64K에 가까워지면 제대로 빌드가 되지 않습니다.
  • 일부 단말에서는 제대로 동작하지 않습니다.
  • 간혈적으로 IDE 연결이 끊어져 전체 재빌드가 필요한 경우가 있습니다.
  • 써드 파티 그래들 플러그인. 특히 트랜스폼 API를 쓴 경우 테스트되지 않았습니다.
  • 데이터바인딩이 현재 지원되지 않습니다. 곧 고칠 예정입니다.

인스턴트 런에 대한 여러 문제를 발견하면 이슈 트래커로 제보해보세요. 여러 피드백이 인스턴트 런을 더 빨리 안정화시킬 것입니다.

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.


Realm Korea

Realm Korea Team

4 design patterns for a RESTless mobile integration »

close