Sviluppo di applicazioni native Android Xamarin

Sviluppo di applicazioni native Android Xamarin

Xamarin è diventato rapidamente un modo popolare per creare applicazioni mobili multipiattaforma che promuovono il vero riutilizzo del codice consentendo agli sviluppatori di creare interfacce utente native* (native qui significa naturali per la piattaforma), fornendo loro l'accesso allo spettro completo di funzionalità esposte dalla piattaforma/dispositivo sottostante e garantendo prestazioni native* consentendo alle applicazioni di sfruttare l'accelerazione hardware specifica della piattaforma. Inoltre, Xamarin si integra completamente in Visual Studio e consente lo sviluppo di applicazioni iOS, Android e Windows allo stesso modo.

Quindi cosa significa questo per i nostri veri sviluppatori nativi (C/C++)? Bene, se dai un'occhiata all'attuale approccio di Xamarin per la piattaforma Android, consente di sfruttare le librerie native Android (C/C++) durante la creazione di applicazioni Xamarin Android end-end.

Questo approccio attualmente comporta tuttavia l'utilizzo dei file di progetto Xamarin Android in Visual Studio e l'aggiunta di Item-Group che punta alla libreria condivisa dinamica predefinita menzionata qui nelle guide di Xamarin Android. In genere questa libreria condivisa dinamica nativa è sviluppata in un altro IDE (comunemente, Eclipse), che aggiunge ulteriore complessità dato che gli sviluppatori ora devono preoccuparsi di utilizzare due IDE e assorbire il divertimento che deriva dalla complessità aggiunta per modificare, costruire ed eseguire il debug della loro applicazione in modo speciale quando si lavora nel livello della libreria nativa (C/C++).

Con Visual Studio 2015 CTP 6, questo non è più il caso e gli sviluppatori ora possono creare anche questa libreria nativa (C/C++) in Visual Studio, noi (il multipiattaforma C++ mobile team) hanno collaborato con Xamarin per offrire un'esperienza fluida durante lo sviluppo di applicazioni Xamarin Android native. Questo blog mette in evidenza alcune delle abilitazioni rese disponibili con Visual Studio 2015 CTP 6 e, sebbene tutto il lavoro non sia stato ancora terminato, siamo lieti che tu lo provi e ci fornisca feedback.

Per iniziare

Come prerequisito per poter seguire questo blog, gli sviluppatori devono installare Visual Studio 2015 CTP6 con bit mobili multipiattaforma di Visual C++ e pacchetti facoltativi Xamarin. Una volta installati questi bit, hai tutto il necessario per iniziare a sviluppare applicazioni Xamarin Android Native interamente in Visual Studio. Iniziamo con la creazione di un progetto Xamarin Android. Ai fini di questo blog, scegliamo il più semplice dei modelli Android Xamarin "App vuota (Android)" dal menu File->Nuovo progetto e creiamo un nuovo progetto chiamato "XamarinNativeExample".

Accanto alla soluzione esistente aggiungiamo un progetto di libreria condivisa dinamica dal "Visual C++ - nodo multipiattaforma" e lo chiamiamo "NativeLibrary".

Al termine, la nostra soluzione dovrebbe avere due progetti (un progetto Xamarin Android e un progetto Libreria condivisa dinamica C++) in Esplora soluzioni.

Fare riferimento a librerie Android Native da un progetto Xamarin Android

Come menzionato nell'abstract di questo blog, tradizionalmente gli sviluppatori che sfruttano i binari Android nativi dovrebbero compilarli in altri IDE e quindi sfruttare questi binari nativi Android predefiniti all'interno di un Xamarin Android progetto che avrebbero dovuto giocare con il progetto Xamarin Android. Con il lavoro svolto, fare riferimento al file binario nativo è semplice come aggiungere un riferimento al progetto tra i progetti "XamarinNativeExample" e "NativeLibrary". Il processo è illustrato nelle immagini seguenti:

Una volta aggiunto il riferimento, nella sezione dei riferimenti per il progetto "XamarinNativeExample" dovrebbe essere trovata la voce "NativeLibrary". Si noterà che questo riferimento non è attualmente risolto, si tratta di un problema noto e anche se il riferimento non viene risolto in fase di progettazione, il file del pacchetto dell'applicazione (.apk) creato conterrà la libreria nativa.

