CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·주식한당 ·아이포니앙 ·MaClien ·일본산당 ·방탄소년당 ·자전거당 ·개발한당 ·소시당 ·이륜차당 ·안드로메당 ·나스당 ·AI당 ·육아당 ·영화본당 ·골프당 ·가상화폐당 ·클다방 ·디아블로당 ·사과시계당 ·걸그룹당 ·리눅서당 ·소셜게임한당 ·젬워한당 ·노젓는당 ·패스오브엑자일당 ·IoT당 ·창업한당 ·노키앙 ·축구당 ·윈폰이당 ·캠핑간당 ·라즈베리파이당 ·패셔니앙 ·여행을떠난당 ·맛있겠당 ·물고기당 ·바다건너당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·콘솔한당 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·갖고다닌당 ·이브한당 ·도시어부당 ·FM한당 ·포뮬러당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·키보드당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·MTG한당 ·소리당 ·적는당 ·방송한당 ·PC튜닝한당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

팁과강좌

PC/모바일 Flutter로 크로스플랫폼 모바일앱 만들어보기 10

18
2019-10-31 15:29:55 211.♡.246.251
memi

모바일 개발 플랫폼인 플러터(flutter)를 선택하게된 계기와 설치 후기를 남겨봅니다.


네이티브 앱의 고뇌


네이티브 앱이란 iOS는 xcode로 objective-c or swift를 Android는 android studio로 java or kotlin으로 개발하는 것을 말합니다.

사실 제 취향은 공식 가이드라인에 따라서 맞춰가는 네이티브 앱을 더 좋아합니다.


개발자에게 중요한 것은 항상 시간입니다.


java에서 kotlin 익히는데도 엄청난 에너지를 소비했는데 iOS의 swift도 해야되다보니 극심한 피로도를 느꼈습니다.


물론 대단한 앱을 만든다면 그 에너지가가 가치가 있겠지만 별 기능 없는 간단한 앱을 만드는 상황일 때가 문제입니다.


크로스플랫폼 앱의 선정


그래도 네이티브앱을 해야된다고 생각한 것은 크로스플랫폼 앱에 대한 실망이 매우 컸기 때문입니다.


1~2년전 테스트 당시 다양한 크로스플랫폼을 테스트 했었는데 지금 잘나가는 react-native를 건너 뛴게 사실 매우 후회됩니다.

당시 제가 vue.js를 하고 있어서 react는 건너 뛰었습니다..


그당시 문제는 iOS의 경우 노치부분이 짤리거나 아웃풋이 swift가 아닌 objective-c 이거나 빌드 워닝도 몇백개가 떠있는 찜찜함이 있었습니다.


하지만 개발생태계는 항상 라이브하기 때문에 현시점에서 크로스플랫폼 앱을 다시 알아봤습니다.


잘못된 형식의 이미지 링크입니다.


널리 알려진 크로스플랫폼들을 검색어 기준으로 트렌드를 확인해보니 눈에 띄게 급상승 하는 플러터(flutter)를 확인 할 수 있습니다.


물론 검색어 기준이라 점유율과는 거리가 멉니다. 그래도 핫하다는 지표는 될 수가 있습니다.


예전 vue.js 처럼 초반에 깃헙 스타를 엄청 먹고 점유율은 사실 그리 높지 않았던 기억이 있어서 망설여지기는 했습니다.


플러터에 대한 고민


고민은 한가지 였습니다.


바로 dart라는 신종 언어로 작성해야 된다는 것입니다.


안타까운 마음이 드는 것은 제 개발 생태계에 유일한 타언어가 되는 것이기 때문입니다.


잘못된 형식의 이미지 링크입니다.


제가 만들고 있는 iot 서비스에 대한 간략한 구성도입니다.


서비스를 제대로 하기 위해서는 다양한 기술들이 들어갈 수 밖에 없습니다.


저는 엄청 프로그램 고수도 아니고 경험도 많지 않지만 이 모든 것을 다 할 수 있는 것은… 바로 javascript 언어 하나로 위의 구성 대부분을 제작 했기 때문입니다.


저는 원래 임베디드 개발 엔지니어입니다.

