Porting da iPhone a netbook: Guida tecnica

Panoramica

Avendo dovuto competere con altre 200.000 app nell'App Store iPhone per attirare l'attenzione di 40 milioni di consumatori, gli sviluppatori di app sono probabilmente alla ricerca di nuovi modi per ampliare la loro copertura del mercato. Il centro Intel AppUp offre la possibilità di raggiungere la base installata di 40 milioni di utenti di netbook con una piccola sovrapposizione sul mercato dell'iPhone. Tramite il Programma per gli sviluppatori Intel AppUp®, è possibile creare applicazioni Windows o Mobiln e lanciarle nell'unico mercato per netbook disponibile. Integrare il Kit di sviluppo del software (SDK) Intel AppUp® è semplice, per cui il resto del processo di transizione dell'applicazione si basa su framework standard ampiamente disponibili per lo sviluppo Windows e Moblin.

Indice

Panoramica

Percorsi di porting

Esperienza utente

Strumenti disponibili

Confronto tra framework

Porting di applicazioni

Quali fattori rendono semplice o difficile il porting di applicazioni?

Cinque percorsi di porting comuni

Porting di giochi

Porting di applicazioni ricche di contenuto

Le app per iPhone a uso intensivo di servizi/UI derivano da codice modificato

Caso aziendale: weTalkSmack

Accesso al centro Intel AppUp



Percorsi di porting

A seconda della fase della progettazione in cui si inizia a valutare la distribuzione multipiattaforma, l'approccio al passaggio da iPhone a Windows può essere diverso. Se l'app per iPhone è già stata scritta, prevalentemente in Objective C, è probabile che si decida di riscriverla in C++ o C#, a seconda dei casi per il porting in Windows. Se si ha l'opportunità di considerare le efficienze multipiattaforma, si può decidere di creare librerie comuni in C++ che possano essere utilizzate dall'app per iPhone e da Windows. I contenuti comuni dovrebbero essere creati in HTML in modo da essere visualizzati analogamente in tutti gli ambienti.

Esperienza utente

Per il porting di un'app da iPhone a netbook, è necessario valutare la diversa esperienza utente offerta da ogni piattaforma. In modo analogo al porting per l'iPad, i netbook hanno schermi più grandi da gestire ed è necessario eseguire un ridimensionamento adeguato. Questi schermi più grandi rendono possibile un'interfaccia più complessa, per cui le attività seriali come un elenco seguito da una vista dettagli possono essere combinate in una singola vista. Se è già disponibile un'app per iPhone, dovrebbe essere possibile trasferirla direttamente in una piattaforma netbook Windows. È inoltre necessario valutare l'utilizzo di funzionalità touch nell'app per iPhone e adattarle per un'interfaccia mouse, in quanto la maggior parte dei netbook non è dotata di touch screen. La principale differenza risiede nella mancanza di comandi gestuali (ad esempio lo zoom con pizzico) sulla maggior parte dei netbook Windows e nella possibilità di aggiungere effetti di passaggio del mouse quando il puntatore viene spostato su un elemento senza farvi clic sopra. Ci sono altre differenze hardware, che esamineremo in maggior dettaglio e nell'articolo successivo, Oltre le basi, in cui saranno fornite ulteriori risorse.

Strumenti disponibili

Nella maggior parte dei casi, lo sviluppo Windows viene eseguito in Visual Studio. Provenendo da XCode, si scoprirà un ambiente di sviluppo simile e moderno. Comunque il livello di complessità dipende da quanto si desidera spendere. Le edizioni Express di Visual Studio consentono di iniziare gratuitamente, ma sono prive delle funzionalità di completamento automatico e di altre caratteristiche per la produttività disponibili nell'edizione Professional.

Sono disponibili altri strumenti per lo sviluppo Windows, tra cui SharpDeveloper e MonoDevelop, che tuttavia consentono di creare applicazioni .NET utilizzando C# o Visual Basic.NET, mentre non forniscono il supporto per C++, per cui non è possibile riutilizzare codice.

