O documento discute as pontes da Plataforma Universal Windows para portar aplicativos Win32, iOS e Android para o Windows 10, incluindo o Project Centennial para aplicativos Windows clássicos, o Project Astoria para aplicativos Android e o Project Islandwood para aplicativos iOS.
1. Portando apps Win32, iOS e Android para o Windows 10
com Universal Windows Platform Bridges
WIN301
2. Quem é o palestrante?
Caio Garcez
Senior Technical Evangelist
@caio_garcez
Palestra
3. XboxIoT
Universal
Windows Platform
Plataformas Middleware
Middleware Partners (e.g., Xamarin)
Game Engine Partners (e.g., Unity)
Plataforma Windows
Universal Windows 8 Apps (C++/C#/JS)
Universal Windows 10 Apps (C++/C#/JS)
Project Centennial (Classic Apps)
Plataforma Web
Microsoft EdgeHTML Engine
Cordova Tooling (HTML/JS)
Hosted Web Apps (HTML/JS)
Outras Plataformas
Windows Bridge for Android (Java/C++)
Windows Bridge for iOS (Objective C/C++)
Universal Windows Platform
13. App-V X Project Centennial
App-V Project Centennial
Público-alvo Empresas Desenvolvedores
Acesso ao código-fonte Não Sim
Bugs Têm que ser contornados Têm que ser corrigidos
Produto final App Bubble Appx
27. Redirecionamento de Plataforma
Recursos da plataforma Android são redirecionados para o Windows
• File system
• Contacts, photos,…
• Sensors
• Camera
• Hardware accelerated graphics & Direct
X
• Networking/sockets
• Application lifecycle
• Resource management
• Background execution model
• Security model
28. Windows faz o “trabalho pesado”
A plataforma traduz e redireciona conceitos Android para conceitos
Windows
Experiência de usuário Serviços de Nuvem Plataforma
• Aquisição
• Input e interação
• Comunicação App-to-app
• Windowing & navegação
• Notificações e live tiles
• …
• In-App Purchases
• Ads
• Mapas
• Game Services
• Analytics
• Serviço de Notificação
• …
• File system
• Contatos, fotos,…
• Sensores
• Câmera
• Gráficos acelerados por Hardware
& Direct X
• …
34. Crie Universal Windows Apps em Objective-C
Compilador e Ambiente de Execução (Runtime)
Compatibilidade com APIs iOS
Editor/Workflow
Importação de projetos
35. Ferramentas
Desenvolvimento integrado no Visual Studio
Projetos Xcode
importados no
Visual Studio
Suporte
integrado à
linguagem:
syntax
highlighting,
autocomplete
Depuração
completa:
breakpoints,
stack traces, …
Interop com API
Universal
40. Funciona em todos os dispositivos Windows 10
Instale em mais dispositivos
Múltiplos “form-factors”
CPUs ARM, x86 e x64
41. Windows faz o “trabalho pesado”
A plataforma traduz e redireciona conceitos iOS para conceitos Windows
Experiência de usuário Monetization services Plataforma
Windows 10
42. Compatibilidade de APIs
Suporta um subconjunto
de APIs iOS
Não aponta para uma
versão específica do iOS
APIs mais usadas são
implementadas primeiro
• Jogos: OpenGL (ANGLE,
CAEAGLLayer, EAGLContext),
OpenAL, Sensors
• UI: UIKit, CoreAnimation,
CoreGraphics, CoreText, Touch
• Objective-C: ARC, blocks
• Foundation / CoreFoundation
• Serviços: StoreKit, Social,
Notificações, …
43. Exemplo
Candy Crush Saga: Portado para o Windows
Phone com poucas alterações
No código
Interop usado para integração nativa
• In-App Purchase
• Notificações locais
45. Windows Bridges - Comparação
Windows Bridge Acesso a APIs da UWP Esforço Manutenção
Hosted Web Apps
(Westminster)
Completo
Criação do manifesto
Submissão para Store
Site Web
Centennial Completo
Conversão
Ajustes
Submissão para Store
Depende
Windows Bridge for
Android (Astoria)
Parcial
Conversão
Ajustes
Submissão para Store
IDE Android
Windows Bridge for iOS
(Islandwood)
Completo
Importação
Ajustes
Submissão para Store
Visual Studio
48. Sessões relacionadas
• WIN207 - Hosted Web Apps: Leve seu web site para dentro de
uma app
• WIN302 - 10 Motivos para utilizar Apache Cordova no Visual
Studio 2015
• WIN303 - Desenvolvendo Apps com C# para iOS, Android e
Windows com Xamarin
50. Evento de encerramento do Microsoft Insights Week
com Satya Nadella, CEO da Microsoft.
Dia 29 de setembro
AMCHAM - Rua da Paz 1431
Chácara Santo Antônio - SP
Para se inscrever: http://aka.ms/satyabr
Notas do Editor
Windows 2000 implemented a rudimentary version of what now goes by the fancy name of Dynamic-Link Library Redirection. To enable DLL redirection, create a file with the same name as the program whose DLLs you wish to redirect, but with .local appended to the name. For example, to apply redirection to C:\Program Files\Litware Inc\Invoice.exe, create the file C:\Program Files\Litware Inc\Invoice .exe.local. The contents of the file aren't important; what's important is that the file exists.
Once you've enabled redirection for a program, all attempts by that program to load a DLL will first look in the directory that contains the program before the usual search locations. Therefore, in the case of the conflicting MSVCRT.DLL file, you can enable redirection in each program and put a private copy of MSVCRT.DLL into each program's installation directory. Each program then receives its own version of MSVCRT.DLL-the version of the DLL with which the program was tested.
The magic of this technique is that it works even if the program uses a full path to load the DLL. For example, suppose the program tries to load C:\Program Files\Common Files\Proseware Inc\taxplugin.dll. After upgrading to Proseware 2.0, you discover that its tax plug-in is incompatible with your invoice program. What you can do is copy an old version of the tax plug-in to C:\Program Files\Litware Inc\taxplugin.dll. Even though the program uses a full path to load the tax plug-in, DLL redirection will still look in the current directory and use the local override instead of the one in the Proseware Inc directory.
In Windows XP and Windows Vista™, the rules for DLL redirection are a little different, but the general principle remains the same. In addition to creating a .local file, you can also create a .local directory. In that case, the .local directory is searched rather than the program's install directory. This allows you to apply redirection to multiple programs in the same directory without conflict.