Successivamente andiamo avanti e aggiungiamo del codice nella nostra libreria nativa e invochiamolo dal nostro progetto Xamarin Android. Nel file di origine "NativeLibrary.cpp" all'interno del progetto "NativeLibrary", aggiungi la seguente funzione. Questa funzione verrà richiamata ogni volta che si fa clic sul pulsante definito nel nostro progetto Xamarin Android.

int clickCount =1;
int getClickCount() {

return clickCount++;

}

Per chiamare questa funzione dal progetto Xamarin Android "XamarinNativeExample", aggiungi il codice seguente nel file "MainActivity.cs".

[DllImport(“libNativeLibrary.so“)]
public extern statico int getClickCount();

Questo attributo Dllimport caricherà la libreria nativa Android al runtime dell'applicazione. Per utilizzare questo attributo, sarà richiesto anche lo spazio dei nomi "using System.Runtime.InteropServices;" nel codice sorgente. Quindi modifichiamo la riga di origine esistente nella funzione "OnCreate". Il metodo OnCreate è il primo metodo da chiamare quando viene creata l'attività. Questa modifica nella funzione OnCreate ci consentirà di chiamare la funzione "getClickCount" dalla libreria nativa ogni volta che l'utente fa clic sul pulsante.

button.Click +=delegato { button.Text =string.Format(“{0} click!“, getClickCount()); };

A questo punto abbiamo quasi finito, ma prima di procedere e creare la nostra soluzione e testare la nostra nuova applicazione nativa per Android Xamarin, la piattaforma della soluzione attiva deve essere configurata in modo appropriato (ARM o x86 a seconda della scelta della destinazione di debug) come mostrato nella figura seguente.

Infine, assicuriamoci di aver chiamato correttamente la nostra "NativeLibrary" visualizzando la proprietà "Target Name" nelle pagine delle proprietà del progetto NativeLibrary.

A questo punto siamo tutti pronti per andare avanti e creare/distribuire la nostra applicazione su un dispositivo Android o un emulatore. Nel caso in cui tu abbia avuto problemi seguendo questo blog, la soluzione presentata in questo blog può essere trovata qui.

Debug di una libreria nativa Android in un'applicazione Xamarin per Android

Oltre a poter utilizzare e creare facilmente una libreria Android nativa in un'applicazione Android Xamarin. L'esperienza di Visual Studio consentirà inoltre agli sviluppatori di eseguire facilmente il debug del codice della libreria Android nativo utilizzato all'interno dell'applicazione Xamarin Android. Per dimostrarlo, continuando con il nostro esempio, apri le pagine delle proprietà per il progetto "XamarinNativeExample" e scegli l'opzione del debugger "Native" nel menu "Opzioni Android", come mostrato nella figura seguente.

Quindi apriamo il sorgente "NativeLibrary.cpp" e impostiamo un punto di interruzione nella nostra funzione "getClickCount()" e iniziamo il debug (F5). Una volta avviata l'applicazione, su ogni clic del pulsante dovrebbe essere raggiunto il punto di interruzione che abbiamo impostato.

Anche se questo è un esempio banale, tutte le altre funzionalità di debug come la valutazione dell'espressione, la finestra di controllo, la finestra automatica funzionano anche con questa esperienza.


Concludi

Questo blog dovrebbe fornire informazioni dettagliate sul lavoro svolto dal team di Visual Studio in collaborazione con Xamarin per consentire un'esperienza fluida durante la creazione di applicazioni Xamarin Android native. Ci piacerebbe che voi provaste questa esperienza e forniste il vostro feedback. Inoltre, se desideri che parliamo di un argomento specifico sui nostri blog, faccelo sapere. Ricordiamo che l'obiettivo di questa versione CTP è raccogliere feedback e imparare da te. Stiamo valutando il supporto futuro anche per altre piattaforme e il tuo feedback è fondamentale per dare forma alla direzione del nostro prodotto.

Condividere feedback è facile! Dai suggerimenti sulle funzionalità su UserVoice, registra i bug che trovi sul nostro sito Connect e inviaci un sorriso o un'espressione accigliata dall'interno dell'IDE. Puoi anche lasciare commenti qui sotto. Inoltre, se desideri avere una conversazione diretta con il nostro team di prodotto su questo argomento, contattaci tramite e-mail ([email protected]). Ci piacerebbe saperne di più e connetterci con te.

XamarinNativeExample.zip