$30 off During Our Annual Pro Sale. View Details »

최신 Flutter Desktop 톺아보기 - DevFest 2022 Songdo

JaiChangPark
November 19, 2022

최신 Flutter Desktop 톺아보기 - DevFest 2022 Songdo

JaiChangPark

November 19, 2022
Tweet

More Decks by JaiChangPark

Other Decks in Programming

Transcript

  1. Songdo 박제창(Jai-Chang. Park) Dreamus Company 최신 Flutter Desktop 톺아보기 1

  2. 2 @jaichangpark JAICHANGPARK 박제창 @Dreamwalker (주)드림어스컴퍼니

  3. 3

  4. 4

  5. 5

  6. Agenda 1. Flutter Desktop 2. Windows 3. macOS 4. Linux

    6
  7. 톺아-보다 동사 1.샅샅이 톺아 나가면서 살피다. • 좀 더 차근차근하게

    상배의 아래위를 톺아보며 밤마다 공동묘지에 숨어들어야 될 셈속을 들춰 보기로 했다. 출처 <<이문구, 장한몽>> https://ko.dict.naver.com/#/entry/koko/7f3f3584722a41a4b7cd38a41c65dd7c 7
  8. 2022 Roadmap Desktop 8

  9. “In 2022 we will make good on this promise, and

    further raise our quality on web and desktop. We believe Flutter's growth will increasingly come from web and desktop: ecosystems that each have many millions of developers.” Flutter 2022 Strategy https://docs.google.com/document/d/e/2PACX-1vTI9X2XHN_IY8wDO4epQSD1CkRT8WDxf2CEExp5Ef4Id206UOMopkYqU73FvAnnYG6NAec NSDo9TaEO/pub 접속일자: 22-11-09 9
  10. In H2 2021, we put a big emphasis on team

    velocity, and slowed down feature development to build better infrastructure for Flutter. That work has not ended, even as we ramp back up and take advantage of this work. Particularly as we grow the team, and add web and desktop to our stable channel, along with new hardware like the Apple M1 chipset, it becomes more critical than ever that our testing infrastructure can adequately support our growing demands. Flutter 2022 Strategy https://docs.google.com/document/d/e/2PACX-1vTI9X2XHN_IY8wDO4epQSD1CkRT8WDxf2CEExp5Ef4Id206UOMopkYqU73FvAnnYG6NAec NSDo9TaEO/pub 접속일자: 22-11-09 10
  11. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Flutter in 2022:

    strategy and roadmap https://medium.com/flutter/flutter-in-2022-strategy-and-roadmap-8c5eaf7c4275 접속일자: 22-11-09 Some examples of this include the work that Sony is doing on embedded Linux; the investments that Toyota and other automotive companies are making on using Flutter in Automotive Grade Linux, and work from Samsung and others to port Flutter to Tizen. 11
  12. 1.0 18.12 Flutter Desktop Flow Desktop Embedding Flutter Live 최신

    Flutter Desktop 톺아보기 12 Desktop Preview -2020 Windows, macOS, Linux Beta 2021
  13. 2.10 3.0 22.02.04 22.05 Flutter Desktop Flow 3.3 22.08 ??

    23.01 Windows Stable Linux, macOS beta Linux, macOS Stable 최신 Flutter Desktop 톺아보기 13
  14. In 2022 we plan to bring our desktop support to

    the stable channel. We plan on focusing on testing and announcing one platform at a time, as they become ready, starting with Windows, then Linux, and macOS. A significant part of this effort is expanding our regression test suite to give us the confidence that enables us to expand on these efforts without breaking existing code. Desktop ✅ https://github.com/flutter/flutter/wiki/Roadmap 접속일자: 22-11-09 14
  15. 1. Flutter Desktop 15

  16. 데스크톱 앱 개발경험이 있으신가요? 혹시 16

  17. 플러터로 데스크톱 앱을 사용하고 계신분 있나요? 그러면 17

  18. 18 https://www.youtube.com/channel/UCHpVn3VKcCQI-C 4Y69gOCRw

  19. Desktop 관련 통계치를 한번 분석해볼까요? 이제 19

  20. https://gs.statcounter.com/os-market-share/desktop/worldwide Desktop Operating System Market Share Worldwide Oct 2021 -

    Oct 2022 1. Flutter Desktop 20 • Windows 점유율이 높네요 • macOS는 15-16% Windows macOS
  21. https://gs.statcounter.com/os-market-share/desktop/south-korea/#monthly-202110-202210 Desktop Operating System Market Share Republic Of Korea 󰏮

    Oct 2021 - Oct 2022 1. Flutter Desktop 21
  22. https://gs.statcounter.com/os-market-share/all/south-korea/#monthly-202110-202210 1. Flutter Desktop Operating System Market Share Worldwide Oct

    2021 - Oct 2022 Operating System Market Share Republic Of Korea Oct 2021 - Oct 2022 22
  23. • https://www.gartner.com/en/newsroom/press-releases/2022-06-30-gartner-forecasts-worldwide-pc-shipme nts-to-decline-9-5-percent-in-2022 • https://www.gartner.com/en/newsroom/press-releases/2020-05-26-gartner-forecasts-worldwide-device-shi pments-to-decli 최신 Flutter Desktop 톺아보기

    1. Flutter Desktop 23
  24. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop • 모바일환경 스마트폰

    사용자가 PC 사용자를 넘어설 정도로 모바일 사용자 수는 상당하다. • 예전에는 데스크톱앱을 많이 만들었지만 이제는 모바일/웹으로도 다 가능한 시대 (저전력, 컴퓨팅파워) ◦ 뭐하러 PC앱만드나요? 모바일앱이나 웹앱 만들지요..? • 하지만 산업현장에서나 임베디드 시스템 및 특수한 경우 에는 데스크톱앱이 필요합니다. 24
  25. 무엇을 데스크톱앱으로 만들것인가? 단순한 유틸리티 프로그램을 넘어서.. 데스크톱의 과제 25

  26. Flutter Desktop Supported platforms을 한번 볼게요 26

  27. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Supported platforms Support

    Tiers We define three tiers of support for the platforms on which Flutter runs: 1. Google-tested platforms are automatically tested at every commit by continuous integration testing. 2. Best-effort platforms, supported through community testing, are platforms we believe we support through coding practices and ad-hoc testing, but rely on the community for testing. 3. Unsupported platforms, which are platforms that might work, but that the development team doesn’t directly test or support. https://docs.flutter.dev/development/tools/sdk/release-notes/supported-platforms 접속일자: 22-11-07 27
  28. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Supported platforms https://docs.flutter.dev/development/tools/sdk/release-notes/supported-platforms

    접속일자: 22-11-07 Platform Version Channels Linux Debian, 64-bit All macOS El Capitan (10.11) & above All Windows Windows 7 & above, 64-bit All 28
  29. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Supported platforms https://docs.flutter.dev/development/tools/sdk/release-notes/supported-platforms

    접속일자: 22-11-07 Platform Version Linux Debian 10 Linux Ubuntu 18.04 LTS macOS Monterey (12) & above Windows Windows 10 Google-tested platforms 29
  30. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Supported platforms Google-tested

    platforms 30
  31. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Supported platforms https://docs.flutter.dev/development/tools/sdk/release-notes/supported-platforms

    접속일자: 22-11-07 Platform Version Linux Debian 11 Linux Debian 9 & below Linux Ubuntu 20.04 Linux Ubuntu 22.04 (Aspirational Google-tested platform) Best-effort platforms - Linux 31
  32. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Supported platforms https://docs.flutter.dev/development/tools/sdk/release-notes/supported-platforms

    접속일자: 22-11-07 Platform Version macOS El Capitan (10.11) - Big Sur (11)* Windows Windows 11 (Aspirational Google-tested platform) Windows Windows 8 Windows Windows 7 Best-effort platforms - macOS, Windows * Flutter 3.3 is the last stable release with macOS 10.11 and 10.12 best-effort support. 32
  33. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Unsupported platforms https://docs.flutter.dev/development/tools/sdk/release-notes/supported-platforms

    접속일자: 22-11-07 Platform Version Linux Any 32-bit platform macOS Yosemite (10.10) & below Windows Windows Vista & below Windows Any 32-bit platform 33
  34. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Project https://github.com/flutter/flutter/projects?type=classic&query=desktop 34

  35. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Project https://github.com/flutter/flutter/projects?type=classic&query=windows 35

  36. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Project https://github.com/flutter/flutter/projects?type=classic&query=linux 36

  37. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Project https://github.com/flutter/flutter/projects?type=classic&query=linux 37

  38. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Project https://github.com/flutter/flutter/projects?type=classic&query=desktop 38

  39. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Project https://github.com/flutter/flutter/projects?query=is%3Aopen 39

  40. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop Project https://github.com/orgs/flutter/projects/20 40

  41. 최신 Flutter Desktop 톺아보기 1. Flutter Desktop platform-specific https://docs.flutter.dev/resources/architectural-overview#platform-embedding 41

    • On iOS and macOS, Flutter is loaded into the embedder as a UIViewController or NSViewController, respectively. The platform embedder creates a FlutterEngine, which serves as a host to the Dart VM and your Flutter runtime, and a FlutterViewController, which attaches to the FlutterEngine to pass UIKit or Cocoa input events into Flutter and to display frames rendered by the FlutterEngine using Metal or OpenGL. • On Android, Flutter is, by default, loaded into the embedder as an Activity. The view is controlled by a FlutterView, which renders Flutter content either as a view or a texture, depending on the composition and z-ordering requirements of the Flutter content. • On Windows, Flutter is hosted in a traditional Win32 app, and content is rendered using ANGLE, a library that translates OpenGL API calls to the DirectX 11 equivalents.
  42. 2. Windows 42

  43. 최신 Flutter Desktop 톺아보기 43 https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed 2. Windows

  44. 최신 Flutter Desktop 톺아보기 44 2. Windows 2022-2Q 1 [devicelab][desktop]

    Add Linux and Windows machines#54295 2 Fix or suppress remaining Windows engine warnings#59199 3 ☔ Remove UWP support#102172 4 [windows] Exception: Bad UTF-8 encoding when running flutter doctor or building/running for Windows#102451
  45. 최신 Flutter Desktop 톺아보기 45 2. Windows 2022-3Q 1 ☂

    On Windows minimizing the app window will modify the contents of the frame#65061 2 [Windows] crash reports in KeyboardKeyEmbedderHandler::KeyboardHookImpl#108731 3 [Windows] Shut down VM when last engine is terminated#109191 4 [Windows] Support high-contrast a11y feature#109802 5 [Windows][a11y] Screen Reader not announcing the state of Switch#111525
  46. 최신 Flutter Desktop 톺아보기 46 2. Windows 2022-4Q 1 Support

    multiple windows for desktop shells#30701 2 Flutter crashes when loading very large files with Image.file widget on Windows#112881 3 Windows Accessibility issue and ReorderableListView crash#103808
  47. Visual Studio 2022 or Visual Studio Build Tools 2022 When

    installing Visual Studio or only the Build Tools, select the “Desktop development with C++” workload, including all of its default components, to install the necessary C++ toolchain and Windows SDK header files. 47 Additional Windows requirements
  48. 최신 Flutter Desktop 톺아보기 48 2. Windows Additional Windows requirements

    cmake
  49. 최신 Flutter Desktop 톺아보기 49 2. Windows Additional Windows requirements

    권장: 2022로 설치해주세요
  50. 최신 Flutter Desktop 톺아보기 50 https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed 2. Windows Flutter Architecture

    - Windows On Windows, Flutter uses exactly the same Dart code, but takes advantage of native Windows APIs.
  51. 최신 Flutter Desktop 톺아보기 51 https://developer.microsoft.com/en-us/fluentui#/ 2. Windows Windows -

    Fluent UI
  52. 최신 Flutter Desktop 톺아보기 52 https://pub.dev/packages/fluent_ui 2. Windows Fluent UI

    for Flutter
  53. 최신 Flutter Desktop 톺아보기 53 https://pub.dev/packages/fluentui_system_icons 2. Windows Fluent ui

    system icons for Flutter
  54. 최신 Flutter Desktop 톺아보기 54 https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed 2. Windows Flutter Windows

    Support Packages There are already hundreds of packages that have been adapted to support Flutter apps built for Windows. Do not hesitate to use packages
  55. 최신 Flutter Desktop 톺아보기 55 2. Windows share_plus Windows Support

    2022-10-15 https://pub.dev/packages/fluent_ui
  56. 최신 Flutter Desktop 톺아보기 56 2. Windows share_plus Windows Support

    2022-10-15 https://github.com/fluttercommunity/plus_plugins/pull/1158
  57. 최신 Flutter Desktop 톺아보기 57 2. Windows 배포하기 misx https://learn.microsoft.com/en-us/windows/msix/overview

    the new Windows application package format, provides a modern packaging format and installer. This format can either be used to ship applications to the Microsoft Store on Windows, or you can distribute app installers directly.
  58. 최신 Flutter Desktop 톺아보기 58 2. Windows Window size

  59. 최신 Flutter Desktop 톺아보기 59 2. Windows bitsdojo_window https://pub.dev/packages/bitsdojo_window

  60. 최신 Flutter Desktop 톺아보기 60 2. Windows Win32 https://pub.dev/packages/win32

  61. 최신 Flutter Desktop 톺아보기 61 2. Windows 배포하기 misx https://pub.dev/packages/msix

  62. 최신 Flutter Desktop 톺아보기 62 2. Windows 배포하기 misx https://pub.dev/packages/msix

  63. 최신 Flutter Desktop 톺아보기 63 2. Windows 배포하기 misx https://pub.dev/packages/msix

    Creating an MSIX installer
  64. 최신 Flutter Desktop 톺아보기 64 2. Windows 배포하기 misx https://pub.dev/packages/msix

    Publishing outside the store
  65. 최신 Flutter Desktop 톺아보기 65 2. Windows macOS에서 윈도우즈 사용하기

    1. Virtual Box, UTM 등 원하는 가상화 도구를 설치해주세요 2. Windows 이미지를 다운로드 받아 실행해주세요. 3. Flutter 를 설치합니다. 환경: macbook pro(m1 pro)
  66. 최신 Flutter Desktop 톺아보기 66 2. Windows macOS에서 윈도우즈 사용하기

    - VS설치하기 • 2022 설치가 안되어 2019로 설치했습니다. • 빌드툴은 동일하기에 문제는 없습니다.! 2022-11-11 기준
  67. 최신 Flutter Desktop 톺아보기 67 2. Windows macOS에서 윈도우즈 사용하기

    Android Studio Desktop 만 빌드해서 사용하실거라면 굳이 설치하지 않아도 됩니다. 코딩할 IDE가 필요하면 설치해도 무관합니다. VSC사용해도 괜찮습니다.
  68. 최신 Flutter Desktop 톺아보기 68 2. Windows macOS에서 윈도우즈 사용하기

    https://developer.android.com/studio
  69. 최신 Flutter Desktop 톺아보기 69 2. Windows macOS에서 윈도우즈 사용하기

    1. flutter doctor를 통해 설치상태를 확인해줍니다.
  70. 최신 Flutter Desktop 톺아보기 70 2. Windows macOS에서 윈도우즈 사용하기

  71. 최신 Flutter Desktop 톺아보기 71 https://cdn.pixabay.com/photo/2020/08/20/09/55/cat-5503088_1280.jpg

  72. 3. macOS 72

  73. 최신 Flutter Desktop 톺아보기 https://gs.statcounter.com/macos-version-market-share/desktop/worldwide/#monthly-202110-202210-bar Desktop macOS Version Market Share

    Worldwide Oct 2021 - Oct 2022 73 3. macOS
  74. For macOS desktop development, you need the following in addition

    to the Flutter SDK: • Xcode • CocoaPods if you use plugins 74 Additional macOS requirements
  75. 최신 Flutter Desktop 톺아보기 75 2022-2Q 1 ☂ Add support

    for ARM macOS as a target#60113 done 2 Support --local-engine when for single CPU architecture AOT builds on macOS #100804 done 3 [macOS] Switching textfields with IME enabled results in duplicate input#92060 done 4 … 3. macOS https://github.com/orgs/flutter/projects/20/views/1?filterQuery=macos
  76. 최신 Flutter Desktop 톺아보기 76 2022-3Q 1 ☂ [macOS] Support

    building engine on Apple Silicon without Rosetta#103386 open 2 [macOS] Crash on accessibility text zoom on hover#102416 done 3 [macOS][desktop] keyboard Input doesn't work anymore when entering text during hot restart#89748 done 4 … 3. macOS https://github.com/orgs/flutter/projects/20/views/1?filterQuery=macos
  77. 최신 Flutter Desktop 톺아보기 77 2022-4Q 1 Support flavors for

    macOS#64088 open 2 TextField keyboard input is duplicated with MacOS FlutterViewController#105774 done 3 FlutterViewController needs a way to correctly start running before being shown on macOS#74735 done 4 … 3. macOS https://github.com/orgs/flutter/projects/20/views/1?filterQuery=macos
  78. In the Q4 2022 stable release, we expect to drop

    support for macOS versions 10.11 and 10.12. This means that apps built against stable Flutter SDKs after that point will no longer work on these versions, and the minimum macOS version supported by Flutter will increase to 10.13 High Sierra. Sunsetting macOS 10.11 and 10.12 https://medium.com/flutter/whats-new-in-flutter-3-3-893c7b9af1ff 접속일자: 22-11-09 78
  79. 최신 Flutter Desktop 톺아보기 79 3. macOS https://docs.google.com/document/d/1wHqr2cob78VfUKhOFEKjaUM_mnV4gL-mg3gSQCFhF7Y/edit Raise the

    minimum version of macOS from 10.13 to 10.14 for Flutter Desktop applications WHAT PROBLEM IS THIS SOLVING? This change addresses two problems: • The team currently experiences a significant maintenance burden due to having to support older macOS versions that only support OpenGL. • Shipping OpenGL support in the macOS engine increases binary size for macOS Flutter applications. Details on impacted hardware is provided in the User Impact section below.
  80. 최신 Flutter Desktop 톺아보기 80 3. macOS https://docs.google.com/document/d/1wHqr2cob78VfUKhOFEKjaUM_mnV4gL-mg3gSQCFhF7Y/edit BACKGROUND •

    Apple's elimination of OpenGL support for 2012 Mac hardware and later. • Low end-user usage of macOS 10.13 • Lack of test coverage of the macOS OpenGL backend • Maintenance effort in maintaining two separate rendering backends on macOS
  81. 최신 Flutter Desktop 톺아보기 81 3. macOS https://docs.google.com/document/d/1wHqr2cob78VfUKhOFEKjaUM_mnV4gL-mg3gSQCFhF7Y/edit BACKGROUND https://github.com/flutter/flutter/issues/103929

  82. 최신 Flutter Desktop 톺아보기 82 3. macOS https://docs.google.com/document/d/1wHqr2cob78VfUKhOFEKjaUM_mnV4gL-mg3gSQCFhF7Y/edit Benefits •

    For features such as external texture support, PlatformViews and any other work affecting the embedder's rendering code, this work will only need to be implemented once. This also significantly reduces code complexity in the macOS rendering code. • Impeller is not fully supported on the macOS OpenGL backend. Effort to implement support could be better spent more productively elsewhere. • As all devicelab hardware supports Metal, the OpenGL backend currently receives no automated testing. Effort to support testing the OpenGL backend could be spent more productively elsewhere. • Flutter developers will only have to concern themselves with testing a single backend
  83. 최신 Flutter Desktop 톺아보기 83 3. macOS https://docs.google.com/document/d/1wHqr2cob78VfUKhOFEKjaUM_mnV4gL-mg3gSQCFhF7Y/edit User impact

    The full list of hardware models which will no longer be supported is: • 2009-2010 MacBook • 2010-2011 MacBook Pro • 2010-2011 MacBook Air • 2010-2011 Mac mini • 2009-2011 iMac • 2010 Mac Pro (if GPU has not been upgraded to metal-capable GPU)
  84. 최신 Flutter Desktop 톺아보기 84 3. macOS https://docs.google.com/document/d/1wHqr2cob78VfUKhOFEKjaUM_mnV4gL-mg3gSQCFhF7Y/edit Plan •

    November 2022: Announce that as of Flutter 3.7, Flutter Desktop apps deployed to macOS will require a minimum of macOS 10.14. • January 2023: Flutter 3.7 is released to stable, dropping support for macOS 10.13.
  85. 최신 Flutter Desktop 톺아보기 85 3. macOS https://pub.dev/packages/macos_ui

  86. 최신 Flutter Desktop 톺아보기 86 3. macOS https://medium.com/flutter/whats-new-in-flutter-3-8c74a5bc32d0 Cascading menus

    and support for the macOS system menu bar
  87. 최신 Flutter Desktop 톺아보기 87 3. macOS https://docs.flutter.dev/deployment/macos Build and

    release a macOS app
  88. 4. Linux 88

  89. 최신 Flutter Desktop 톺아보기 4. Linux 89

  90. 최신 Flutter Desktop 톺아보기 4. Linux 90 https://www.nvidia.com/en-us/about-nvidia/legal-info/logo-brand-usage/

  91. • Clang • CMake • GTK development headers • Ninja

    build • pkg-config • liblzma-dev This dependency may be required 91 Additional Linux requirements
  92. 최신 Flutter Desktop 톺아보기 4. Linux Flutter in 2022: strategy

    and roadmap https://medium.com/flutter/flutter-in-2022-strategy-and-roadmap-8c5eaf7c4275 접속일자: 22-11-09 Some examples of this include the work that Sony is doing on embedded Linux; the investments that Toyota and other automotive companies are making on using Flutter in Automotive Grade Linux, and work from Samsung and others to port Flutter to Tizen. 92
  93. 최신 Flutter Desktop 톺아보기 4. Linux 93

  94. 최신 Flutter Desktop 톺아보기 4. Linux 94

  95. 최신 Flutter Desktop 톺아보기 4. Linux 95 Linux 빌드에 필요한

    Tool을 다운로드 받습니다.
  96. 최신 Flutter Desktop 톺아보기 4. Linux 96

  97. 최신 Flutter Desktop 톺아보기 4. Linux 97

  98. 최신 Flutter Desktop 톺아보기 4. Linux 98

  99. 최신 Flutter Desktop 톺아보기 4. Linux 99

  100. 최신 Flutter Desktop 톺아보기 4. Linux 100

  101. 최신 Flutter Desktop 톺아보기 4. Linux https://pub.dev/packages/yaru 접속일자: 22-11-09 101

  102. 최신 Flutter Desktop 톺아보기 4. Linux https://pub.dev/packages/yaru 접속일자: 22-11-09 102

  103. 최신 Flutter Desktop 톺아보기 4. Linux https://docs.flutter.dev/development/platform-integration/linux/building https://docs.flutter.dev/deployment/linux 103 Build

    and release a Linux app to the Snap Store
  104. 최신 Flutter Desktop 톺아보기 4. Linux 104

  105. 최신 Flutter Desktop 톺아보기 105 Summary 1. 2022년 Flutter 3.0

    을 기점으로 모든 데스크톱 플랫폼 Stable이 되었습니다. a. Windows, macOS, Linux 2. Windows a. 요구사항 / 현재 프로젝트. b. 설정 방법과 실행방법 c. 배포방법 3. macOS a. 시스템 요구사항. b. Raise the minimum version of macOS from 10.13 to 10.14 4. Linux a. 설치 및 설정 방법
  106. Thank You 박제창(Jai-Chang Park) 106 @jaichangpark JAICHANGPARK