Anche se Visual Studio Professional rappresenta un investimento (XCode e relativi strumenti sono gratuiti), vale la pena affrontarlo. Come afferma Chris Skaggs, CEO di Soma Games, nell'intervista rilasciata sul sito Web del Programma per gli sviluppatori Intel AppUp "è necessario procurarsi strumenti di sviluppo software efficaci; le imitazioni gratuite disponibili per il download generano più problemi che risultati".

Visual Studio include il supporto per IntelliSense (completamento automatico), refactoring e framework di unit test. È tuttavia possibile raggiungere un altro livello aggiungendo Resharper di JetBrains, per ottenere un potente refactoring strettamente integrato, modelli e miglioramenti per la produttività.

Confronto tra framework

Ovviamente, passando da iPhone a Windows, è necessario cambiare linguaggio, per cui forniamo un riferimento di seguito. Tuttavia, è anche necessario cambiare il framework di base per tutti i servizi di sistema su cui si fa affidamento. Per iPhone si utilizza il framework Apple Cocoa Touch per l'accesso a controlli e grafica dell'interfaccia utente, file e storage, e servizi come GPS o riproduzione multimediale. Per il passaggio a Windows, sarà necessario utilizzare gli equivalenti per Windows.

Ad esempio, per riprodurre un semplice suono di sistema sull'iPhone, sarebbe necessario scrivere codice analogo al seguente:

Objective C dell'iPhone

#import "AudioToolbox/AudioServices"

@implementation MyViewController

- (void)playSound {
    SystemSoundID soundFileObject;
    AudioServicesCreateSystemSoundID(fileURL, &soundFileObject);
    AudioServicesPlaySystemSound(soundFileObject);
}

Per ottenere lo stesso risultato in Windows, sarebbe necessario codice analogo a questo:

Windows C++

#include <msystem.h>

