티스토리 뷰

반응형
이 포스트의 내용은 https://devblogs.microsoft.com/xamarin/introducing-xamarin-forms-4-0-the-era-of-shell/ 을 번역한 자료입니다. 한글로 표현하기 어색하거나 모호한 문장은 임의로 조정하거나 삭제하였으므로 필요한 경우 원문을 참고하시기 바랍니다. 또한 언제든지 원저자의 요청에 의해 게시물이 내려지거나 수정될 수 있음을 알려드립니다. 마지막으로 이 글은 개인적인 학습목적으로 번역한 자료이며, 따라서 오역이나 잘못된 해석이 포함되어 있을 수 있으며 이로인한 어떠한 일체의 보장을 하지 않습니다.

지난 해 Xamarin은 크로스 플렛폼 모바일 앱을 개발 할 때 복잡성을 줄임으로써 생산성을 향상시키는데 중점을 두고 작업을 진행하였습니다. 추상적인 복잡성에 대한 개념이 아니라 개발하시는 여러 분들이 느끼는 복잡성에 대해 집중하였다는데 주목해주세요. Xamarin팀은 무수한 시간을 여러분들의 피드백을 검토하는데 사용했으며 피드백으로부터 연구를 수행하였으며 진솔한 1:1 대화를 통해 어떻게 하면 최고의 지원을 드릴 수 있을지 배웠습니다.

Xamarin.Forms 3.0.0부터 3.6.0까지 우리는 반드시 해야 할 일이라고 말씀하신 55개의 핵심기능을 제공해왔습니다. 이러한 기능 중 많은 부분에 대해 커뮤니티에서 기여해주셨습니다. 우리는 Xamarin.Forms를 시작하는 작업은 더 쉽고 빨라야 한다는 점도 여러분으로 부터 배웠습니다. 또한 네비게이션 작업을 하실 때 지속적으로 어려움을 겪고 있다는 것도 알 수 있었습니다.

오늘 우리는 모바일 앱 개발을 효율적으로 만드는 단순화된 네비게이션 컨테이너인 Shell을 포함하는 Xamarin.Forms 4.0.0을 발표하였습니다. 앞서 2018년 12월 Microsoft Connect()에서 Tailwind Traders reference 프로젝트와 함께 Shell의 미리보기를 제공했었습니다. 여기서 우리는 여러분들이 무엇을 좋아하고 우려하는지 그리고 단순화된 개발을 위해 어떻게 조정해 나가야 하는지에 대해 귀 기울여 왔습니다.

추가적인 배경정보를 얻으시려면 MSDN의 "Xamarin.Forms Shell 소개"를 확인해주세요.

Shell, Android Fast Renderers, Image Source 통합, 접근성을 포함하는 이번 릴리즈의 핵심 기능들을 확인해보도록 합시다.

릴리즈 하이라이트

Xamarin 4.0.0은 메이저 릴리즈이기 때문에 여러분들은 상당히 큰 변화를 기대하실 것입니다. 큰 변화임에도 불구하고 개발 편의성을 향상시킬 수 있는 것을 제공해드리기 위해 노력한 릴리즈인 만큼 상당히 매끄러운 업그레이드가 되어야 할 것입니다. 이번 릴리즈부터 기본적으로 활성화된 Shell, Android Fast Renderer와 Image Source Type 통합, 접근성 향상을 위한 탭 순서 개선에 대한 주요 개선사항은 아래 영상에서 확인하실 수 있습니다.

 

Shell

표면적으로 Shell은 앱의 Flyout과 Tab메뉴를 구축할 수 있게 해주는 매우 간단한 구문을 제공합니다. 또한 기존 네비게이션 서비스 외에도 강력한 URI 기반 라우팅 네비게이션 서비스를 제공합니다. 그러나 Shell의 진정한 힘은 내부에 있습니다. 모든 렌더러의 구현은 Fast Renderer 패턴으로 구현되었으며, 데이터 템플릿과 렌더러에 의해 쉽게 확장될 수 있습니다. 이 새로운 아키텍쳐는 좀 더 인상적인 애니메이션과 화면전환, 상호작용을 가능케하는 Xamarin.Forms의 미래모습에 대한 토대를 제공할 것입니다.

Shell을 사용해 신속하게 Xamarin.Forms를 사용해 보시려면, 오늘 발표된 Visual Studio 2019에 포함된 새로운 Shell 템플릿을 사용하시기 바랍니다. Shell을 사용하는 것에 대한 상세한 정보를 원하시면 업데이트된 문서를 확인해주세요.

Android Fast Renderer

Button, Image, Label 등의 컨트롤을 렌더링하는데 필요한 View그룹의 수를 상당히 줄여주는 Fast Renderer 기술이 처음 소개된 Xamarin.Forms 2.4.0이 떠오를 수 있습니다. 이 Faster Renderer 패턴은 예상대로 잘 동작함이 증명되었기에, Fast Renderer는 Shell에서 구현하는 렌더러의 새로운 성능 기준이 되었습니다. 이제는 Fast Renderer의 "Preview" 문구를 제거하고 사용자들이 확장하여 사용할 수 있도록 해제하는 등 기본적으로 사용하실 수 있게 할 때가 되었습니다. 이러한 렌더러를 사용하는 커스텀 컨트롤이나 써드파티 컨트롤들이 개선되지는 않더라도 적어도 잘 동작하는지는 확인해주세요. 이전 스타일의 렌더러를 계속 사용하는 것이 필요한 경우를 위한 Flag를 소개해드립니다. 안드로이드 프로젝트의 MainActivity.cs에서 아래 Flag 코드를 추가하면 과거 렌더러가 활성화됩니다.

