Sviluppo per dispositivi mobili multipiattaforma Hyperlapse con Visual C++ e Xamarin

Sviluppo per dispositivi mobili multipiattaforma Hyperlapse con Visual C++ e Xamarin

Microsoft Hyperlapse Mobile offre la possibilità di trasformare qualsiasi video lungo, da un giro in bicicletta accidentato a una passeggiata di famiglia nel parco, in una versione breve e distillata che puoi facilmente condividere con amici e familiari. Quella tecnologia, disponibile per Windows Phone e in versione beta per Android, sarà un gradito sollievo per chiunque si sia mai seduto a disagio attraverso un video in tempo reale che documenta questo tipo di escursioni.

Per i fotografi professionisti e gli appassionati di video seri, Microsoft Hyperlapse Pro può creare un Hyperlapse utilizzando un computer Windows da un video girato su qualsiasi fotocamera o dispositivo, comprese le riprese aeree con i droni. Apre possibilità che prima erano difficili, se non impossibili, da raggiungere anche per i registi seri. Questo blog illustra come è stato sviluppato Hyperlapse usando soluzioni Visual C++ e Xamarin multipiattaforma.

Come è strutturata la base di codice Hyperlapse

Le parti algoritmiche di base di Hyperlapse sono scritte in C++ per motivi di prestazioni e nel tempo abbiamo creato una libreria di algoritmi di visione artificiale avanzati e altamente ottimizzati. Questa libreria rappresenta un investimento significativo e riscriverla sarebbe stata una grande impresa. Allo stesso modo, sul lato gestito, abbiamo sviluppato un toolkit di controlli e funzionalità che condividiamo in molte delle nostre app e che volevamo riutilizzare. Quando abbiamo deciso di costruire Hyperlapse non volevamo solo sfruttare i nostri investimenti precedenti, ma anche ridurre il nostro debito di manutenzione futuro; volevamo creare un'unica applicazione, ma con molte teste. Allo stesso tempo, la nostra app doveva sfruttare l'hardware sottostante mantenendo l'aspetto distintivo di ciascuna piattaforma su cui era in esecuzione.

Xamarin e C++ ci hanno consentito di raggiungere questi obiettivi:è stato possibile creare i componenti algoritmici principali in C++ multipiattaforma e mantenere la maggior parte della logica aziendale dell'applicazione in una libreria di classi portabile .NET. Potremmo quindi creare interfacce utente native della piattaforma sottili (scritte anche in C#) al di sopra della nostra logica di business che consentono all'app di sentirsi a proprio agio su ogni piattaforma, ma condividere la maggior parte dell'implementazione nascosta.

Escludendo le librerie, il nostro codice è circa il 30% C++, il 30% portatile .NET, il 20% codice dell'interfaccia utente specifico di Xamarin/Windows Phone. Includere il codice della libreria lo distorce pesantemente in C++, perché le nostre librerie C++ sono vaste (sebbene non le usiamo tutte in Hyperlapse). La figura seguente illustra come è strutturata la soluzione Hyperlapse:

L'esperienza di sviluppo di Visual Studio e Xamarin

Il più grande vantaggio dell'utilizzo dell'integrazione di Visual Studio deriva dalla familiarità degli strumenti. In qualità di team di sviluppo Microsoft, il nostro set di competenze è fortemente investito in Visual Studio, C++ e C#. La possibilità di evitare di avere a che fare con Android Studio, Eclipse e Java è stato un enorme impulso alla nostra produttività e ha migliorato drasticamente il nostro time-to-market.Xamarin in precedenza consentiva di inserire e consumare librerie C++ predefinite. Questo non era l'ideale in quanto significava utilizzare uno strumento di terze parti come Eclipse per sviluppare la libreria C++ e quindi importarla in Visual Studio.

L'integrazione C++ multipiattaforma di Visual Studio con Xamarin ha chiuso questo ciclo, garantendo la possibilità di modificare, compilare ed eseguire il debug del codice C++ in Visual Studio, di conseguenza ritirando la nostra necessità di strumenti di terze parti. Inoltre, questo ci ha anche permesso di integrare perfettamente la nostra app Android con l'infrastruttura di build esistente che abbiamo per Windows; e con la semplice pressione di un pulsante ora possiamo generare due applicazioni con versione, firmate e in pacchetto pronte per essere inviate ai vari app store. Per ulteriori informazioni sul funzionamento dell'integrazione Xamarin-C++, fare riferimento a questo blog di Xamarin che parla della creazione e del debug di C++ nelle applicazioni Xamarin.

L'esperienza di sviluppo, soprattutto considerando che stavamo lavorando su software pre-release, è stata estremamente fluida e in generale tutto ha funzionato. È stato fantastico avere funzionalità che si accendevano man mano che diventavano disponibili nei vari CTP, anche se ovviamente è stato un problema dover reinstallare Visual Studio con la stessa frequenza con cui abbiamo fatto noi.

Grazie a Visual Studio e Xamarin continuiamo a portare i nostri processi di sviluppo e i nostri prodotti verso nuove piattaforme e tecnologie e non vediamo l'ora di applicare questi processi a prodotti nuovi ed entusiasmanti.