void MyViewController::playSound() {
    PlaySound(fileUrl, NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
}

Nell'articolo successivo, Oltre le basi, approfondiremo diversi casi specifici della piattaforma, ad esempio multimedia, videocamera, posizione e storage dei dati, per illustrare esempi comparativi.

Porting di applicazioni

Quali fattori rendono semplice o difficile il porting di applicazioni?

Fortunatamente, l'integrazione con l'SDK Intel AppUp è semplice. Essenzialmente, viene fornita una protezione da copia simile a quella applicata da Apple alle app dopo che vengono inviate all'App Store. Quando l'applicazione viene eseguita in Windows, è necessario aggiungere un'unica libreria e appena cinque righe di codice, testarla e inviarla per la convalida. In questo modo si ottiene la protezione da copia dell'applicazione tramite il software Intel AppUp ed è possibile inviare l'applicazione allo store. L'SDK include altre funzionalità interessanti, ad esempio la possibilità di avviare e interrompere la registrazione per l'analisi e la segnalazione errori, un tipo di funzionalità che è in genere necessario gestire manualmente in altre piattaforme.

Cinque percorsi di porting comuni

Il trasferimento di un'applicazione in Windows può essere facile in alcuni casi e difficile in altri. Forniremo ulteriori dettagli di seguito, ma è necessario valutare alcuni percorsi in base alla tecnologia attuale.

L'app per iPhone: utilizza prevalentemente UI e servizi per iPhone

Per il porting in Windows: riscrivere l'applicazione in C# e .NET con Windows Presentation Foundation (WPF).

iPhone

Windows

UI

Interface Builder

XAML

Linguaggio

Objective C

C#/VB.NET/C++ gestito

Framework

CocoaTouch

.NET

L'app per iPhone: è caratterizzata da un nucleo in C++ con la UI in Objective C

Per il porting in Windows: copiare il codice sorgente C++, incapsularlo in C++ gestito e consumarlo da un'applicazione C+ in .NET con WPF.

iPhone

Windows

UI

Interface Builder

XAML

Linguaggio

Objective C/C++

C#/C++/C++ gestito

Framework

CocoaTouch

.NET

L'app per iPhone: è caratterizzata da un nucleo significativo in Objective C, distinto da UI e servizi in Objective C.

Per il porting in Windows: eseguire il porting del nucleo in C++ gestito o C# e consumarlo da un'applicazione in C# in .NET con WPF.

iPhone

Windows

UI

Interface Builder

XAML

Linguaggio

Objective C

C#/VB.NET/C++ gestito

Framework

CocoaTouch

.NET

L'app per iPhone: è un gioco in Objective C con UI personalizzata che utilizza CoreGraphics

Per il porting in Windows: eseguire il porting della grafica in C++ e DirectDraw e del resto del gioco in C++

iPhone

Windows

UI

CoreGraphics

DirectDraw

Linguaggio

Objective C

C++

Framework

CocoaTouch

MFC

L'app per iPhone: è un gioco in Objective C con UI personalizzata che utilizza OpenGL

Per il porting in Windows: conservare il codice OpenGL ed eseguire il porting del gioco in C++

iPhone

Windows

UI

OpenGL

OpenGL

Linguaggio

Objective C

C++

Framework

CocoaTouch

MFC

Anche se l'app viene trasferita in una nuova piattaforma, è necessario sfruttare l'opportunità di aggiornarla, ad esempio traendo vantaggio dal feedback ricevuto dai clienti, provando nuove funzionalità o anche considerando una nuova architettura.

G - Logo Into the Rain

I giochi come "G" prevedono una UI personalizzata

Porting di giochi

I giochi sono in genere uno dei tipi di applicazione più facile da trasferire tra diverse piattaforme perché l'interfaccia è solitamente personalizzata, per cui non è possibile modificarla per soddisfare le aspettative dei clienti. Detto questo, l'approccio da adottare può essere dettato da specifiche esigenze di rilascio, come descritto nell'articolo del Programma per gli sviluppatori Intel AppUp "Tecniche di porting in AppUp: analisi delle tecniche di porting di applicazioni mobili di Picard e Kirk". Se è possibile pianificare lo sviluppo multipiattaforma, come ha fatto Mike Kasprzak di Sykhronics, è preferibile scrivere gran parte della logica principale del gioco in C++. In questo modo sarà possibile utilizzare lo stesso codice in ambiente iPhone e Windows. Analogamente, l'utilizzo di OpenGL per la grafica implica la possibilità di copiare la grafica in quasi tutte le piattaforme.

D'altro canto, come scoperto da Chris Skaags, il passaggio a una piattaforma di sviluppo rapido può essere una scelta migliore se si desiderano tempi di introduzione sul mercato più rapidi. Se l'applicazione può essere convertita facilmente in funzioni e grafica di tipo Flash, è possibile crearla in Adobe Air. Questa soluzione risulta particolarmente efficace per i videogame occasionali, perché la tecnologia Flash radice esegue la conversione in un'applicazione basata su Web e in altri dispositivi, rendendoli immediatamente utilizzabili in altri mercati.

Logo iEat for Life

iEat for Life è un'applicazione ricca di contenuti

Porting di applicazioni ricche di contenuto

Se le applicazioni sono destinate prevalentemente alla gestione di contenuti, come le app iEat for Life di cui abbiamo eseguito il porting nel centro Intel AppUp, è preferibile ospitare il contenuto in HTML con fogli di stile CSS e utilizzare JavaScript per un'interazione. iEat for Life è una serie di applicazioni per suggerimenti dietetici specialistici destinati a individui con particolari condizioni di salute, ad esempio cancro mammario e della prostata, patologie cardiache e diabete. L'applicazione per netbook lanciata nel centro Intel AppUp ospita un'istanza incorporata in Internet Explorer e carica pagine HTML, stili e immagini dal file di risorse delle applicazioni. Creando contenuti complessi basati su HTML, siamo riusciti a semplificare la distribuzione multipiattaforma con la quantità minima possibile di codice specifico per Windows.

Logo Yelp

Yelp è un'applicazione a uso intensivo di servizi

Le app per iPhone a uso intensivo di servizi/UI derivano da codice modificato

Una categoria comune di applicazioni dipendono pesantemente dalla UI e dai servizi dell'iPhone, contengono poco codice personalizzato e possibilmente consumano un set predefinito di dati. Un esempio è costituito da un'interfaccia mobile a dati accessibili tramite Web, come Yelp. Un altro esempio riguarda le applicazioni che forniscono accesso rapido e locale a una raccolta predefinita e compressa di dati. Esamineremo un esempio in maggior dettaglio di seguito. In questo caso, è opportuno riscrivere daccapo il codice. Anche se sembrerebbe laborioso, in realtà lo è meno del previsto: gli aspetti legati alla struttura e all'organizzazione del codice sono già stati definiti. A questo punto è sufficiente trasferire questi concetti. Per iniziare e finire rapidamente, è consigliabile scrivere in C# utilizzando .NET e possibilmente Windows Presentation Foundation (WPF). Utilizzando Visual Studio Professional o una versione superiore è possibile progettare e scrivere rapidamente il codice dell'interfaccia. L'equilibrio del lavoro, sia che i dati siano una risorsa locale o una chiamata Web remota, è quindi immediato.

Caso aziendale: weTalkSmack

weTalkSmack è un'app gratuita per iPhone che rende disponibile una raccolta di frasi sarcastiche utilizzabili in ogni occasione. La prima app rilasciata dal team weTalkSmack nell'AppUp Store è la Golf Edition, con commenti e repliche da rivolgere agli amici sul green o alla 19a buca. Il principale obiettivo di weTalkSmack è quello di fornire una serie di app con frasi mirate. Si tratta di un esempio interessante di porting nel netbook perché è stato necessario riconsiderare diversi aspetti dell'app.

Visione

È altamente improbabile che qualcuno porti con sé il netbook sul campo di golf, per cui oltre a valutare il porting del codice abbiamo anche preso in considerazione e inserito nuovi contenuti. Per il centro Intel AppUp abbiamo deciso di realizzare weTalkSmack - Travel Edition. Molte persone portano i netbook con sé in viaggio e c'è sempre qualcuno (magari un compagno di viaggio) da prendere in giro. Il primo passaggio, quindi, è stato quello di cercare e raccogliere nuove frasi e di organizzarle in base a varie situazioni o opportunità: aereo, taxi, bus, treno.

Esperienza utente

weTalkSmack è una tipica app semplice per iPhone. Si basa su viste elenco per mostrare un insieme di categorie ("opportunità") con un'azione di "divulgazione" per rivelare dati dettagliati (elenchi di "smack talk").

App iPhone - Opportunità App iPhone - Insulti

Considerando lo schermo più grande dei netbook, abbiamo ovviamente deciso che gli elenchi di opportunità e di insulti potessero facilmente essere inseriti nella stessa schermata, semplificando la navigazione. Il passaggio successivo è stato quindi di adattare lo schermo per il netbook.

Modello di applicazione Windows

Le altre schermate sono contenuti statici (About, Help e schermata iniziale) oppure viste Web incorporate (Contact Us, More Smack e Submit Smack). Il porting delle viste Web in Windows può essere eseguito incorporando un controllo WebBrowser, che esegue Internet Explorer.

Progettazione di codice

L'app per iPhone trae vantaggio dalle caratteristiche della UI dell'apparecchio: viste in tabella, viste grafiche statiche e viste Web. L'app non include molta logica personalizzata ed è scritta in Objective C con chiamate al framework Cocoa Touch di iPhone. L'interfaccia utente è realizzata con i file di configurazione di Interface Builder. Nessuno di questi componenti può essere copiato direttamente in un'applicazione Windows, quindi dobbiamo riscrivere il codice. Per rendere questo processo semplice e rapido, scriveremo il codice in C# utilizzando Windows Presentation Foundation (WPF) e utilizzeremo la libreria .NET per il Programma per gli sviluppatori Intel AppUp per integrarlo nello store Intel. WPF è un framework Microsoft relativamente recente compatibile con Visual Studio 2008, e le applicazioni possono essere destinate a .NET 3.0 e versioni successive (per impostazione predefinita, la destinazione di Visual Studio 2008 è .NET 3.5). WPF consente di definire i layout delle viste in un formato XML chiamato XAML, che è concettualmente noto ai programmatori che hanno utilizzato ASP.NET.

A parte il codice, l'applicazione contiene una quantità significativa di dati (categorie e frasi) che possono essere utilizzati in più piattaforme. Quando il team originariamente ha creato weTalkSmack per iPhone, avrebbe potuto inserire stringhe nei file di risorse o anche creare una risorsa da utilizzare tra più piattaforme. Tuttavia, si trattava della prima applicazione sviluppata, quindi l'incapsulamento sarebbe stato speculativo e probabilmente una perdita di tempo.

Considerando la versione Windows, cambieremo la piattaforma e il contenuto. Anche se potevamo creare una risorsa personalizzata in modo che il contenuto potesse essere utilizzato tra più piattaforme (ad esempio possiamo creare weTalkSmack per iPhone - Travel Edition), non siamo ancora a quel punto, quindi abbiamo scelto di tenere i dati strettamente accoppiati. L'utilizzo di un'origine dati XML per i dati si è rivelato facile con WPF, oltre che appropriato. Quindi, anche se i dati sono ancora inclusi nell'applicazione, sarà facile copiarli in una versione per iPhone o prelevarli da un file esterno quando il progetto arriva a quel punto.

Creazione di un'applicazione Windows

Per iniziare, abbiamo aperto Visual Studio e creato un nuovo progetto di applicazione WPF denominato "weTalkSmack".

Finestra di dialogo Nuovo progetto

In Visual Studio abbiamo creato un progetto predefinito e i file che costituiscono una finestra di applicazione desktop di base. In WPF una finestra può contenere un Frame che consente di esplorare più pagine.

In questo modo la navigazione risulta semplificata e simile a quella dell'iPhone. A questo punto creiamo le altre viste in Pagine e utilizziamo il metodo Navigate del Frame per passare da una all'altra. Ci arriveremo di seguito quando aggiungeremo il menu.

Layout XAML

Viste di Smack Talk

La pagina principale dell'applicazione, denominata SmackPage, include un elenco per le opportunità e uno per gli insulti. Utilizzando il layout Griglia è stato possibile inserire un'etichetta sull'elenco a sinistra per il termine "Opportunità". L'elenco di insulti a destra si estende su entrambe le righe.

Windows XAML

<Border Padding="5" Background="#333333">
  <Label VerticalAlignment="Center" Foreground="White" FontWeight="Bold">Opportunities</Label>
</Border>
<ListBox Name="listBoxOpportunities" Grid.Column="0" Grid.Row="1"
  ItemsSource="{Binding Source={StaticResource SmackDataSource}, XPath=opportunity}"
  ItemTemplate="{StaticResource OpportunityTemplate}"
 SelectionChanged="listBoxOpportunities_SelectionChanged">
</ListBox>
<ListBox Grid.RowSpan="2" Name="listBoxInsults" Grid.Column="1"
  ItemsSource="{Binding XPath=insult}"
  ItemTemplate="{StaticResource InsultTemplate}"/>

Menu iPhone

Esaminiamo le differenze. Questo è l'insieme delle funzionalità principali dell'applicazione ed è molto diverso sulle varie piattaforme. Per l'iPhone, abbiamo due file XIB generati da Interface Builder che contengono il layout per la vista radice di opportunità e la vista secondaria di insulti. Ognuno contiene un oggetto UITableView simile a quello illustrato a destra con i controller corrispondenti derivati da UITableViewController.

Objective C dell'iPhone

@interface RootViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {
    NSArray *controllers;
    UIToolbar *toolbar;
    SystemSoundID soundID;
    NSArray *insults;
}
@property (nonatomic, retain) NSArray *controllers;
@property (nonatomic, retain) NSArray *insults;

@end

Layout di celle di tabella personalizzato per iPhone

Mentre il layout di entrambe le applicazioni delle opportunità è piuttosto semplice, l'elenco di insulti include stili personalizzati. Per l'app per iPhone, un altro file XIB definisce una vista personalizzata utilizzata per il rendering delle celle di insulti su tale schermo. Il codice nel metodo tableView numberOfRowsInSection del controller gestisce l'associazione dei dati ai campi della vista.

Objective C dell'iPhone

CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier: CustomCellIdentifier];
if (cell == nil)  {
    NSArray *nib = ];
}