global::Xamarin.Forms.Forms.SetFlags("UseLegacyRenderers");

Image Source 통합

과거에는 여러 컨트롤들의 Icon과 Image Property가 동일한 Type으로 구현되지 않는 경우가 있었습니다. Xmarin.Forms  3.5.0에서 폰트 아이콘을 통해 앱을 손쉽게 수정할 수 있게 만드는 FontImageSource가 공개되었습니다. 그러나 지금까지는 Type 불일치 문제로 인해 Image와 Icon이 필요한 모든 곳에서 사용할 수 없었습니다. 이제부터는 모든 컨트롤의 Image, Icon Property가 ImageSource를 구현하고 있습니다. 따라서 FontImageSource, Embedded Resource, File, URI를 어디에서든 막힘없이 사용할 수 있게 되었습니다.

Button.Image //From FileImageSource
MenuItem.Icon //From FileImageSource
NavigationPage.TitleIcon //From FileImageSource
Page.BackgroundImage //From string
Page.Icon //From FileImageSource
Slider.ThumbImage //From FileImageSource

접근성

Xamarin.Forms는 네이티브 크로스 플렛폼 프레임워크입니다. 따라서 네이티브 플렛폼에 내제된 접근성 기능들을 손쉽게 접근하여 사용할 수 있음을 의미합니다. 우리는 여러분들이 Xamarin.Forms에서 포커스 순서를 직접적으로 통제할 수 있게 하여 좀더 접근성이 높은 앱을 개발할 수 있도록 개선 작업을 진행하였습니다. 앱에서 모달이 닫힐 때나 다른 페이지로 이동할 때 스크린 리더기가 어떤 Element에 포커스를 주어야 할지 알려주는 작업은 중요합니다. 이를 위해서 앞으로는 VisualElement의 TabIndex를 설정할 수 있게 되었으며, TabIndex를 설정하면 나머지는 네이티브 OS에서 이를 처리할 것입니다.

<Label AutomationProperties.IsInAccessibleTree="false" Text="스크린 리더를 켜시고 엘리먼트 사이를 스와이프해주세요. 엘리먼트들은 오름차순으로 읽혀져야 합니다. Skip를 읽지 *않아야*합니다. 이 텍스트를 읽지 *않아야* 합니다." />
<Label TabIndex="0" Text="가정 먼저 읽혀지고 포커스를 받을 것입니다."/>
<Button TabIndex="1" Text="다음 포커스"/>

공헌해주신 여러분께 감사드립니다!

릴리즈 마다 Xamarin.Forms를 더욱 더 훌륭하게 만들기 위해 기대 이상으로 협력해주신 커뮤니티 여러분과 공헌자 분들께 감사를 드리고 싶습니다. Xamarin.Forms 4.0.0은 매우 훌륭한 릴리즈이며 여러분들이 저희 만큼이나 자랑스러워하는 릴리즈가 되었으면 하는 바람입니다. 감사합니다!

  • Adrian Knight
  • Akihiko Odaki
  • Almir Vuk
  • Andrei Misiukevich
  • Andrei Nitescu
  • Artm Utin
  • Brian Macomber
  • Chris van de Steeg
  • Dan Siegel
  • Daniel Luberda
  • David Roqueni
  • flyofsky
  • genriquez
  • Gerald Versluis
  • Ione Souza Junior
  • Jeremy Marcus
  • Joe Manke
  • Joris Vergeer
  • Kevin Petit
  • Krzysztof Swierczek
  • Matthew Richardson
  • Matthew Robbins
  • Matthijs ter Woord
  • Morten Nielsen
  • mtz
  • Patrick Allwood
  • Paul Datsiuk
  • Piotr Konowalski
  • Sanya Andreichuk
  • Yaser Moradi
  • Yourina
  • Yun Chen
  • Zhu Xinghan

Xamarin.Forms 4.0.0으로 업데이트 하세요

이것은 단지 빙산의 일각일 뿐입니다. Xamarin.Forms 4.0.0은 수많은 개선사항을 포함하고 있습니다; 여기에 개요를 정리하기엔 너무 많습니다. 자세한 정보를 원하시면 릴리즈 노트Shell의 업데이트된 문서를 확인해주세요.

프로젝트를 Xamarin.Forms 4.0.0으로 업데이트 하시려면 Visual Studio Nuget 패키지 매니저를 여시고 Pre-release 체크박스를 체크하신 후 Xamarin.Forms 4.0.0과 Material Components with Visual 또는 Maps 등의 관련 패키지를 설치해주세요.

Pre-release Shell 코드를 4.0.0으로 마이그레이션을 진행할 때는, 아래와 같은 몇가지 간단한 수정 사항이 있습니다.

  • Route, RouteHost, RouteScheme는 필요하지 않습니다. 지워주세요.
  • Shell로 시작되는 Style은 중복을 제거하기 위해 이름이 수정되었습니다. 예를들어 "Shell.ShellBackgroundColor는 "Shell.BackgroundColor"로 변경되었습니다.

여러분의 의견은 언제나 환영합니다! 만약 어떤 문제에 봉착하거나 제안이 있으시면 GitHub에서 이슈를 전달해주세요.

참고하실수 있는 앱의 GitHub 주소는 다음과 같습니다.

Live Release Party

2019년 5월 22일 Xamarin.Forms 팀과 특별한 게스트과 함께하는 유튜브 라이브 스트림에 참여하세요. Xamarin.Forms 4.0의 기능, 관련된 이야기들, 데모 시연, 오픈소스 앱을 Xamarin.Forms 4.0 Shell로 업그레이드 하는 것 등을 다룹니다.

댓글