개발 변화를 보면


  • Firmware > RT-OS > Linux(node.js)
  • php > ruby > python > jade(node.js)
  • html > jquery > vue.js
  • java > swfit, kotlin > dart???
  • mssql > mysql(maria) > dynamo > mongo > firestore
  • c++builder, delphi > vs c#, c++ > electron.js


결국은 javascript로 다 몰아버리고 서비스의 융합을 위해 파이어베이스로 브릿지 역할을 하게끔 변화를 준것입니다.

사실 javascript(ecma-script, node, vue.js)도 그다지 많이 아는 편은 아니어서 팀원들에게 물어봐가면서 하는 편입니다.


그래서 react-native로 가는 게 맞을 것 같기도 했지만.. 구글이 만든 플러터를 믿어보기로 했습니다~


플러터 설치


공식홈에 설치 방법이 너무 자세하게 나와있어서 macOS 카탈리나 설치시에 문제 되었던 부분만 짚고 넘어갑니다.

윈도우 설치 방법 또한 잘 나와있으니 따라해보면 될 것 같습니다.
다만 윈도우의 경우 iOS 개발은 안될 것 같습니다.


공식문서: https://flutter-ko.dev/docs/get-started/install


설치는 다운로드 받고 압축 풀어서 압축 푼 경로의 패스를 지정해주면 완료가 됩니다.


homebrew나 npm등으로 설치가 안되는 것은 큰 실망을 안겨주었습니다.

저 같은 unix바보는 관리도 안되고 복잡한 패스 설정을 매우 혐오합니다.


설치 시에 권한문제 경고창이 떠오르는데, 그 때 아래 붉은 박스안에 항목이 생기면 허용해주면 됩니다.


잘못된 형식의 이미지 링크입니다.


플러터 의존요소 설치


xcode와 android studio, vs code를 설치하고 모든 업데이트를 다 설치해줍니다.


어짜피 편집은 vs code로 하지만 결국 iOS, android 빌드는 해당 툴에서 하기 때문입니다.(android studio에서도 편집이 가능합니다.)


아래 flutter doctor 명령어를 입력해서 모두 체크박스가 뜨면 성공입니다.


$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.9.1+hotfix.6, on Mac OS X 10.15.1 19B88,
    locale ko-KR)
 
[✓] Android toolchain - develop for Android devices (Android SDK version
    28.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 11.1)
[✓] Android Studio (version 3.5)
[✓] VS Code (version 1.39.2)
[!] Connected device
    ! No devices available


vs code의 경우 plugin의 plutter만 찾아서 설치해주면 필요한 요소들과 디버깅툴이 자동으로 설치됩니다.


체크가 안 뜨고 문제가 있는 경우, 공식홈에 가이드에 따라 문제 되는 항목을 설치해주면 됩니다.


vscode에서 첫번째 앱 만들기


공식홈에 자세히 나와 있지만 그림이 없어서 이해가 안가실 분들을 위해 설명드립니다.


  • vscode 설정: https://flutter-ko.dev/docs/get-started/editor?tab=vscode


앱 위치 지정


보기(view) -> 명령 팔레트(command palette)


잘못된 형식의 이미지 링크입니다.


Flutter: New Project를 선택후 앱 이름을 적고 원하는 위치를 선택하면 자동으로 의존 요소를 알아서 설치해줍니다.


시뮬레이터 혹은 실제 장치 선정


실제 물리 장치(iPhone, android)의 경우 공식홈의 가이드를 따라 xcode나 android studio를 열어서 수행해야 할 것들이 있습니다.


기기에 배포: https://flutter-ko.dev/docs/get-started/install/macos#ios-기기에-배포


장치는 vs code의 우측하단을 눌러서 지정할 수 있습니다.


잘못된 형식의 이미지 링크입니다.


처음 시뮬레이터를 로드할 때 보안경고창이 계속 뜨니 보안 및 개인 정보 보호에서 허용을 몇번 눌러줘야합니다.


디버그 지정하기


좌측에 벌레 모양을 누르고 톱니바퀴를 누르면 설정이 완료 됩니다.


