Condividi tramite


Il presente articolo è stato tradotto automaticamente.

Windows Phone

Applicazioni per Windows Phone nel Marketplace in poche mosse

Cheryl Simmons

Il 7.1 Windows Phone SDK include alcuni grandi strumenti per valutare l'aderenza alle linee guida di certificazione e miglioramento delle prestazioni delle applicazioni quel target Windows Phone 7.5, prima di presentazione al mercato.In questo articolo, mi camminare attraverso l'utilizzo dell'utilità Marketplace Kit per il Test e analisi delle prestazioni su un'applicazione di esempio e mostrano come utilizzare questi strumenti per valutare il mercato per l'internazionalizzazione dell'applicazione.Vi mostrerò come utilizzare dati dagli strumenti per apportare miglioramenti che aiuteranno a farlo accettato nel mercato al primo tentativo.Per ulteriori informazioni sui requisiti di certificazione di mercato, vedere l'articolo di MSDN Library, "Applicazione certificazione requisiti per Windows Phone" (wpdev.ms/certreq).

Tutti gli strumenti utilizzati in questo articolo sono inclusi con il Windows Phone SDK 7.1, che si può ottenere a wpdev.ms/wpsdk71rtw.

Applicazione di esempio e gli strumenti di Test

Per esercitarsi con lo strumento Marketplace Kit per il Test e analisi delle prestazioni, ho creato un'applicazione di esempio chiamata Examine la stame, un'applicazione di identificazione del fiore semplice.Ho creato con mia madre in mente; Lei può essere utilizzato per migliorare le sue abilità di identificazione del fiore.L'applicazione visualizza diverse piccole immagini di fiori sullo schermo di avvio.Un utente rubinetti un fiore e l'applicazione consente di passare a un'altra pagina, in cui viene visualizzato un quadro più ampio del fiore selezionato.Un altro rubinetto e il nome del fiore viene visualizzato in un oggetto MessageBox.Figura 1 mostra le immagini visualizzate come navigare attraverso l'applicazione.(Come nota a margine, ho usato il nuovo strumento di screenshot nell'emulatore Windows Phone per questi screenshot.Per ulteriori informazioni, vedere l'articolo di MSDN Library, "come: Creare screenshot per Windows Phone Marketplace"(wpdev.ms/rYoZKP).

Images Displayed in the Examine the Stamen ProgramFigura 1 immagini visualizzate nell'esaminare il programma stame

Anche se questa applicazione non è completamente vero e proprio mondo, rappresenta un modello di navigazione ragionevole per un'applicazione phone.Mi valutare questa applicazione utilizzando il Kit Marketplace di Test in Visual Studio e quindi esaminare ulteriormente con lo strumento di analisi delle prestazioni di Windows Phone.Una volta identificare eventuali problemi, utilizzerà risorse di documentazione per capire come risolvere i problemi, e poi ti nuovo controllo con gli strumenti.

Cominciamo.

Utilizzando il Kit di Test Marketplace

Ho creato un attraente ragionevolmente UI per esaminare gli stami e un modello di navigazione ragionevole.Intenzione di aggiungere più fiori in futuro, ma adesso voglio ottenere la mia applicazione nel mercato­posto.Il passo successivo per me è utilizzare il Marketplace Test Kit per valutare la prontezza di mercato della mia applicazione con una suite di test automatizzati, monitorati e manuali.

Per eseguire il test, ho aperto il mio progetto di applicazione in Visual Studio e selezionare "Marketplace Test Kit" dal menu progetto.

All'interno di Visual Studio, visualizzazione di suite di test Kit di Test di mercato si apre una nuova scheda.Figura 2 mostra la prima pagina del kit di test.

The First Page of the Marketplace Test Kit in Visual StudioNella figura 2 la prima pagina del Marketplace Kit di Test in Visual Studio

Le suite di test disponibile sono indicate nelle schede sulla sinistra.Scheda dettagli applicazione consente di specificare le immagini di applicazione per il test automatizzati.Test automatizzati valutare la dimensione di applicazione XAP, iconografia e screenshots per la conformità ai requisiti di certificazione e determinare le funzionalità utilizzate dall'applicazione.Test manuali forniscono passaggi che scorrere di esercitare l'applicazione e assicurarsi che è conforme alle linee guida certificato supplementare.

In questo articolo, mi concentrerò sulle prove monitorate.Per ulteriori informazioni su tutti i quattro gruppi di test, vedere la pagina "Windows Phone Marketplace Test Kit" di MSDN Library (wpdev.ms/toHcRb).

La suite di test monitorato valuta le domande di adesione alle linee guida certificazione importanti come ad esempio:

  • Tempo di avvio
  • Utilizzo di memoria di applicazione di picco
  • Gestione del pulsante indietro
  • Chiusura improvvisa dell'applicazione a causa di eccezioni non gestite

Esecuzione dei test monitorati

Per eseguire il test monitorato, è necessario avviare una build di rilascio dell'applicazione, distribuirlo a un dispositivo (i test non funzioneranno sull'emulatore) e passare attraverso di essa.Le opzioni per configurare questo sono sulla barra degli strumenti Standard di Visual Studio.Sarebbe l'obiettivo quando eseguire i test monitorati è per navigare attraverso l'applicazione di un utente, esercitando tutti i percorsi di navigazione possibili.Mentre fate questo, kit di test monitora l'applicazione­cazione e raccoglie dati su di esso.

