Como posso segmentar o Windows 10 UWP e o Windows Phone 8.1 no mesmo aplicativo?

18

fundo

Do ponto de vista de um desenvolvedor, o principal ponto de venda do Windows 10 é sua nova Plataforma Universal * Windows (UWP) .

* Onde "Universal" realmente significa "universal para todos os dispositivos que executam o Windows 10", e não "universal para dispositivos que executam não apenas o Windows 10, mas também o Windows 8.1 e talvez o Windows 7". Portanto, se você está criando um aplicativo UWP, está realmente apenas criando um "aplicativo Windows 10". Os aplicativos UWP não serão executados mesmo nos dispositivos Windows 8.1 e Windows Phone 8.1, ou seja, não são compatíveis com versões anteriores.

A partir do terceiro trimestre de 2015, o Windows 10 estava disponível para PCs e dispositivos IoT . Levará pelo menos mais alguns meses até que o Windows 10 Mobile seja lançado ao público, mas provavelmente não mais que um ano. Isso significa que o Windows Phone 8.1 permanecerá por um tempo ainda.

Questão

Estou prestes a começar a desenvolver um aplicativo para Windows Phone e pretendo publicá-lo no próximo mês ou mais, pois é um aplicativo bastante simples. Como o Windows 10 Mobile não chegará tão cedo, e muito menos os dispositivos em todo o mundo sendo atualizados, tenho que segmentar o Windows Phone 8.1 por enquanto. No entanto, uma vez que não será que muito antes do Windows 10 rolos móveis fora, eu estou querendo saber se seria sábio para preparar a minha solução para implantação em Windows 10 UWP , bem como Windows Phone 8.1 (que também me permite continue apoiando o 8.1 pelo tempo que eu precisar).

Vejo que posso agrupar um projeto UWP e um projeto 8.1 na mesma solução e compartilhar arquivos e ativos de origem por meio de um projeto compartilhado, como feito com o modelo Universal do Windows 8.1 no Visual Studio. Estou no caminho certo? Em caso afirmativo, existem diretrizes adicionais que devo seguir para garantir que tudo (incluindo XAML, como idealmente eu gostaria de ter a mesma ou pelo menos similar interface do usuário nas duas plataformas) realmente funcione corretamente nas duas plataformas, respondendo a incongruências?

Como alternativa, eu não podia me preocupar com o Windows 10 Mobile por enquanto e começar com um projeto 8.1 e migrá-lo para a UWP mais tarde, mas ainda precisaria manter as duas versões do meu aplicativo, pois não planejo abandonar o 8.1 usuários imediatamente. Eu ainda teria que me preocupar com a paridade de recurso / XAML nesse caso.

BoltClock
fonte
3
Apenas como uma atualização, fui adiante e criei uma solução que consiste em um projeto compartilhado, um projeto UWP e um projeto WP8.1. Eu vou detalhar isso em uma resposta mais tarde uma vez que eu tenho certeza que eu sei o que estou fazendo ...
BoltClock
Alguma atualização que você deseja compartilhar sobre suas descobertas sobre esse assunto em particular? Estou realmente interessado em saber como essa abordagem funciona para você.
Nelson Reis
3
@ Nelson Reis: Estou trabalhando no envio do meu aplicativo para o WP8.1 (o que é ótimo!), Então ainda não comecei a trabalhar no aplicativo UWP. Mas eu irei em breve. Até agora, as coisas estão funcionando muito bem no lado WP8.1.
BoltClock
Estou apenas interessado na atualização. Como foi o desenvolvimento do WP8.1 e do UWP? (Tenho menos de 50 pontos, não posso comentar). O motivo disso é que estou começando a desenvolver um aplicativo de plataforma cruzada e atualmente estou decidindo quais tecnologias usar. ( programmers.stackexchange.com/questions/314850/… )
makons
2
Olá, desculpe, está demorando tanto. O desenvolvimento do meu aplicativo UWP está chegando, então terei algo para compartilhar nas próximas semanas.
precisa saber é o seguinte

Respostas:

2

Como você diz em um de seus comentários, a melhor maneira de fazer isso é usar um projeto compartilhado e incluir várias cabeças nele. No seu caso, um windows phone 8.1 head e um uwp head. Esta posição foi também expresso em um MVA por Jerry Nixon e Andy Wigley (acho que isso é, mas ele foi atualizado desde então), na seção sobre a portagem de 8,1 aplicativos para UWP.

No seu projeto compartilhado, você pode precisar usar diretivas de compilação condicional para diferenciar o código executado no uwp e no telefone 8.1. (Como ao criar aplicativos universais do Windows 8.1 / phone 8.1)

Corcus
fonte
1

Dependendo do recurso específico do Windows que seu aplicativo precisa, você pode usar uma plataforma como o Xamarin, que permite escrever não apenas no Windows, mas também no iOS e Android na mesma base de código.

Kyle JV
fonte
1

A partir da minha experiência: vale a pena colocar alguns helpers / logic / etc nas bibliotecas PCL. Em seguida, você pode criar dois projetos (para UWP e WP8, respectivamente) que podem utilizar PCL com zero alterações. Além disso, você pode compartilhar serviços, visualizar modelos e modelos (com muito poucas #if linhas de compilação condicional).

A única coisa que NÃO vale a pena compartilhar é a equipe relacionada à interface do usuário, pois muitas coisas precisam ser trocadas / condicionadas (por isso é muito mais fácil preparar layouts separados para cada um dos UWP e WP8, mesmo que sejam praticamente os mesmos).

PS Eu fiz isso para UWP e WP8.1 Silverlight

Yury Schkatula
fonte