애초에 플러터 SDK는 x86_64 위주로 제공이 되어져 왔기 때문에, 아쉽게도 엔비디아 젯슨이나 라즈베리 파이에 올린 ARM64 기반 리눅스 배포판에서는 플러터 기반 앱 개발이 불가능한 상황이었습니다.
작년부터 여러 개발자들이 ARM64에서 플러터 SDK를 사용할 수 있도록 많은 협력을 해왔지만, 최근까지만 해도 플러터 엔진의 빌딩을 수작업으로 해야하는 불편함이 있었습니다.
- https://wiki.loliot.net/docs/lang/flutter/engine/flutter-engine-for-linux-arm64
- https://github.com/sony/flutter-embedded-linux
그러다가 최근에 소니 측의 코드가 플러터 repo에 merge 된 덕에 그토록 염원하던 ARM64 리눅스 호스트에서 ARM64 리눅스 데스크탑 환경 또는 웹앱을 타겟으로 하는 개발이 가능하게 되었습니다.
말이 길어졌지만, 방법은 간단 했습니다. 라즈베리파이4 내에서 플러터 저장소(의 마스터 브랜치)를 클론하고, bin 아래의 flutter 스크립트를 한차례 실행 해 주면 알아서 도구들이 빌드되며, 그 이후에는 flutter doctor/run 등의 명령들을 여타 시스템에서와 같이 사용이 가능 했습니다.
VNC를 통해 실행하면 꽤나 버벅이는 모습이었지만 (아무래도 네이티브 UI가 아니다 보니...), 실제 모니터를 연결하여 사용할 때는 일절 버벅임 없이 앱이 잘 돌아갔습니다.
일단 되는 것을 확인 했으니, 이것저것 작업 해보며 확인해 봐야 하겠지만, 다음과 같은 제한 사항들이 알려져 있습니다.
- ARMHF (ARM32) 호스트에서의 개발이 불가 합니다. 많은 라즈베리 유저들이 32 비트 버전을 사용하는 것을 생각 했을 때, 조금 아쉬운 부분입니다.
- 안드로이드, iOS/맥, 윈도우즈 타겟들을 대상으로 빌드가 안 됩니다. (아마도 안드로이드는 구글에서 손을 써줘야 되겠죠...?)
- 크로스 빌드도 제한 사항이 조금 있다고 합니다 (x86_64 리눅스에서 빌드해서 ARM64 리눅스 타겟에서 돌리기). 차차 가능 해질거라 생각 합니다.
생각 해보면, 꽤나 니치 마켓이긴 합니다. 안 그래도 점유율 낮은 리눅스 데스크탑 환경인데, 그 중에서도 ARM64 라면 더더더 사용률은 떨어지겠지만, 그래도 이런 임베디드 환경에서 이런 feature rich한 도구를 쓸 수 있게 되었다는 것 자체가 꽤 흥미로운 부분이라 생각 합니다 ㅎㅎ
JS 만큼 범용적이진 않지만 immediate ui와 retained ui의 장점를 절묘하게 잘 응용한 도구인 것 같습니다 ㅎㅎ
그 때 되면 비단 플러터 뿐만 아니라 대부분 개발도구들이 macOS 처럼 arm 지원이 늘겠군요.
압도적이던 x86의 시대가 천천히 밀려가나 봅니다. 인텔조차도 RISCV에 관심을 둔다고 하니 말이죠.