Quando testare l'applicazione con i test monitorati, prova anche come esegue quando si termina e riattivarlo entro un breve lasso di tempo.Questo processo di cessazione e riattivazione è chiamato "definitiva". In Windows Phone 7.5, l'applicazione andrà dormiente automaticamente prima che venga rimosso definitivamente.

Per forzare l'applicazione in modo lapide immediatamente per il debug e scopi di test, selezionare l'opzione "Lapide sulla disattivazione durante il debug" la scheda Debug di proprietà del progetto.Scegliendo Proprietà dal menu progetto per aprire le proprietà del progetto.Figura 3 mostra questa opzione selezionata.Per ulteriori informazioni sulla rimozione, vedere la pagina "Esecuzione modello panoramica per Windows Phone" di MSDN Library (wpdev.ms/ExMod).

Selecting the Option to Test Tombstoning in Project PropertiesFigura 3 selezionando l'opzione per la rimozione definitiva prova nelle proprietà del progetto

Dopo aver configurato queste opzioni, torno alla scheda Marketplace Test Kit.I legare il mio dispositivo sviluppatore registrato e fare clic su avvia l'applicazione nella pagina del kit di test test monitorato.

All'avvio dell'applicazione io navigare avanti e indietro, selezionando i fiori, toccando il nome e premendo il pulsante indietro per tornare alla pagina iniziale dell'applicazione.Toccare il pulsante Start e quindi il pulsante indietro per forzare l'applicazione alla lapide e ritorno.

Quando penso che ho navigato in circa il modo in cui un utente tipico sarebbe e ho rimosso definitivamente e riattivato la mia applicazione, riesco a smettere la sessione di test e di applicazione.Per i migliori risultati, uscita l'applicazione facendo clic sul pulsante indietro dalla pagina iniziale applicazione per terminare la sessione di prova.Posso fare clic sul pulsante Chiudi applicazione nella pagina test monitorato nel kit di test, ma per i risultati dei test più accurati uscire dall'applicazione utilizzando il pulsante indietro.Quando l'applicazione viene chiusa, le sessioni di monitoraggio si conclude.

Dopo la sessione di test si conclude, la barra di stato risultati test kit mi dice la suite è analizzando i risultati, e quando è finito i risultati tabella aggiornamenti.

I risultati per la mia applicazione, mostrato in Figura 4, mi scandalizzo.

Test Results Showing Two FailuresRisultati dei Test nella figura 4 mostra due fallimenti

Mia applicazione ha fallito due delle quattro prove in questo gruppo di test.Il tempo di avvio è troppo lento e sta usando troppa memoria.Decido di scavare più a fondo.

Utilizzando lo strumento di analisi delle prestazioni

In generale, per le applicazioni ad essere popolare nel mercato, dovrebbero essere performante e reattivo.Al minimo, si dovrebbe indagare e risolvere problemi di prestazioni, identificati con il kit per il test.Per entrambi questi scenari, è possibile utilizzare lo strumento di analisi delle prestazioni di Windows Phone, conosciuto anche come il profiler.

