Flutter로 IOS, Android 앱 외주개발하기

Key Kim
9 min readJun 27, 2020

--

IOS, Android 앱 개발 외주를 Flutter로 진행하면서 느낀 부분들을 공유하려고 합니다. 특히 Mac이랑은 전혀 인연이 없는 윈도우 개발자가 Flutter로 IOS 개발 및 배포를 어떤 방식으로 했는지도 정리해봤습니다.

왜 Flutter를 선택했나요?

크로스플랫폼 앱 개발 도구로 React native, Xamarin, Flutter 등의 선택지가 있습니다.

React Native, Flutter 두 개의 프레임워크의 관심도는 서로 비슷합니다.

하지만 Flutter는 출시된 지 얼마 안 된 프레임워크이고, Github star나 구글 검색 순위를 보아 크게 성장하고 있는 기술이라는 점에서 호감을 느꼈습니다.

그리고 저는 Javascript 보다는 C#에 익숙한 개발자인데, Flutter의 Dart언어를 처음 보았을 때 C#과 크게 문법적으로 다른 부분이 없어서 자신감 있게 Flutter를 선택하게 되었습니다.

Flutter, 충분히 성숙한 프레임워크인가요?

개발 언어인 dart와 Flutter 프레임워크 자체는 충분히 성숙했다고 생각합니다. 커뮤니티 측면에서 Stackoverflow에 등록된 react native 질문 수는 약 8만 (reactjs를 포함하면 30만 이상) , Flutter의 질문 수는 약 5만 건 정도로 3만 건의 차이가 납니다.

Github star도 상당히 많네요.

Dart 언어, 배우기 어려운가요?

언어 자체가 C#, JAVA와 매우 유사해서 배우기 쉽습니다.

거기에 더해 Hot reload 지원, 퍼포먼스(애니메이션), 등 성능, 편의성 측면에서 좋은 부분들이 많이 있습니다.

Dart에 대한 장점은 아래 링크에 잘 정리되어 있습니다.

https://stopbyte.com/t/which-one-is-best-java-or-dart/463/2

위 표에서처럼 JAVA와 비교할 때 훨씬 간결하면서 직관적인 코드를 작성할 수 있습니다.

2018년(무려 1위) 대비 나름 선방했다. 그래도 Job market은 처참..;

결론은 C#, JAVA 경험이 있다면 배우는데 전혀 어려움이 없는 언어입니다.

Flutter로 개발하면서 좋았던 부분

Google이 공식 지원하는 프레임워크인 만큼 Google 에코시스템과 연동이 잘됩니다. 특히 저는 Notification 기능 때문에 Firebase Cloud message를 꼭 사용해야 했는데, 문서화 및 샘플코드가 굉장히 잘 되어있고, 연동 과정이 굉장히 매끄러워서 구글 측에서 상당히 신경을 많이 썼다는게 느껴졌습니다.

React native와 다르게 Javascript bridge가 없고, Skia rendering engine이 IOS, Android 위에서 UI를 그려주기 때문에 높은 성능을 기반으로 플랫폼 간 완전하게 동일한 UI 개발이 가능합니다. 또 Cupertino, material 두 UI 컴포넌트를 섞을 수도 있습니다.

애니메이션, 화면 라우팅 등에서 느껴지는 체감 성능도 아주 좋았습니다.

Flutter 게임 개발도 가능하다고 하니 일반 어플리케이션의 성능은 말할 것도 없습니다.

Flutter로 개발하면서 안 좋았던 부분

Flutter에는 개발 시간을 획기적으로 줄여줄 수 있는 다양한 플러그인들이 존재합니다. 또 Flutter는 구글에서 공식으로 미는 프레임워크이므로 구글에서 공식으로 Release하는 플러그인들이 다수 있습니다.

Google 공식 지원 플러그인인데 아직 버전이 1도 못넘는것들이 많음..

구글 공식 플러그인을 사용하면서 크게 문제가 생긴 부분은 없었지만, 버전이 아직 많이 낮아서 사용할 때 불안한 요소가 어느 정도 있다고 생각합니다. 써드파티 플러그인의 경우, 플러그인 마다 완성도가 워낙 천차만별이라 따로 언급은 안 하겠습니다.

