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)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Xamarin.Forms.Xaml; | |
… | |
[assembly: XamlCompilation (XamlCompilationOptions.Compile)] | |
namespace MeuApp | |
{ | |
… | |
} |
Habilitando no nível da classe (afetará apenas a classe)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Xamarin.Forms.Xaml; | |
namespace MeuApp | |
{ | |
[XamlCompilation (XamlCompilationOptions.Compile)] | |
public class HomePage : ContentPage | |
{ | |
… | |
} | |
} |
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.
Outra maneira para fazer isso é abrir o arquivo Android.csproj em um editor de texto e edite o AotAssemblies para true.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
… | |
<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.
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?
CurtirCurtir
Olá Edenilson,
Da uma olhada nesse link
http://www.mono-project.com/docs/advanced/runtime/docs/aot/
CurtirCurtir
Essa opção de AOT no meu vs2017 não aparece. Deve ter havido alguma mudança posterior à esse post. Sabe de algo ?
CurtirCurtir
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.
CurtirCurtir