Plattformübergreifende mobile Hyperlapse-Entwicklung mit Visual C++ und Xamarin

Plattformübergreifende mobile Hyperlapse-Entwicklung mit Visual C++ und Xamarin

Microsoft Hyperlapse Mobile bietet die Möglichkeit, jedes lange Video – von einer holprigen Fahrradtour bis zu einem Familienspaziergang im Park – in eine kurze, destillierte Version zu verwandeln, die Sie problemlos mit Freunden und Familie teilen können. Diese Technologie, die für Windows Phone und in der Beta-Version für Android verfügbar ist, wird eine willkommene Erleichterung für alle sein, die jemals unbequem bei einem Echtzeitvideo gesessen haben, das diese Art von Ausflügen dokumentiert.

Für professionelle Shooter und ernsthafte Videoenthusiasten kann Microsoft Hyperlapse Pro mit einem Windows-Computer ein Hyperlapse aus Videos erstellen, die mit einer beliebigen Kamera oder einem beliebigen Gerät aufgenommen wurden – einschließlich Luftaufnahmen, die mit Drohnen aufgenommen wurden. Es eröffnet Möglichkeiten, die selbst ernsthaften Filmemachern zuvor nur schwer, wenn nicht gar unmöglich waren. In diesem Blog wird beschrieben, wie Hyperlapse mithilfe von plattformübergreifenden Visual C++- und Xamarin-Lösungen entwickelt wurde.

Wie die Hyperlapse-Codebase strukturiert ist

Die wichtigsten algorithmischen Teile von Hyperlapse sind aus Leistungsgründen in C++ geschrieben, und im Laufe der Zeit haben wir eine Bibliothek mit fortschrittlichen und hochoptimierten Computer-Vision-Algorithmen aufgebaut. Diese Bibliothek stellt eine beträchtliche Investition dar, und es wäre ein großes Unterfangen gewesen, sie neu zu schreiben. In ähnlicher Weise haben wir auf der verwalteten Seite ein Toolkit mit Steuerelementen und Funktionen entwickelt, die wir für mehrere unserer Apps gemeinsam nutzen und wiederverwenden wollten. Als wir uns daran machten, Hyperlapse zu bauen, wollten wir nicht nur unsere früheren Investitionen nutzen, sondern auch unsere zukünftigen Wartungsschulden reduzieren; Wir wollten eine einzelne Anwendung erstellen, aber mit vielen Köpfen. Gleichzeitig musste unsere App die Vorteile der zugrunde liegenden Hardware nutzen und gleichzeitig das unterschiedliche Erscheinungsbild jeder Plattform beibehalten, auf der sie ausgeführt wurde.

Xamarin und C++ ermöglichten es uns, diese Ziele zu erreichen:Wir konnten die wichtigsten algorithmischen Teile in plattformübergreifendem C++ erstellen und den Großteil der Geschäftslogik der Anwendung in einer portablen .NET-Klassenbibliothek behalten. Wir könnten dann dünne, plattformnative UIs (ebenfalls in C# geschrieben) über unsere Geschäftslogik bauen, damit sich die App auf jeder Plattform wie zu Hause fühlt, aber den Großteil der Implementierung unter der Haube teilt.

Ohne Bibliotheken besteht unser Code zu etwa 30 % aus C++, zu 30 % aus portablem .NET und zu 20 % aus Xamarin/Windows Phone-spezifischem UI-Code. Das Einfügen von Bibliothekscode verzerrt ihn stark zu C++, da unsere C++-Bibliotheken riesig sind (obwohl wir sie nicht vollständig in Hyperlapse verwenden). Die folgende Abbildung zeigt, wie die Hyperlapse-Lösung aufgebaut ist:

Die Visual Studio- und Xamarin-Entwicklungserfahrung

Der größte Vorteil der Verwendung der Visual Studio-Integration ergibt sich aus der Vertrautheit der Tools. Als Microsoft-Entwicklungsteam investieren wir stark in Visual Studio, C++ und C#. Die Möglichkeit, den Umgang mit Android Studio, Eclipse und Java zu vermeiden, hat unsere Produktivität enorm gesteigert und unsere Markteinführungszeit drastisch verkürzt. Xamarin ermöglichte zuvor das Einbringen und Verwenden vorgefertigter C++-Bibliotheken. Dies war nicht ideal, da es bedeutete, ein Drittanbieter-Tool wie Eclipse zu verwenden, um die C++-Bibliothek zu entwickeln und dann in Visual Studio zu importieren.

Die plattformübergreifende C++-Integration von Visual Studio mit Xamarin schloss diese Schleife und stellte sicher, dass wir C++-Code in Visual Studio bearbeiten, erstellen und debuggen konnten, wodurch wir keine Tools von Drittanbietern mehr benötigten. Darüber hinaus konnten wir unsere Android-App nahtlos in die vorhandene Build-Infrastruktur für Windows integrieren. und auf Knopfdruck können wir jetzt zwei versionierte, signierte und gepackte Anwendungen generieren, die bereit sind, an die verschiedenen App-Stores gesendet zu werden. Weitere Informationen zur Funktionsweise der Xamarin-C++-Integration finden Sie in diesem Blog von Xamarin, in dem es um das Erstellen und Debuggen von C++ in Xamarin-Anwendungen geht.

Die Entwicklungserfahrung, insbesondere wenn man bedenkt, dass wir an Vorabversionen von Software gearbeitet haben, war extrem reibungslos und im Allgemeinen hat einfach alles funktioniert. Es war großartig, dass die Funktionen aufleuchteten, sobald sie in den verschiedenen CTPs verfügbar wurden, obwohl es offensichtlich mühsam war, Visual Studio so oft neu zu installieren wie wir.

Dank Visual Studio und Xamarin bringen wir unsere Entwicklungsprozesse und unsere Produkte weiter auf neue Plattformen und Technologien und freuen uns darauf, diese Prozesse auf neue und spannende Produkte anzuwenden.