Questa configurazione è appropriata da un punto di vista commerciale, per cui abbiamo fatto la stessa cosa per l'applicazione Windows. Abbiamo creato una nuova pagina nella soluzione denominata WebView.xaml e incorporato un controllo WebBrowser come unico controllo ospitato nella Pagina.

Windows XAML

<Page
    x:Class="weTalkSmack.WebView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="weTalkSmack - Travel Edition">
        <WebBrowser x:Name="WebBrowser" />
</Page>

Quindi, nel code-behind abbiamo caricato la pagina Web appropriata in base al parametro passato al costruttore. Non abbiamo ancora utilizzato questo costruttore, ma lo faremo quando creeremo il menu seguente.

Windows C#

public partial class WebView : Page
{
    public enum WebPage
    {
        ContactUs,
        MoreSmack,
        SubmitSmack
    }
    public WebView( WebPage page )
    {
        InitializeComponent();

        switch( page ) {
            case WebPage.ContactUs:
                WebBrowser.Navigate( new Uri("http://wetalksmack.com/golf/smack/") );
                break;
            case WebPage.MoreSmack:
                WebBrowser.Navigate(new Uri("http://wetalksmack.com/"));
                break;
            case WebPage.SubmitSmack:
                WebBrowser.Navigate(new Uri("http://wetalksmack.com/golf/smack/"));
                break;
            default:
                // TODO: Show an error message / dialog box
                break;
        }
    }
}

