Flutter로 Dart DevTools 사용해보기

오늘은 Flutter 1.2 버전이 발표되면서 소개된 “New web-based tooling for developers building Flutter applications.”인 Dart DevTools를 알아보고 직접 해보려 합니다.

Dart DevTools

Dart와 Flutter에서 사용하는 성능 도구 제품입니다.

2019년 2월 기준으로 미리보기 버전입니다.

Flutter 앱의 UI 레이아웃 및 상태를 검사해주거나, Flutter 앱의 UI jank 성능 문제를 진단해줍니다.

디버깅 및 일반 로그 및 진단 정보도 지원합니다.

flutter 업그레이드

flutter upgrade

Upgrading Flutter from *…라고 출력되면서 git 정보를 업데이트하고, Upgrading engine…이라고 출력되면서 Dart SDK을 포함하여 flutter 엔진을 업데이트합니다.

마지막으로 Running flutter doctor…라면서 flutter doctor 명령어가 자동으로 수행되고 종료됩니다.

flutter --version

업그레이드를 끝내고 위 명령어로 flutter 버전을 확인해보면

Flutter 1.2.1 • channel stable • https://github.com/flutter/flutter.git

stable이라도 1.2 이상의 버전으로 올라간 것을 확인할 수 있습니다.

설치

안드로이드 스튜디오랑 vs code 그리고 터미널에서 사용할 수 있습니다

안드로이드 스튜디오

안드로이드 스튜디오나 인텔리j에서는 Flutter 플러그인을 설치하면 사용할 수 있습니다.

안드로이드 스튜디오에서 DevTools toolbar를 사용하거나, 맥 기준 (cmd-shift-a) 단축키로 Dart DevTools를 열 수 있습니다.

vs code

vscode에서도 flutter 확장을 설치해야 합니다.

디버그 매뉴에서 디버깅 시작 (F5)을 눌러 디버그를 활성화하고, 명령 팔레트에서 Dart:Open DevTools를 타이핑하여 사용할 수 있습니다.

우측 하단에서 활성화하라고 출력되면 버튼을 클릭하여 DevTools 패키지를 활성화해줍니다.

Dart DevTools가 활성화되는 동안 vs code의 상태 표시줄에 나오게 되며, 자유롭게 웹 브라우저로 확인할 수 있습니다.

터미널

만약 터미널에서 작업한다면,

flutter packages pub global activate devtools

위 명령어를 수행하여 devtools를 설치합니다.

flutter packages pub global run devtools

위 명령어를 수행하여 로컬 웹 서버를 시작합니다.

flutter run --observatory-port=9200
http://localhost:9100/?port=9200

애뮬레이터나 실 기기가 연결된 상태로 flutter 프로젝트 폴더에서 위 명령어를 수행하고, 위 주소로 접근하면 됩니다.

기능

  • Flutter Inspector

Flutter 위젯 트리를 시각화하고 탐색 할 수 있습니다.

  • Timeline View

프레임 렌더링에 대한 정보를 표시합니다.

  • Logging View

어플리케이션 레벨의 로그를 표시 합니다.

import 'dart:io';
import 'dart:developer' as developer;
void _incrementCounter() {
    setState(() {
        stderr.writeln(_counter.toString() + ' clicked');
        developer.log(_counter.toString() + ' clicked', name: 'my.app');
        _counter++;
    });
  }

io 패키지의 stderr로 로그를 남기거나, developer 패키지의 log로 로그를 라벨을 붙여 남길 수있습니다.

  • Debugger

디버깅을 지원하지만, 이미 에디터에서 디버그를 지원하는 경우에는 Debugger는 비활성화 상태입니다.

Written on February 27, 2019