잘못된 형식의 이미지 링크입니다.


실행하기


벌레모양 탭에서 좌측 상단에 디버그 옆 플레이 버튼을 누르면 시작됩니다.



소소한 내용들은 핫-리로딩되어 바로 반영됩니다.


플러터 연습하기


기본적인 구동 원리를 느꼈다면 차근차근 UI 요소를 핸들링 해보는 것이 좋습니다.


공식홈 따라서 첫번째 앱 완성하기


공식홈 링크: https://flutter-ko.dev/docs/get-started/codelab


매우 친절하게 원리와 함께 리스트형식의 데이터를 표시하려면 어떤 방식인저 설명해줍니다..

물론 자세히 설명해줘도 dart는 뭔소린지 잘은 모르겠지만.. 흐름은 파악됩니다.


예제들로 실행해보기


간단한 예제들: https://github.com/nisrulz/flutter-examples


간단한 예제들을 보면서 /lib/main.dart를 바꿔봅니다.


모듈 설치


공식 홈: https://pub.dev


기존 패키지 매니져들(npm, gem, pip 등)처럼 아직 양이 많지는 않지만.. 구글 자작(안정적) 모듈이 많아서 괜찮은 것 같습니다.


API 문서 보면서 차근차근 만들어가기


공식 문서: https://api.flutter.dev/index.html


문서를 보며 제일 상단에 위치한 AppBar 부터 조금씩 튜닝해봅니다.


파이어베이스 연동


공식 홈: https://firebaseopensource.com/projects/firebaseextended/flutterfire/


오프라인 모바일앱만 해서는 할 수 있는 것이 별로 없습니다.


서버가 있어야 푸쉬도 받을 수 있고, 인증도 받고 데이터도 읽고 쓸 수 있습니다.


그 모든 다리 역할을 해주는 파이어베이스를 이용하면 간단합니다.


vue & firebase 강좌: https://www.clien.net/service/board/lecture/13723578CLIEN


플러터 장점과 단점


장단을 운운하기에는 너무 초입이지만.. 굳이 느낀 점은..


장점

  • 개발환경: 핫리로딩과 vscode의 플러그인은 환상적
  • 모듈 설치: pubspec.yaml 파일에 원하는 플러그인을 써주고 저장만하면 자동 설치
  • 디자인: 구글의 머터리얼 디자인 최적화


단점

  • 설치: 인스톨러가 없어서 귀찮음
  • 언어: dart.. 완전 새로 공부해야함
  • 안정성?: 대규모 앱에서는 아직 네이티브 앱을 해야되지 않을까요?


결론


많은 것을 만들고 운영하고 있기 때문에.. 전부 돌아가는 수준 정도의 얕은 지식 밖에 없습니다. 다 잘하는 것은 말이 안되죠…


당연히 프로그래밍 실력은 매우 저질 수준입니다.


저는 개발자지만 영업이 더 중요하다고 생각합니다.


아무리 잘 만들어봐야 못 팔면 끝이기 때문에.. 엔드 유저에게 비춰질 화면을 포장하고 물리적인 가능성을 증명하는데 노력을 기울입니다.


그래서 우선 만들고 시작합니다.


만들었기 때문에 개선을 할 수 있는 여지가 있고 말을 할 거리가 생깁니다.


모바일앱을 외주를 준다고 해도 해볼만한 가치는 있다고 생각합니다.


개발에 대한 대략적인 느낌을 가지고 있어야 외주 스케줄 관리와 구현 방향을 바로 잡을 수 있기 때문입니다.


