Electron으로 라즈베리 파이 키오스크를 돌리다 메모리 누수와 팬 소음에 시달려 본 적이 있습니까? 혹은 Qt 라이선스 비용과 C++의 러닝 커브 때문에 망설였습니까? 우리는 Raspberry Pi 4에서 Flutter를 도입하여 메모리 사용량을 1/5로 줄이고 안정적인 60FPS를 확보했습니다. 이 글은 그 실전 기록입니다.
왜 임베디드에 Flutter인가? (vs Electron, Qt)
과거에는 크로스플랫폼의 꿈을 이루기 위해 무거운 웹 뷰(Web View) 기반 기술을 사용하거나, 개발 비용이 높은 네이티브 프레임워크를 선택해야 했습니다. Flutter 임베디드는 이 딜레마를 해결합니다.
| 프레임워크 | 메모리 점유 (Idle) | 부팅 속도 | 개발 편의성 |
|---|---|---|---|
| Flutter (Dart) | ~60MB | 빠름 (AOT 컴파일) | 최상 (Hot Reload) |
| Electron (JS) | ~300MB+ | 느림 | 상 |
| Qt (C++) | ~40MB | 매우 빠름 | 하 (높은 진입장벽) |
특히 Kiosk 시스템처럼 장시간 켜져 있어야 하는 환경에서 Flutter의 렌더링 엔진(Impeller/Skia)은 하드웨어 가속을 통해 탁월한 퍼포먼스를 보여줍니다. UI 스레드와 비즈니스 로직 스레드의 분리는 터치 반응성을 극대화합니다.
flutter-elinux나 커뮤니티 기반의 flutter-pi를 주로 사용합니다. 키오스크 모드에는 경량화된 flutter-pi가 유리합니다.
핵심 구현: flutter-pi를 이용한 경량화
X11이나 Wayland 같은 무거운 데스크톱 환경 없이, DRM(Direct Rendering Manager) 위에서 직접 그리는 방식을 채택해야 합니다. 이는 flutter-pi 프로젝트를 통해 가능합니다.
1. 환경 설정 및 빌드
라즈베리 파이 OS(Lite 버전 권장)에 필요한 의존성을 설치합니다.
# 라즈베리 파이 터미널
sudo apt install cmake libgl1-mesa-dev libgles2-mesa-dev \
libegl1-mesa-dev libdrm-dev libgbm-dev ttf-mscorefonts-installer \
fontconfig libsystemd-dev libinput-dev libudev-dev \
libxkbcommon-dev
2. 앱 빌드 (호스트 머신)
개발 머신(Mac/Windows)에서 라즈베리 파이용으로 빌드합니다. CPU 아키텍처(ARM64)를 맞춰주는 것이 핵심입니다.
# 호스트 머신(개발 PC)에서 실행
# 64비트 OS인 경우 linux-arm64, 32비트면 linux-arm
flutter build bundle --release
# 빌드된 자산을 라즈베리 파이로 전송 (scp 사용 예시)
scp -r ./build/flutter_assets pi@192.168.1.10:/home/pi/my_kiosk_app
ICU Data 관련 오류나 Snapshot hash mismatch 오류가 발생할 수 있습니다.
프로덕션 배포: Kiosk 모드 자동 실행
전원이 켜지자마자 앱이 실행되도록 systemd 서비스를 등록해야 합니다. 이는 상용 kiosk 제품의 기본 요건입니다.
# /etc/systemd/system/flutter-kiosk.service
[Unit]
Description=Flutter Kiosk App
After=network.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi
# flutter-pi 실행 명령어 (터치스크린 회전 등의 옵션 추가 가능)
ExecStart=/usr/bin/flutter-pi --release /home/pi/my_kiosk_app
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
서비스를 활성화합니다:
sudo systemctl enable flutter-kiosk
sudo systemctl start flutter-kiosk
결론
Flutter와 Raspberry Pi의 조합은 더 이상 실험적인 시도가 아닙니다. 이는 비용 효율적이고 강력한 임베디드 솔루션의 표준이 되고 있습니다. 기존의 무거운 웹 기술에서 벗어나, 하드웨어 성능을 100% 활용하는 네이티브 경험을 제공하십시오. 지금 바로 프로덕션 환경에 적용해 보시기 바랍니다.
Post a Comment