Otimizando a inicialização do App – Xamarin.Forms

Olá! O assunto de hoje é sobre inicialização do seu App.
Mas, antes de mais nada, vamos esclarecer uma coisa. Quando eu digo inicialização estou me referindo ao tempo em que leva desde o momento que o usuário clica no ícone do seu aplicativo até o momento em que é disponibilizada uma tela “utilizável”.
Em alguns casos pode parecer irrelevante o tempo que leva para inicializar o seu App, porém, se o aplicativo demora muito para inicializar isso pode causar uma “má primeira impressão”, fazendo com que o usuário perca o interesse pelo seu aplicativo.

Dessa forma, o post de hoje será para dar algumas dicas que podem melhorar o tempo de inicialização do seu App.

Ative a Compilação XAML

O XAML compiler (XAMLC) serve para compilar o Xaml para linguagem intermediária (IL) e adicioná-lo no assembly compilado, dessa forma, obtendo um resultado de inicialização mais rápido e melhor desempenho em tempo de execução.
O tamanho do seu aplicativo também fica menor, já que os arquivos .xaml não são incluídos no assembly.

Quando criamos uma aplicação Xamarin.Forms, por padrão o XAMLC vem desativado, para garantir a compatibilidade com as versões anteriores.
É possível habilitá-lo de duas formas, sendo elas no nível da aplicação ou no nível da classe.

Habilitando no nível de aplicação (afetará todo o seu App)


using Xamarin.Forms.Xaml;
[assembly: XamlCompilation (XamlCompilationOptions.Compile)]
namespace MeuApp
{
}

view raw

App.xaml.cs

hosted with ❤ by GitHub

Habilitando no nível da classe (afetará apenas a classe)


using Xamarin.Forms.Xaml;
namespace MeuApp
{
[XamlCompilation (XamlCompilationOptions.Compile)]
public class HomePage : ContentPage
{
}
}

view raw

App.xaml.cs

hosted with ❤ by GitHub

Habilite a Compilação AOT no projeto Android

A compilação Ahead-of-Time (AOT) vai transformar o seu código de linguagem intermediária para a linguagem de maquina. As aplicações iOS por padrão já utilizam a compilação AOT, por isso irei demonstrar apenas como habilitar no projeto android.

Após habilitar a compilação AOT você irá obter uma melhoria imediata na inicialização, já que ocorre uma substituição da inicialização Just In Time (JIT) pela pré-compilação de montagem antes do tempo de execução.

O ponto negativo na habilitação do AOT é um aumento no tamanho do seu APK, então fique atento a isso.

Para habilitar o AOT, abra as propriedades do projeto, em “Android Options” marque a caixa AOT Compilation, como demonstrado na imagem a seguir.

AOTCompilation

 

Outra maneira para fazer isso é abrir o arquivo Android.csproj em um editor de texto e edite o AotAssemblies para true.


<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<AotAssemblies>true</AotAssemblies>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<AotAssemblies>true</AotAssemblies>
</PropertyGroup>

 

Essas foram algumas dicas para melhorar o tempo de inicialização do seu App, mas é preciso levar em consideração que o tempo de inicialização pode variar de acordo com o hardware utilizado, se o seu aplicativo precisa carregar informações da internet e entre outros fatores.

4 comentários em “Otimizando a inicialização do App – Xamarin.Forms

  1. Muito bom. Você poderia me indicar algum conteúdo que explique os dois processos de compilação(AOT e JIT) mostrando suas características/diferenças?

    Curtir

  2. Essa opção de AOT no meu vs2017 não aparece. Deve ter havido alguma mudança posterior à esse post. Sabe de algo ?

    Curtir

    1. Olá Marcelo, não.. ele continua no mesmo lugar.

      Porém, essa opção não está disponível para a versão Community do Visual Studio.

      Neste caso, edite o arquivo “NomedoSeuprojeto.android.csproj”

      procure a tag “PropertyGroup Condition=” ‘$(Configuration)|$(Platform)'”

      E adicione dentro dela a seguinte tag: AotAssemblies e o valor para true
      true

      isso irá resolver o seu problema.

      Abraço.

      Curtir

Deixe um comentário