최근 개발 동향(https://www.clien.net/service/board/use/13269022)CLIEN 에서도 언급했었지만..


이 시대의 개발자라면 최근 개발 트렌드를 전부 따라가는 지는 못하더라도 흐름은 파악해야한다고 생각합니다.


무엇이든 어렵게 생각하면 시작이 잘 안됩니다..


최근에는 개발자들을 위한 가이드들이 훌륭하기 때문에 무엇이든 잡고 시작하시기 바랍니다.


영상


영상은 실제 동작하는 것을 검증하는 참고용이니 꼭 볼 필요는 없습니다.

영상은 그저 의사 전달이 빠르기 때문에 그때그때 생각을 적어두는 용도입니다.


출처 : https://fkkmemi.github.io/mobile/talk-flutter/
memi 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [10]
heapdump
IP 58.♡.91.7
10-31 2019-10-31 15:46:14
·
플러터도 네이티브 앱으로 봐야하지 않을까요?
Framework 을 보면 내부적으로 ios/android 모두 widget 만 같을 뿐이지 native 로 직접 driver를 건드리도록 되어 있습니다.
네이티브 앱이란 것의 정의가 해당 os를 위한 언어라고 하면 제가 생각한 개념과 달라서 그럴 수 있을 것 같습니다만,
플러터 페이지에서도 강점 중 하나로 설명하고 있는게 네이티브 기반의 동작을 내세우고 있어서요.

올 초에 공부할 때 찾아보고, 기억에 의존해서 댓글을 단 것이라서 틀릴 수도 있을 것 같습니다. ^^;
memi
IP 211.♡.246.251
10-31 2019-10-31 16:27:13
·
넵 직접 ui와 core 쪽에 붙긴 합니다...
그러나 네이티브ful 한 것이지 네이티브라고 보긴 어렵지 않을까요? 사실 잘 모르겠네요~ 정답 단어가 무엇인지는요~
내란수괴에게사형을
IP 122.♡.11.82
10-31 2019-10-31 15:56:58
·
좋은 글 감사합니다 ㅠㅠ
lunarc4t
IP 116.♡.50.42
10-31 2019-10-31 16:01:28
·
예전에 메신저 만들던 L사에서 풀루터 검토하다가 다시 각기 다른 네이티브 개발로 결정했다고 하던데..
규모가 큰회사는 그렇게 운영하는게 좋죠...
스타트업이나 실험적으로 시작해보는 단계에서는 플루터가 좋은 대안이 될거라고 생각되네요.
kwatch
IP 175.♡.1.116
10-31 2019-10-31 16:17:01
·
저도 관심이 있는데 .. 커브가 .. .. 저도 자바 스크립트 밖에 못해서 ㅜㅜ UI부터 ..
크... 기존 안드로이드 API 들을 붙일 수 있나요/
memi
IP 211.♡.246.251
10-31 2019-10-31 16:28:54
·
안됩니다...
기존 중요하게 쓰던 모듈들이 필요한 앱이라면 비추천입니다.
링크를 참고하세요~ https://engineering.linecorp.com/ko/blog/flutter-pros-and-cons/
joyfuI
IP 218.♡.9.240
10-31 2019-10-31 17:24:15
·
관심은 있는데 행동력이 없어서(...) 그냥저냥 있었는데 좋은 글올려주셔서 감사합니다.
일단 개발환경만이라도 구축해 봐야겠네요.
memi
IP 112.♡.87.155
10-31 2019-10-31 17:32:40
·
제가 이런 글을 종종 게시하는 이유는 님처럼 동기부여가 있으면 시작하실 분들을 위한겁니다~ 한번 도전해보세요~~
Lee Hyun
IP 14.♡.246.44
10-31 2019-10-31 18:38:50
·
이번에 크로스플랫폼 개발을 진행하면서 Flutter하고 RN 사이에서 많이 고민했지만 RN이 Flutter보단 국내 커뮤니티가 활성이 잘 돼있어서 편하게 작업했습니다,, ㅎㅎ 나중에 RN 써보시는것도 추천 드려요 !!
과랑
IP 27.♡.242.80
11-01 2019-11-01 10:16:58
·
전혀 다른 업무 영역이지만 이부분에 접근해 보려고 이것저것 시도중입니다. 요즘 flutter 을 시작하고 진행중인데 아직까지 국내에 크게 활성화 되기 전이라 커뮤니티보다는 flutter 공식 사이트를 통해서 정보를 얻게 되네요. 새롭게 진입하기에는 아직까지 진입장벽이 높아 보이지 않아 보이는데 L사의 사례를 보면 아직 큰 프로젝트에 접목시키기에는 무리가 있나봅니다.
삭제 되었습니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.