Viste statiche

Le due viste finali, About e Help, sono statiche nell'app per iPhone: visualizzano semplicemente una bitmap.

Objective C dell'iPhone

@interface ImageController : UIViewController
{
    ImageController *childController;
}
@end

- (void)viewDidLoad {
    UIView *contentView = ;
    contentView.backgroundColor = [UIColor grayColor];
    UIImage *background = [UIImage imageNamed: @"help.png"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage: background];
    self.view = imageView;
    [contentView release];
    [super viewDidLoad];
}

Adottando lo stesso approccio, abbiamo creato due pagine di base, ognuna delle quali ospita una singola immagine. L'origine dell'immagine può essere impostata nell'XAML, quindi non è necessario scrivere codice al momento.

Windows XAML

<Page
    x:Class="weTalkSmack.HelpPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="weTalkSmack - Travel Edition - Help">
    <Image Stretch="Uniform" Source="assets/help.png" />
</Page>

Navigazione

Come accennato in precedenza, l'applicazione per iPhone utilizza uno schermo di menu attivato dal pulsante Info sulla barra degli strumenti della schermata principale di opportunità per passare a queste viste aggiuntive. Nel nostro modello, abbiamo scelto di utilizzare un menu, un elemento con cui gli utenti di netbook Windows hanno maggiore familiarità. La navigazione per l'iPhone segue lo stesso motivo della vista di opportunità. Popola una sottoclasse UITableView e risponde alle azioni clic per caricare la vista richiesta.

