Jak mogę kierować zarówno Windows 10 UWP, jak i Windows Phone 8.1 w tej samej aplikacji?

18

tło

Z punktu widzenia dewelopera głównym punktem sprzedaży systemu Windows 10 jest nowa platforma Universal * Windows Platform (UWP) .

* Gdzie „Universal” naprawdę oznacza „uniwersalny dla wszystkich urządzeń z systemem Windows 10”, a nie „uniwersalny dla urządzeń z nie tylko systemem Windows 10, ale także Windows 8.1 i być może Windows 7”. Więc jeśli budujesz aplikację UWP, to tak naprawdę budujesz „aplikację Windows 10”. Aplikacje UWP nie będą działać nawet na urządzeniach z Windows 8.1 i Windows Phone 8.1, co oznacza, że ​​nie są w ogóle kompatybilne wstecz.

Od trzeciego kwartału 2015 roku system Windows 10 jest dostępny na komputery PC i urządzenia IoT . Minie jeszcze kilka miesięcy, zanim system Windows 10 Mobile zostanie udostępniony publicznie, ale prawdopodobnie nie dłużej niż rok. Oznacza to, że Windows Phone 8.1 pozostanie jeszcze przez jakiś czas.

Pytanie

Zaraz zacznę tworzyć aplikację na Windows Phone i planuję ją opublikować w ciągu około miesiąca, ponieważ jest to dość prosta aplikacja. Ponieważ system Windows 10 Mobile nie będzie dostępny w najbliższym czasie, nie mówiąc już o urządzeniach na całym świecie, które wymagają uaktualnienia, muszę na razie kierować reklamy na system Windows Phone 8.1. Ponieważ jednak nie potrwa to długo przed uruchomieniem systemu Windows 10 Mobile, zastanawiam się, czy rozsądnie byłoby przygotować moje rozwiązanie do wdrożenia w systemie Windows 10 UWP oraz Windows Phone 8.1 (co pozwoli mi również kontynuuj obsługę 8.1 tak długo, jak będę potrzebować).

Widzę, że mogę zgrupować projekt UWP i projekt 8.1 w tym samym rozwiązaniu, a także udostępniać pliki źródłowe i zasoby za pośrednictwem projektu współdzielonego, tak jak w przypadku szablonu Windows 8.1 Universal w programie Visual Studio. Czy jestem na dobrej drodze? Jeśli tak, czy są jakieś dodatkowe wytyczne, których powinienem przestrzegać, aby upewnić się, że wszystko (w tym XAML, ponieważ idealnie chciałbym mieć taki sam lub co najmniej podobny interfejs użytkownika na obu platformach) faktycznie działa poprawnie na obu platformach, powodując jakiekolwiek niezgodności?

Alternatywnie, nie mogę się teraz martwić o Windows 10 Mobile i zacząć od projektu 8.1, a później migruję go do UWP , ale nadal będę musiał utrzymywać obie wersje mojej aplikacji, ponieważ nie planuję porzucenia 8.1 użytkownicy natychmiast. W tym przypadku nadal musiałbym się martwić o parzystość funkcji / XAML.

BoltClock
źródło
3
W ramach aktualizacji opracowałem rozwiązanie składające się z projektu współdzielonego, projektu UWP i projektu WP8.1. Szczegółowo
opiszę
Wszelkie aktualizacje, które chcesz udostępnić na temat swoich odkryć na ten temat? Naprawdę interesuje mnie wiedza, jak to podejście działa dla Ciebie.
Nelson Reis,
3
@Nelson Reis: Pracuję nad dostarczeniem mojej aplikacji na WP8.1 (co jest świetne!), Więc nie rozpocząłem jeszcze pracy nad aplikacją UWP. Ale niedługo to zrobię. Jak do tej pory wszystko działa całkiem dobrze po stronie WP8.1.
BoltClock,
Jestem tylko zainteresowany aktualizacją. Jak poszło opracowanie WP8.1 i UWP? (Mam mniej niż 50 punktów, więc nie mogę komentować) Powodem tego jest to, że zaczynam opracowywać aplikację międzyplatformową i obecnie decyduję, jakich technologii użyć. ( programmers.stackexchange.com/questions/314850/… )
makons
2
Cześć, przepraszam, że to trwa tak długo. Nadchodzą prace nad moją aplikacją UWP, więc w ciągu kilku najbliższych tygodni będę miał coś do podzielenia się.
BoltClock

Odpowiedzi:

2

Jak powiedziałeś w jednym z komentarzy, najlepszym sposobem na to jest skorzystanie ze wspólnego projektu i dodanie do niego kilku głów. W twoim przypadku Windows Phone 8.1 Head i uwp Head. To stanowisko zostało również wyrażone w MVA przez Jerry'ego Nixona i Andy'ego Wigleya (myślę, że to jest to, ale od tego czasu zostało zaktualizowane), w sekcji o przenoszeniu aplikacji 8.1 na uwp.

We współdzielonym projekcie może być konieczne użycie dyrektyw kompilacji warunkowej, aby rozróżnić kod działający w uwp i telefonie 8.1. (Podobnie jak w przypadku tworzenia uniwersalnych aplikacji Windows 8.1 / Phone 8.1)

Corcus
źródło
1

W zależności od tego, jak specyficzna dla systemu Windows musi być twoja aplikacja, możesz wybrać platformę taką jak Xamarin, która pozwoli ci pisać nie tylko dla Windows, ale także dla iOS i Androida w tej samej bazie kodu.

Kyle JV
źródło
1

Z mojego doświadczenia: warto umieścić pomocniki / logikę / etc w bibliotekach PCL. Następnie możesz utworzyć dwa projekty (odpowiednio dla UWP i WP8), które mogą wykorzystywać PCL z zerowymi zmianami. Możesz także udostępniać usługi, wyświetlać modele i modele (z bardzo kilkoma warunkowymi kompilacjami #if).

Jedyną rzeczą, której NIE warto udostępniać, jest personel związany z interfejsem użytkownika, ponieważ zbyt wiele rzeczy musi zostać przełączonych / uwarunkowanych (więc o wiele łatwiej jest przygotować osobne układy dla każdego z UWP i WP8, nawet jeśli są one praktycznie takie same).

PS Zrobiłem to dla UWP i WP8.1 Silverlight

Yury Schkatula
źródło