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 | |
{ | |
… | |
} |
Habilitando no nível da classe (afetará apenas a classe)
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.
… | |
<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