Lo chiudo kit di test per ora e decide di utilizzare il profiler a guardare i miei problemi di memoria e tempo di avvio.È un grande strumento perché essa mostrerà i potenziali problemi con la mia applicazione e le possibili linee d'azione per correggerli.

Il profiler ha due opzioni:

  • L'esecuzione di profilatura: Il profiler di esecuzione valuterà la frequenza fotogrammi dell'applicazione, l'utilizzo della CPU e l'utilizzo della memoria in generale.È possibile utilizzare per trapano in al tasso di riempimento e vedere quanti elementi visivi vengono creati e altri dettagli di esecuzione dell'applicazione che possono influenzare le prestazioni.
  • Profiling della memoria: Il profiler di memoria viene illustrato l'utilizzo della memoria, carichi di immagine ed immondizia raccolta eventi.È possibile utilizzare il profiler di memoria per cercare le tendenze di utilizzo di memoria, che possono indicare una perdita di memoria.

Scegliere il profiler di esecuzione se non si sa che l'unica edizione con l'applicazione è un problema di memoria.So che ho un problema di memoria, ma mi incuriosisce la questione del tempo di avvio e decido di guardare la mia applicazione con il profiler di esecuzione in primo luogo.

Con il mio progetto di applicazione aperta in Visual Studio, vado al menu Debug e scegliere Start Windows Phone Performance Analysis.(Nota: Se si sta utilizzando Visual Studio Premium o Ultimate, non scegliere Start Performance Analysis, che non si applica ai progetti telefono.)

Quando si apre lo strumento di analisi delle prestazioni, si apre una nuova scheda in Visual Studio con il nome della sessione corrente di profilatura.Il nome include il nome del progetto e data e ora della sessione di profilatura, seguita dal suffisso .sap utilizzato per i file dei risultati di profilatura.Questi file vengono salvati sempre nel progetto, in modo da poter visualizzare più volte.Figura 5 mostra la scheda di analisi delle prestazioni prima di qualsiasi test sono stati eseguiti.

The Performance Analysis Tab Before Any Tests Have Been RunFigura 5 la scheda di analisi delle prestazioni prima di qualsiasi test sono stati eseguiti

Nella scheda profiler, io scegliere l'opzione di esecuzione.Per ottenere risultati migliori mi affinché Windows Phone dispositivo e rilascio sono ancora selezionato nella distribuzione e debug di scatole di opzioni barra degli strumenti di Visual Studio e assicurarsi che il dispositivo è legato e sbloccato.(Nota: È possibile distribuire un'applicazione nell'emulatore, quando si utilizza il profiler, ma risultati non possono essere indicativi di prestazioni su un dispositivo).

Clicco lancio applicazione per avviare la sessione di analisi.Simile al Kit di Test Marketplace, io uso la mia applicazione il modo sarebbe un utente e fare in modo che ho per la rimozione e il ritorno all'applicazione almeno una volta.L'uscita dell'applicazione utilizzando il pulsante indietro, che è il metodo preferito per i risultati più accurati, anche se si può anche finire la sessione di analisi utilizzando l'opzione di smettere di profilatura nello strumento di analisi delle prestazioni.Il profiler trascorre qualche tempo analizzando i risultati e li visualizza nella pagina in formato grafico (mostrato in Figura 6).Miei risultati sono molto interessanti.

Results of a Performance Analysis TestFigura 6 risultati di un Test di analisi delle prestazioni

La parte verde dell'utilizzo della CPU nel grafico indica gli aggiornamenti dello schermo e input tocco.Posso vedere elevato utilizzo della CPU inizialmente, che non è sorprendente dato il tempo di avvio lento.Vedo anche enormi picchi nell'utilizzo della CPU allineato con le immagini in fase di caricamento, e che il mio utilizzo della memoria si insinua superiore e più in alto.Visualizzazione di questi risultati senza ulteriore esame mi dice che il mio problema di utilizzo della memoria è probabilmente legato al come io sto gestione immagini nella mia applicazione.Anche se qualsiasi memoria utilizzata dalla mia applicazione viene rilasciato quando esce dalla mia applicazione, basato su questo grafico, temo che la mia applicazione potrebbe crashare un dispositivo se si è lasciata in esecuzione per più di pochi secondi, che trascorrere il testing.

