Parte 3 - Configurando uma solução multiplataforma Xamarin

Independentemente de quais plataformas estão sendo usadas, todos os projetos Xamarin usam o mesmo formato de arquivo de solução (o formato de arquivo do Visual Studio .sln ). As soluções podem ser compartilhadas entre ambientes de desenvolvimento, mesmo quando projetos individuais não podem ser carregados (como um projeto do Windows no Visual Studio para Mac).

Ao criar um novo aplicativo multiplataforma, a primeira etapa é criar uma solução em branco. Esta seção explica o que acontece a seguir: configurar os projetos para criar aplicativos móveis de plataforma cruzada.

Compartilhamento de código

Consulte o documento Opções de compartilhamento de código para obter uma descrição detalhada de como implementar o compartilhamento de código entre plataformas.

.NET Standard

Os projetos do .NET Standard fornecem uma maneira fácil de compartilhar código entre plataformas, produzindo assemblies que podem ser usados em plataformas Windows, Xamarin (iOS, Android, Mac) e Linux. Esta é a maneira recomendada de compartilhar código para soluções Xamarin.

Outras opções

Historicamente, o Xamarin usava Bibliotecas de Classes Portáteis (PCLs) e Projetos Compartilhados. Nenhum deles é recomendado para novos projetos; e você deve considerar a migração de aplicativos existentes para usar o .NET Standard.

Preenchendo a solução

Independentemente de qual método é usado para compartilhar código, a estrutura geral da solução deve implementar uma arquitetura em camadas que incentive o compartilhamento de código. A abordagem Xamarin é agrupar o código em dois tipos de projeto:

  • Projeto principal (ou "compartilhado") – Escreva código reutilizável em um só lugar, para ser compartilhado em diferentes plataformas. Use os princípios de encapsulamento para ocultar detalhes de implementação sempre que possível.
  • Projetos de aplicativos específicos da plataforma – consuma o código reutilizável com o mínimo de acoplamento possível. Recursos específicos da plataforma são adicionados nesse nível, criados em componentes expostos no projeto Core.

Projeto principal

Os projetos principais que compartilham código devem ser .NET Standard e somente assemblies de referência que estão disponíveis em todas as plataformas – ou seja. os namespaces da common framework como System, System.Core e System.Xml.

Os projetos principais devem implementar o máximo possível de funcionalidades que não sejam da interface do usuário, o que pode incluir as seguintes camadas:

  • Data Layer – Código que cuida do armazenamento de dados físicos por exemplo. SQLite-NET ou até mesmo arquivos XML. As classes de camada de dados são normalmente usadas apenas pela camada de acesso a dados.
  • Camada de Acesso a Dados – Define uma API que oferece suporte às operações de dados necessárias para a funcionalidade do aplicativo, como métodos para acessar listas de dados, itens de dados individuais e também criá-los, editá-los e excluí-los.
  • Service Access Layer – Uma camada opcional para fornecer serviços de nuvem para o aplicativo. Contém código que acessa recursos de rede remota (serviços web, downloads de imagens, etc.) e possivelmente cache dos resultados.
  • Camada de Negócios – Definição das classes Model e das classes Façade ou Manager que expõem a funcionalidade aos aplicativos específicos da plataforma.

Projetos de aplicativos específicos da plataforma

Os projetos específicos da plataforma devem fazer referência aos assemblies necessários para vincular ao SDK de cada plataforma (Xamarin.iOS, Xamarin.Android, Xamarin.Mac ou Windows), bem como ao projeto .NET Standard.

Os projetos específicos da plataforma devem implementar:

  • Camada de aplicativo – funcionalidade específica da plataforma e vinculação/conversão entre os objetos da camada de negócios e a interface do usuário.
  • Camada de Interface do Usuário – Telas, controles personalizados da interface do usuário, apresentação da lógica de validação.

Referências de projeto

As referências de projeto refletem as dependências de um projeto. Os projetos principais limitam suas referências a assemblies comuns para que o código seja fácil de compartilhar. Os projetos de aplicativos específicos da plataforma fazem referência ao projeto .NET Standard, além de quaisquer outros assemblies específicos da plataforma que eles precisam para aproveitar a plataforma de destino.

Exemplos específicos de como os projetos devem ser estruturados são dados nos estudos de caso.

Adicionando arquivos

Criar ação

É importante definir a ação de compilação correta para determinados tipos de arquivo. Esta lista mostra a ação de compilação para alguns tipos de arquivo comuns:

  • Todos os arquivos C# – Build Action: Compile
  • Imagens em Xamarin.iOS & Windows – Build Action: Conteúdo
  • Arquivos XIB e Storyboard no Xamarin.iOS – Build Action: InterfaceDefinition
  • Imagens e layouts XML no Android – Build Action: AndroidResource
  • Arquivos XAML em projetos do Windows – Ação de compilação: página
  • Arquivos XAML Xamarin.Forms – Ação de compilação: EmbeddedResource

Geralmente, o IDE detectará o tipo de arquivo e sugerirá a ação de compilação correta.

Diferenciação de maiúsculas e minúsculas

Finalmente, lembre-se de que algumas plataformas têm sistemas de arquivos que diferenciam maiúsculas de minúsculas (por exemplo, iOS e Android), portanto, certifique-se de usar um padrão de nomenclatura de arquivo consistente e certifique-se de que os nomes de arquivo que você usa no código correspondem exatamente ao sistema de arquivos. Isso é especialmente importante para imagens e outros recursos que você referencia no código.