Wie kann ich Windows 10 UWP und Windows Phone 8.1 in derselben App als Ziel festlegen?


18

Hintergrund

Aus Entwicklersicht ist das Hauptverkaufsargument von Windows 10 die neue Universal * Windows Platform (UWP) .

* Wobei "Universal" wirklich "Universal für alle Geräte unter Windows 10" bedeutet und nicht "Universal für Geräte, auf denen nicht nur Windows 10, sondern auch Windows 8.1 und möglicherweise Windows 7 ausgeführt werden". Wenn Sie also eine UWP-App erstellen, erstellen Sie eigentlich nur eine "Windows 10-App". UWP Apps werden nicht auch unter Windows 8.1 und Windows Phone 8.1 - Geräte laufen, dh sie überhaupt nicht rückwärtskompatibel sind.

Ab dem dritten Quartal 2015 ist Windows 10 für PCs und IoT-Geräte verfügbar . Es wird noch einige Monate dauern, bis Windows 10 Mobile für die Öffentlichkeit freigegeben wird, aber wahrscheinlich nicht mehr als ein Jahr. Dies bedeutet, dass Windows Phone 8.1 noch eine Weile bestehen bleibt.

Frage

Ich beginne mit der Entwicklung einer Windows Phone-App und plane, sie im nächsten Monat zu veröffentlichen, da es sich um eine recht einfache App handelt. Da Windows 10 Mobile nicht in Kürze verfügbar sein wird, geschweige denn Geräte auf der ganzen Welt, die aktualisiert werden, muss ich zunächst auf Windows Phone 8.1 zugreifen. Da es sein wird , nicht jedoch, dass lange bevor Windows 10 Mobil rollt aus, ich frage mich , ob es wäre klug, meine Lösung für die Bereitstellung von Windows 10 UWP vorbereiten sowie Windows Phone 8.1 (was auch mir erlauben wird, weiterhin 8.1 unterstützen, solange ich es brauche).

Ich sehe, dass ich ein UWP-Projekt und ein 8.1-Projekt in derselben Projektmappe gruppieren und Quelldateien und Assets über ein freigegebenes Projekt freigeben kann, wie dies mit der Windows 8.1 Universal-Vorlage in Visual Studio möglich ist. Bin ich auf dem richtigen Weg? Wenn ja, gibt es zusätzliche Richtlinien, die ich befolgen sollte, um sicherzustellen, dass alles (einschließlich XAML, da ich im Idealfall die gleiche oder zumindest ähnliche Benutzeroberfläche auf beiden Plattformen haben möchte) tatsächlich auf beiden Plattformen korrekt funktioniert, wobei eventuelle Inkongruenzen berücksichtigt werden?

Alternativ könnte ich mir vorerst keine Sorgen um Windows 10 Mobile machen und mit einem 8.1-Projekt beginnen und es später auf UWP migrieren , aber ich müsste immer noch beide Versionen meiner App warten, da ich nicht vorhabe, 8.1 zu verwerfen Benutzer sofort. In diesem Fall muss ich mich noch um die Feature / XAML-Parität kümmern.


3
Als Update habe ich eine Lösung erstellt, die aus einem freigegebenen Projekt, einem UWP-Projekt und einem WP8.1-Projekt besteht. Ich werde es später in einer Antwort detaillieren, sobald ich sicher bin, dass ich weiß, was ich tue ...
BoltClock

Gibt es Updates, die Sie über Ihre Entdeckungen zu diesem Thema mitteilen möchten? Ich bin wirklich daran interessiert zu wissen, wie sich dieser Ansatz für Sie auswirkt.
Nelson Reis

3
@ Nelson Reis: Ich arbeite an der Auslieferung meiner App für WP8.1 (was großartig ist!), Daher habe ich noch nicht mit der Arbeit an der UWP-App begonnen. Aber ich werde es bald tun. Bisher läuft es auf der WP8.1-Seite ziemlich gut.
BoltClock

Ich interessiere mich nur für das Update. Wie verlief die Entwicklung von WP8.1 und UWP? (Ich habe weniger als 50 Punkte, kann mich also nicht dazu äußern.) Der Grund dafür ist, dass ich gerade mit der Entwicklung einer plattformübergreifenden App beginne und mich derzeit für die zu verwendenden Technologien entscheide. ( programmers.stackexchange.com/questions/314850/… )
makons

2
Hey, tut mir leid, das dauert so lange. Die Entwicklung meiner UWP-App ist angelaufen, sodass ich in den nächsten Wochen etwas mitteilen kann.
BoltClock

Antworten:


2

Wie Sie in einem Ihrer Kommentare sagen, können Sie dies am besten erreichen, indem Sie ein gemeinsames Projekt verwenden und mehrere Köpfe hinzufügen. In Ihrem Fall ein Windows Phone 8.1-Kopf und ein UWP-Kopf. Diese Position wurde auch in einer MVA von Jerry Nixon und Andy Wigley (ich denke, das ist es, aber es wurde seitdem aktualisiert) im Abschnitt über das Portieren von 8.1-Apps auf uwp zum Ausdruck gebracht.

In Ihrem freigegebenen Projekt müssen Sie möglicherweise Anweisungen zur bedingten Kompilierung verwenden, um zwischen Code zu unterscheiden, der in uwp und Telefon 8.1 ausgeführt wird. (Wie beim Erstellen von universellen Windows 8.1 / Phone 8.1-Apps)


1

Abhängig davon, wie Windows-spezifisch Ihre App sein muss, können Sie eine Plattform wie Xamarin verwenden, mit der Sie nicht nur für Windows, sondern auch für iOS und Android in derselben Codebasis schreiben können.


1

Aus meiner Erfahrung: Es lohnt sich, einige Helfer / Logik / etc in PCL-Bibliotheken zu platzieren. Anschließend können Sie zwei Projekte (für UWP bzw. WP8) erstellen, die PCL ohne Änderungen verwenden können. Sie können auch Dienste freigeben, Modelle und Modelle anzeigen (mit nur wenigen #if-Zeilen für bedingte Kompilierung).

Das einzige, was es NICHT wert ist, geteilt zu werden, sind Mitarbeiter, die mit der Benutzeroberfläche zu tun haben, da zu viele Dinge gewechselt / konditioniert werden müssen (daher ist es viel einfacher, separate Layouts für jedes UWP und WP8 zu erstellen, selbst wenn sie praktisch gleich sind).

PS Ich habe das für UWP und WP8.1 Silverlight gemacht

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.