Ora eseguire nuovamente lo strumento di analisi delle prestazioni con selezionata l'opzione di memoria, e ciò conferma la mia crescente problema di utilizzo della memoria.

Trovando e risolvendo il problema

Per tenere traccia dei problemi utilizzando lo strumento di analisi, selezionare aree problematiche nel grafico e rivedere le istruzioni nella sezione Sommario di osservazione.

Nei risultati del profiler esecuzione, io fare clic e trascinare con il mouse per selezionare una porzione del grafico che mostra un picco di utilizzo della CPU.La sezione prestazioni avviso aggiorna immediatamente con un problema di indagare (vedere Figura 7).

A Performance Warning About High CPU Usage on the UI ThreadFigura 7 prestazioni avvertimento circa elevato utilizzo della CPU sul Thread dell'interfaccia utente

Secondo il riassunto di osservazione, l'applicazione utilizza un sacco di CPU per eseguire funzioni sul thread dell'interfaccia utente.Certamente questo porterebbe a rallentare i tempi di avvio e scarso rendimento complessivo, ma non sono sicuro che contribuirebbe al problema di memoria.Il profiler è grande in quanto mi dà alcune istruzioni da seguire, così faccio questo.Seleziono l'utilizzo della CPU e quindi le funzioni.I risultati tabella aggiornamenti e io ordinare i risultati dalla colonna Inclusive campioni (%).Chiamate di funzione mia applicazione vengono visualizzati in blu con nomi completi che includono il namespace (sospettosamente, MemoryLeak in questo caso), la classe e il nome.Inoltre, le chiamate di funzione sono collegamenti in diretta ai metodi nel mio codice.Figura 8 mostra questi risultati.

The Peformance Analysis Tool Shows Methods That Might Be Causing ProblemsFigura 8 lo strumento di analisi Peformance mostra metodi che potrebbero causare problemi

Vi posso dire guardando questi risultati che i metodi di esecuzione quando carico la seconda pagina utilizzando un sacco di CPU.Questo probabilmente non risolvere il mio problema di tempo di avvio, ma sicuramente potrebbe contribuire al problema di memoria.

Clicca sul link per vedere il metodo FlowerPage.OnNavigatedTo.Questo metodo crea un elenco di oggetti fiore e carica un'immagine bitmap per ogni fiore utilizzando il metodo LoadBitmap.Di seguito è una tipica chiamata che io fare al metodo LoadBitmap:

bitmap = LoadBitmap("/MemoryLeak;component/Images/tulip.jpg");

E il metodo LoadBitmap, che carica la risorsa:

private BitmapImage LoadBitmap(string urlString)
{
  var streaminfo = App.GetResourceStream(new Uri(urlString, UriKind.Relative)); 
  BitmapImage bitmap = new BitmapImage();
  bitmap.SetSource(streaminfo.Stream);
  return bitmap;
}

Quando un utente naviga alla pagina, estratto il nome del fiore che è stato fatto clic sulla pagina principale dalla navigazione URI e caricare l'immagine stessa del fiore sulla FlowerPage.

È chiaro che il caricamento delle immagini è causa di un problema di memoria, ma non è chiaro per me che cosa devo fare dopo.

Se il sommario di osservazione non ti dà informazioni sufficienti per risolvere i problemi di prestazioni nell'applicazione, si dovrebbe verificare MSDN e il Web per l'orientamento delle prestazioni.Di seguito sono alcune grandi risorse:

  • "Considerazioni le prestazioni nelle applicazioni per Windows Phone" (sotto la sezione "Media") (wpdev.ms/utCq6h)
  • "Le prestazioni tecniche per Windows Phone" (wpdev.ms/perfTech)
  • Blog del team di Silverlight per Windows Phone prestazioni (wpdev.ms/slmperf)
  • Analizzare e migliorare la Windows Phone Application Performance (video da MIX11) (wpdev.ms/mixwpperf)
  • Lezioni di esperti: Top suggerimenti per la creazione di un'applicazione di successo Windows Phone (video da MIX11) (wpdev.ms/mixwptoptips)