Per l'applicazione Windows, possiamo facilmente aggiungere un menu nella finestra principale includendo la definizione nell'XAML.

Windows XAML

<Window
    x:Class="weTalkSmack.Main"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="weTalkSmack - Travel Edition" Height="454"
    Width="781">
    <StackPanel Orientation="Vertical">
        <Menu IsMainMenu="True">
            <MenuItem Header="_About" Click="About_Click"/>
            <MenuItem Header="_Help" Click="Help_Click"/>
            <MenuItem Header="_Contact Us" Click="Contact_Click"/>
            <MenuItem Header="_More Smack" Click="More_Click"/>
            <MenuItem Header="_Submit Smack" Click="Submit_Click"/>
        </Menu>
        <Frame x:Name="MainFrame" Source="SmackPage.xaml"/>
    </StackPanel>
</Window>

Quindi colleghiamo un gestore eventi per ogni evento Click denominato nel code-behind, in questo caso avviando la AboutPage o HelpPage statica o la WebView con l'URL di pagina appropriato.

Windows XAML

private void About_Click(object sender, RoutedEventArgs e)
{
    MainFrame.Navigate( new AboutPage() );
}

private void Help_Click(object sender, RoutedEventArgs e)
{
    MainFrame.Navigate(new HelpPage());
}