만약 Flutter를 사용하실 계획이시라면 필요한 Plugin들의 버전 및 안정도를 미리 확인하시는 게 좋을 것 같습니다.

윈도우에서 IOS 빌드하기 (불가능합니다 ^^;)

저는 맥북이나 아이맥 같이 MAC OS를 구동시킬 수 있는 하드웨어가 없습니다. 외주를 시작한 상황에서 개발비를 받아놓고 “사실 안드로이드만 배포 가능합니다 ^^;” 라고 할 순 없기에 IOS 빌드를 위한 여러 가지 방법들을 찾아봤습니다.

IOS.. 하겠습니다. (끄덕). 입금이 되었기때문에. 💲

방법 1 — 해킨토시

가장 처음에 시도했던 방법입니다. 하드웨어에 운영체제 올리는것쯤이야 하고 근거없는 자신감으로 호기롭게 도전했지만 결과는..

해달라는데로 다 해줬는데 왜 안돼..

이틀정도를 개고생하고 결국엔 포기했습니다..

방법2 — 맥을 사자

가격이…

개인적으로 ios 개발때문에 맥 하드웨어를 사는 돈이 너무 아까웠습니다.

맥북 살 돈이면 국밥이..

방법3 — 클라우드 서비스 사용하기

사실 mac을 클라우드로 서비스하는 기업이 있는지도 몰랐습니다.

해당 회사로부터 광고를 받지 않았습니다.

이 기업 말고도 몇 군데 있는데, macincloud 가 가장 저렴해서 이 서비스를 선택했습니다.

싸다 싸! 맥이 한달에 단돈 2만원.

한 달에 20$ 정도 내고 사용할 수 있는 것과 시간 단위로 1$씩 내는 게 있는데

저는 한달에 20$내고 사용하는걸로 진행했습니다.

필수 소프트웨어(xcode 등)이 모두 설치되어 있어서

바로 작업에 들어갈 수 있습니다.

웹브라우저로 맥에 원격접속이 가능합니다.

앱을 실제로 돌려볼 아이폰은

위 사이트를 통해 구할 수 있습니다.

조금 비싸긴 하지만 아이폰을 사지 않아도 실제 IOS 기기에 테스트해볼 수 있습니다.

CI/CD로는

를 추천합니다. Free tier도 부담 없이 쓸 수 있습니다.

대망의 배포

플레이스토어는 사실 큰 걱정은 없습니다.

심사도 잘 통과되고, 스토어에서 개발자에게 요구하는 사항이 별로 없습니다.

하지만 앱스토어는 이야기가 좀 다릅니다.

앱 스토어와 싸우는 개발자

앱스토어 테스터를 위한 계정을 따로 만들어야 하고, 앱의 세부적인 쓰임들까지 세세하게 써서 제출해야 합니다.

또 하루 한 번 이상의 Feedback은 받을 수 없었습니다.

즉 reject에 대한 수정본을 Push하면 빠르면 다음날, 늦으면 3일 정도 후에 Feedback이 날라 옵니다..

이런 지루한 공방이 4번 정도 왔다 갔다 했을 때 앱 승인을 받을 수 있었습니다.

앱 스토어에 퀄리티 있는 앱들이 많은 게 이런 심사도 한몫하는 것 같습니다.

우여곡절 끝에 배포도 무사히 진행할 수 있었습니다.

결론

Flutter는 빠르고 퀄리티 높은 개발을 위한 훌륭한 도구입니다.

아직 3년 밖에 안된 기술이지만, 구글의 지원 아래서 무섭게 성장하고 있는 기술 중 하나입니다.

실제 상용 제품 개발도 가능할 정도로 안정적이고, 다양한 개발자들이 사용하고 있는 프레임워크입니다.

특히 멀티플랫폼 소프트웨어 프로토타입이나, 소규모 외주 개발할 때 빠른 개발을 할 수 있도록 도와주는 프레임워크라고 생각합니다.

빠른 개발, 강력한 퍼포먼스를 위한 도구를 찾는다면 Flutter를 한번 사용해 보시는 건 어떨까요?

--

--

Key Kim

잘 몰라서 하는 블로그입니다. 틀린게 있으면 언제든 연락주세요 :)