Avvio alla ricerca di prestazioni e di caricamento delle risorse sulle applicazioni del telefono e scoprire qualcosa di importante.Secondo la sezione Media dell'articolo "Performance considerazioni in applicazioni per Windows Phone" MSDN Library, io dovrei specificando che mia immagine file come contenuto piuttosto che risorse, perché il telefono è ottimizzato per utilizzare i file.Quando un file multimediale viene compilato come una risorsa, il contenuto viene copiato in un file prima di essere usato, che diminuisce le prestazioni.

Cambiare l'operazione di compilazione dei miei file di immagine al contenuto e fare una piccola modifica al mio codice per ospitare questo.

Nel metodo LoadBitmap, io specificare UriSource dell'oggetto BitmapImage anziché SetSource chiamando:

private BitmapImage LoadBitmap(string urlString)
{
  BitmapImage bitmap = new BitmapImage();
  bitmap.UriSource = new Uri(urlString, UriKind.Relative);
  return bitmap;
}

E quando faccio la chiamata a LoadBitmap, passare l'URL relativo a ciascun bitmap:

bitmap = LoadBitmap("/Images/tulip.jpg");

Rieseguire il Test Kit e gli strumenti di analisi delle prestazioni

Una volta che si pensa che si hanno risolto le questioni sollevate nel Kit di Test Marketplace e lo strumento di analisi delle prestazioni, è possibile eseguire nuovamente questi strumenti.

Ho ricompilare la mia applicazione ed eseguire nuovamente il Test Kit Marketplace, e io non posso credere che la differenza nei risultati (vedere Figura 9). Il app ora passa tutti i quattro prove. Il tempo di avvio non è grande, ma almeno è l'incontro al bar.

Changing Image Handling Results in Passing All Four Marketplace Tests
Figura 9 cambiare immagine manipolazione risultati nel passare tutti e quattro i test Marketplace

Infine, ho eseguito il profiler di esecuzione un'ultima volta. Vedo una grande differenza nei risultati (vedere Figura 10).

Image Handling Changes Result in CPU and Memory Performance Analysis Improvements
Figura 10 immagini, gestione delle modifiche si traducano in CPU e memoria miglioramenti di analisi delle prestazioni

Ora invece di grandi picchi di CPU e immagini vengono caricati più e più volte, come l'utente si sposta tra le pagine, le immagini vengono caricate una volta, all'avvio dell'applicazione. Questo grafico mi dice anche che utilizzo della memoria dell'applicazione, il mio è restanti costante e relativamente basso rispetto alla mia versione precedente dell'applicazione. Avanti, selezionare alcuni dei più piccoli picchi di CPU e vedere i risultati mostrati nella Figura 11.

Investigating a CPU Spike Shows No Performance Warnings
Figura 11 indagando un picco di CPU non mostra avvisi di prestazioni

Io sono contento di vedere che il profiler non vede alcun problema di prestazioni e fare piani per presentare la mia domanda al mercato. Ho fiducia che sarà accettata, e io posso continuare a migliorare la mia applicazione e presentare gli aggiornamenti, se voglio.

Seguono questo modello

In questo articolo che ho descritto come identificare e risolvere i problemi utilizzando il Kit di Test di mercato e lo strumento di analisi delle prestazioni in un'applicazione di esempio Windows Phone. Questi strumenti sono integrati in Visual Studio e installare come parte del SDK Windows Phone. Kit di Test Marketplace consente di determinare se l'applicazione si incontrerà i requisiti di certificazione. Lo strumento di analisi delle prestazioni vi aiuterà a identificare la memoria e i problemi di prestazioni della CPU. Prima di inviare le applicazioni al mercato, consiglia un modello simile a quello che ho illustrato in questo articolo:

  1. Utilizzare gli strumenti che ho mostrato, comprese tutte le suite di test nel Marketplace Test Kit.
  2. Identificare e risolvere eventuali problemi.
  3. Ripetizione di verificare le correzioni.

Se si segue questo modello, troverete problemi all'inizio e creare migliori applicazioni più velocemente. Inoltre, ciò contribuirà a garantire che le applicazioni vengono accettate nel mercato al primo tentativo.

Cheryl Simmons è uno scrittore di programmazione senior del team Windows Phone sviluppatore contenuto in Microsoft.

Grazie ai seguenti esperti tecnici per la revisione di questo articolo: Pratap Lakshman, Raghuram Lanka e Nitin Madnikar