private void More_Click(object sender, RoutedEventArgs e)
{
MainFrame.Navigate(new WebView(WebView.WebPage.MoreSmack));

Menu iPhone

Fasi successive

Dal punto di vista del codice, abbiamo terminato. Abbiamo riprogettato e riscritto un'app per iPhone per poterla eseguire in Windows. Per preparare questa applicazione per l'AppUp Store, è necessario completare ancora alcuni passaggi. Innanzitutto è necessario eseguire test completi, correggere eventuali bug, aggiungere icone, grafica e contenuti secondo necessità. È quindi necessario integrare l'applicazione con l'SDK Intel AppUp. Poiché l'applicazione creata è .NET, sarà necessario effettuare il download, il collegamento e l'aggiunta di codice per integrare la libreria AdpService per .NET. Infine, è necessario verificare che l'applicazione sia pronta per l'invio al Programma per gli sviluppatori Intel AppUp. Per informazioni sul packaging e sui test dell'applicazione per la convalida e il rilascio, vedere la sezione finale di questo articolo, Accesso al centro Intel AppUp.

Accesso al centro Intel AppUp

Come accennato all'inizio, l'integrazione dell'SDK Intel AppUp è semplice. Dopo aver creato un'applicazione Windows, è necessario aggiungere una libreria e alcune righe di codice. La libreria dell'SDK Intel AppUp comunica con un client in esecuzione sul netbook (ovvero il servizio ATDS nell'ambiente di sviluppo e test) per l'autorizzazione e il reporting.

Sul sito Web del Programma per gli sviluppatori Intel AppUp sono disponibili molti altri articoli e post di blog con informazioni su questo processo. Iniziamo con i passaggi descritti in Come sviluppare un'applicazione. Se si crea un'applicazione .NET, sarà necessario utilizzare la libreria AdpService per .NET ed esaminare l'esempio di applicazione .NET.

È necessario testare l'applicazione per verificare che rispetti le linee guida per la convalida e superi i test case descritti nel processo di convalida.

Infine, è necessario creare il packaging dell'applicazione in un programma di installazione MSI invisibile all'utente (vedere anche Informazioni sul programma di installazione invisibile all'utente), preparandola per l'approvazione del team di convalida.

Per informazioni più dettagliate sulle ottimizzazioni basate su compilatore, vedere il nostro Avviso sull'ottimizzazione.