Debug di un'applicazione iPhone

Potete eseguire il debug dell'applicazione sul computer di sviluppo, con l'applicazione in esecuzione in ADL. Potete anche eseguire il debug dell'applicazione sull'iPhone.

Alcune funzionalità AIR che non sono supportate sull'iPhone sono ancora disponibili quando si esegue il test di un'applicazione utilizzando ADL (sul computer di sviluppo). Tenete presente queste differenze quando eseguite il test del contenuto sul desktop. Per ulteriori informazioni, vedete API di ActionScript 3.0 non supportate nei dispositivi mobili .

Debug dell'applicazione sul computer di sviluppo

Per eseguire il debug dell'applicazione sul computer di sviluppo utilizzando Flash Professional CS5:

Scegliete Debug > Debug filmato > In AIR Debug Launcher (Mobile).

Potete anche eseguire il debug dell'applicazione chiamando ADL dalla riga di comando. La sintassi è la seguente:

adl –profile mobileDevice appDescriptorFile

Sostituite appDescriptorFile con il percorso al file descrittore dell'applicazione.

Accertatevi di includere l'opzione -profile mobileDevice .

Debug dell'applicazione sull'iPhone

Per eseguire il debug dell'applicazione sull'iPhone:

  1. Compilate l'applicazione con il supporto debug:

  2. Installate l'applicazione sull'iPhone.

  3. Sull'iPhone, attivate la modalità Wi-Fi e collegatevi alla stessa rete del computer di sviluppo.

  4. Avviate una sessione di debug sul computer di sviluppo. In Flash Professional CS5, scegliete Debug > Inizia sessione di debug remota > ActionScript 3.0.

  5. Eseguite l'applicazione sull'iPhone.

    La versione di debug dell'applicazione richiede l'indirizzo IP del computer per sviluppatori. Immettete l'indirizzo IP e toccate il pulsante OK. Per ottenere l'indirizzo IP del computer di sviluppo:

    • In Mac OS, nel menu Apple, scegliete Preferenze di Sistema. Nella finestra Preferenze di Sistema, fate clic sull'icona Rete. La finestra Preferenze di Network contiene l'indirizzo IP.

    • In Windows, avviate una riga di comando ed eseguite il comando ipconfig .

La sessione di debug visualizza qualsiasi output trace() dall'applicazione.

Quando eseguite il debug di un'applicazione installata sull'iPhone, Flash Professional CS5 supporta tutte le funzioni di debug, comprese il controllo dei punti di interruzione, l'esecuzione istruzione per istruzione e il monitoraggio delle variabili.

Debug con la diagnostica del rendering GPU

La funzione di diagnostica del rendering GPU vi consente di vedere come l'applicazione utilizza l'accelerazione hardware (per applicazioni che usano la modalità rendering GPU). Per utilizzare questa funzione, compilate l'applicazione utilizzando lo strumento PFI sulla riga di comando e includete l'opzione -renderingdiagnostics :

pfi -package -renderingdiagnostics -target ipa-debug -connect ...

Il flag -renderingdiagnostics deve seguire direttamente il flag -package .

La funzione di diagnostica del rendering GPU visualizza rettangoli colorati per tutti gli oggetti di visualizzazione:

  • Blu: l'oggetto di visualizzazione non è una bitmap o memorizzato nella cache come una bitmap, ed è in corso il rendering.

    Se il blu appare ripetutamente per un oggetto di visualizzazione che non cambia, la causa può essere che si interseca con oggetti di visualizzazione in movimento. Ad esempio, l'oggetto di visualizzazione potrebbe essere uno sfondo per oggetti di visualizzazione in movimento. Memorizzate l'oggetto di visualizzazione nella cache come una bitmap.

    Se il blu appare per un oggetto che pensate debba essere memorizzato nella cache, può essere che l'oggetto utilizzi un effetto che la GPU non può applicare. Questi effetti includono alcuni metodi di fusione, le trasformazioni cromatiche, la proprietà scrollRect e le maschere.

    L'applicazione visualizza inoltre il blu se gli oggetti di visualizzazione caricati nella GPU superano i limiti di memoria.

    L'applicazione registra i messaggi per ogni rettangolo blu. L'applicazione restituisce questi messaggi insieme con altri trace() e messaggi di output di debug.

  • Verde: l'oggetto di visualizzazione è una bitmap, o memorizzato nella cache come una bitmap, e viene caricato nella GPU per la prima volta.

    Se il verde appare ripetutamente per un oggetto di visualizzazione, il codice nell'applicazione sta ricreando l'oggetto di visualizzazione. Ad esempio, questo si verifica se la timeline ritorna a un fotogramma creato dall'oggetto di visualizzazione. Modificate il contenuto per impedire che vengano ricreati oggetti identici.

  • Rosso: l'oggetto di visualizzazione è una bitmap, o memorizzato nella cache come una bitmap, e viene ricaricato nella GPU.

    Il rosso appare ogni volta che un tale oggetto di visualizzazione cambia in un modo che richiede una nuova esecuzione del rendering della rappresentazione bitmap. Ad esempio, se viene nuovamente eseguito il rendering di un oggetto 2D la cui proprietà cacheAsBitmapMatrix non è impostata quando l'oggetto viene ridimensionato o ruotato. La ripetizione del rendering si verifica anche quando gli oggetti di visualizzazione secondari vengono spostati o modificati.

Ogni rettangolo colorato si dissolve dopo che lo schermo viene ridisegnato quattro volte, purché durante questi cicli non si verifichi nuovamente il motivo della colorazione. Tuttavia, se non ci sono modifiche su schermo, il colore della diagnostica non cambia.

Ad esempio, considerate un oggetto di visualizzazione bitmap (una banana) davanti a uno sfondo vettoriale che non è memorizzato nella cache come una bitmap. La prima volta che viene eseguito il rendering della banana, questa viene colorata di verde. La prima volta che viene eseguito il rendering dello sfondo, questo viene colorato di blu:

Mentre la banana si sposta, la CPU deve eseguire nuovamente il rendering dello sfondo; questo causa l'ombreggiatura blu per apparire sopra lo sfondo:

L'ombreggiatura blu sopra lo sfondo riflette le regioni ridisegnate che devono essere inviate alla GPU.

Tuttavia, se lo sfondo è memorizzato nella cache come una bitmap, quando lo banana si sposta, la funzione di diagnostica del rendering non visualizza nessuna tinta colorata:

La funzione di diagnostica non visualizza nessuna tinta colorata poiché la GPU conserva la bitmap di sfondo. La GPU può comporre la banana con lo sfondo senza coinvolgere la CPU.

Supponete che la banana sia un oggetto di visualizzazione 2D la cui proprietà cacheAsBitmapMatrix non è impostata. Ogni volta che l'oggetto di visualizzazione viene ruotato (o ridimensionato), la funzione di diagnostica del rendering visualizza rosso. Questo indica che l'applicazione deve caricare una nuova versione dell'oggetto di visualizzazione nella GPU: