Depurando um aplicativo para iPhone

É possível depurar o aplicativo no computador do desenvolvimento com o aplicativo executando no ADL. Também é possível depurar o aplicativo no iPhone.

Algumas funcionalidades do AIR não suportadas no iPhone ainda estão disponíveis ao testar um aplicativo utilizando o ADL (no computador no desenvolvimento). Esteja ciente dessas diferenças ao testar o conteúdo na área de trabalho. Para obter mais informações, consulte ActionScript 3.0 APIs sem suporte em dispositivos móveis .

Depurando o aplicativo no computador do desenvolvimento

Para depura o aplicativo no computador do desenvolvimento utilizando o Flash Professional CS5:

Selecione Depurar > Depurar filme > Em AIR Debug Launcher (Móvel).

Também é possível depurar o aplicativo chamando o ADL na linha de comando. Esta é a sintaxe:

adl –profile mobileDevice appDescriptorFile

Substitua appDescriptorFile pelo caminho para o arquivo do descritor do aplicativo.

Certifique-se de incluir a opção -profile mobileDevice .

Depurando o aplicativo no iPhone

Para depurar o aplicativo no iPhone:

  1. Compile o aplicativo com suporte à depuração:

  2. Instale o aplicativo no iPhone.

  3. No iPhone, habilite o Wi-Fi e conecte na mesma rede do computador de desenvolvimento.

  4. Inicie uma sessão de depuração no computador de desenvolvimento. No Flash Professional CS5, escolha Depurar > Iniciar sessão remota para depurar > ActionScript 3.0.

  5. Execute o aplicativo no iPhone.

    A versão de depuração do aplicativo solicitará o endereço IP do computador do desenvolvedor. Digite o endereço IP e pressione o botão OK. Para obter o endereço IP do computador de desenvolvimento.

    • No Mac OS, no menu Apple, escolha Preferência de sistema. Na janela Preferências de sistema, clique no ícone Rede. A janela Preferências de rede lista o endereço IP.

    • No Windows, inicie a sessão na linha de comando e execute o comando ipconfig .

A sessão de depuração do exibe qualquer saída trace() do aplicativo.

Ao fazer a depuração de um aplicativo instalado no iPhone, o Flash Professional CS5 possui suporte a todos os recursos, incluindo controle de ponto de interrupção, avanço pelas linhas e monitoramento de variável.

Depurando com o diagnóstico de renderização por GPU

O recurso de diagnóstico de renderização por GPU permite que você veja como o aplicativo utiliza a aceleração de hardware (para aplicativos que utilizam o modo de renderização por GPU). Para usar esse recurso, compile o aplicativo utilizando a ferramenta PFI na linha de comendo e inclua a opção -renderingdiagnostics :

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

O indicador -renderingdiagnostics deve seguir diretamente o indicador -package .

O recurso de diagnóstico de renderização por GPU exibe retângulos coloridos para todos os objetos de exibição:

  • Azul — o objeto de exibição não é um bitmap ou armazenado em cache como bitmap, e está sendo renderizado.

    Se for exibido azul repetidamente para um objeto de exibição que não estiver sendo alterado, isto pode ter ocorrido porque ele encontra objetos de exibição que se movimentam. Por exemplo, o objeto de exibição pode ser o plano de fundo de objetos de exibição que se movimentam. Considere armazenar o objeto de exibição em cache como bitmap.

    Se for exibido azul para um objeto de exibição que você acha que deve ser armazenado em cache, pode ser porque o objeto está utilizando um efeito que a GPU não pode aplicar. Esses efeitos incluem alguns modos de mesclagem, transformações de cor, a propriedade scrollRect e máscaras.

    O aplicativo também exibe azul se os objetos de exibição carregados para a GPU excederem os limites de memória.

    O aplicativo registra as mensagens de cada retângulo azul. O aplicativo fornece essas mensagens juntamente com outras mensagens de saída de depuração e trace() .

  • Verde — O objeto de exibição é um bitmap ou armazenado em cache como bitmap e está sendo carregado para a GPU pela primeira vez.

    Se verde for exibido repetidamente para um objeto de exibição, o código do aplicativo está recriando o objeto de exibição. Por exemplo, isto pode ocorrer se a linha de tempo retornar para um quadro que cria o objeto de exibição. Considere modificar o conteúdo para evitar a recriação de objetos idênticos.

  • Vermelho — o objeto de exibição é um bitmap ou armazenado em cache como bitmap, e está sendo recarregado para a GPU.

    Vermelho é exibido toda vez que um objeto de exibição muda de forma a exigir que o aplicativo renderize novamente a representação de bitmap. Por exemplo, se um objeto 2D não possui a propriedade cacheAsBitmapMatrix definida, ele é renderizado novamente quando for redimensionado ou girado. Também é executada uma nova renderização quando os objetos de exibição filhos forem movidos ou alterados.

Cada retângulo colorido esmaece depois de quatro ciclos de redesenho de tela, desde que a coloração não ocorra novamente durante esses ciclos. Entretanto, se não houver mudanças na tela, a coloração de diagnóstico não mudará.

Por exemplo, considere um objeto de exibição de bitmap (uma banana) em frente a um segundo plano vetorial não armazenado em cache como bitmap. Quando a banana for renderizada, sua cor será verde. Quando o plano de fundo for renderizado pela primeira vez, sua cor será azul:

Conforme a banana se mover, a CPU precisará renderizar novamente o plano de fundo, fazendo com que a sombra azul seja exibida sobre o fundo:

A sombra azul sobre o fundo reflete as regiões redesenhadas que precisam ser enviadas para a GPU.

Entretanto, se o fundo for armazenado em cache como bitmap, quando a banana se mover, o recurso de diagnóstico de renderização não exibirá cores:

O recurso de diagnóstico não exibirá cores porque a GPU reterá o bitmap do fundo. A GPU pode compor a banana com o fundo sem envolver a CPU.

Suponha que a banana seja um objeto de exibição 2D que não tenha a propriedade cacheAsBitmapMatrix definida. Sempre que o objeto de exibição for girado (ou redimensionado), o recurso de diagnóstico de renderização mostrará vermelho. Isto indica que o aplicativo tem de carregar uma nova versão do objeto de exibição para a GPU: