Xamarin Forms - Iniciando mais rápido no Android (Startup Tracing)
Neste artigo veremos como iniciar aplicações Xamarin Forms mais rapidamente no Android. |
A inicialização das aplicações Xamarin Forms no Android já
foi muito frustrante e melhorou bastante mas ainda deixava a desejar.
Durante os anos, a equipe do Xamarin tentou muito melhorar isso, às vezes com melhorias muito pequenas e outras vezes com melhorias um pouco melhores, mas agora usando versões do Visual Studio superior a 16.5, eles fizeram algo incrível, algo chamado Startup Tracing com custom Profiles.
De acordo com Xamarin (veja a postagem completa aqui), estes são os resultados da habilitação dessas opções:
Tipo | Velocidade de Inicialização | Tamanho do apk |
Normal | 2s914ms | 16MB |
AOT | 1s18ms | 34MB |
Startup Tracing | 1s518ms | 20MB |
Isso significa que AOT é incrível e você deve habilitá-lo, mas se você se preocupa com o tamanho do apk, você definitivamente deve habilitar o rastreamento de inicialização também, assim você obterá uma incrível melhoria na velocidade de inicialização sem afetar muito o tamanho do apk.
Então vejamos cada um destes conceitos.
Startup Tracing (Rastreamento de inicialização)
Eu não vou entrar nos detalhes envolvendo o recurso Startup Tracing vou dar apenas a definição e como habilitá-lo.
O runtime do Mono fornece um recurso antecipado (AOT) que o Mono usar para pré-compilar assemblies para minimizar o tempo JIT e reduzir o uso de memória.
Com isso o Mono introduziu um recurso que permite usar um criador de perfil AOT integrado em um aplicativo para gerar um perfil AOT. O criador de perfil conduz perfis de memória, perfis de tempo de execução e até mesmo uma amostragem baseada em estatísticas para perfis. Isso gera um perfil AOT que pode ser usado para otimizar seu aplicativo ao usar o recurso AOT do Mono com um perfil.
Para habilitar este recurso podemos abrir a janela de propriedades do projeto Android e selecionar Android Options;
A seguir em - Code Generation and Runtime - basta marcar a opção : Enable Startup Tracing
Outra forma seria editar o arquivo de projeto(.csproj) Android e e adicionando a seguinte propriedade dentro do seu Release <PropertyGroup>:
<PropertyGroup
Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <AndroidEnableProfiledAot>true</AndroidEnableProfiledAot> </PropertyGroup> |
Ao habilitar esta opção, o criador de perfil fará sua
mágica (memória, tempo de execução e algumas estatísticas) para criar um
perfil para seu aplicativo para aumentar o desempenho sem afetar muito o tamanho
do apk.
Custom Profiles (Perfil Personalizado)
O que é um Custom Profile ou
perfil personalizado ?
Um perfil customizado é um perfil gerado com base na execução de um criador de
perfil integrado em seu aplicativo para descobrir quais métodos são compilados
por JIT durante a inicialização. O perfil personalizado pode então ser usado em
seu aplicativo para que seus usuários acessem seu aplicativo ainda mais rápido.
Atualmente (março/2020) você pode começar a usar perfis personalizados com rastreamento de inicialização por meio da linha da comando e do MSBuild. Em uma versão futura do Visual Studio, você poderá gravar perfis personalizados dentro do IDE! (Palavra da Microsoft).
Então vamos criar um perfil personalizado via linha de
comando:
- Abra um prompt de comando ou terminal no diretório do seu projeto
Android que contém o .csproj;
- Certifique-se de que apenas um dispositivo Android esteja conectado;
- No arquivo Manifest do Android em Required
Permissions , na página de propriedades do projeto do Visual Studio,
certifique-se de que a permissão INTERNET esteja
habilitada;
- digite o comando: msbuild / t:
BuildAndStartAotProfiling
- Deixe seu aplicativo ser executado até que seja carregado.
- digite o comando : msbuild / t: FinishAotProfiling
- Isso adicionará um arquivo custom.aprof
ao seu projeto, que você deseja alterar a propriedade
Build to action para AndroidAotProfile.
Para fazer isso adicione o seguinte <ItemGroup> ao
seu .csproj:
<ItemGroup> <AndroidAotProfile Include = "$ (MSBuildThisFileDirectory) custom.aprof" /> </ItemGroup>
- Por fim, você precisará incluir duas propriedades do
MSBuild em sua configuração de versão para
habilitar o recurso e usar o perfil personalizado :
<PropertyGroup>
<AndroidEnableProfiledAot> true </AndroidEnableProfiledAot>
<AndroidUseDefaultAotProfile> false </AndroidUseDefaultAotProfile>
</PropertyGroup>
Pronto !
Agora você pode gravar e usar perfis personalizados ao
usar o rastreamento de inicialização no Android. Isso fornece o melhor tempo de
inicialização do aplicativo com um ligeiro aumento no tamanho do APK.
No futuro, você poderá gravar perfis no Visual Studio e
Visual Studio para Mac.
"Por isso não desfalecemos; mas, ainda que o nosso homem exterior se
corrompa, o interior, contudo, se renova de dia em dia."
2 Coríntios 4:16
Referências: