Win301 caio garcez_uwp_bridges

50
Portando apps Win32, iOS e Android para o Windows 10 com Universal Windows Platform Bridges WIN301

Transcript of Win301 caio garcez_uwp_bridges

Portando apps Win32, iOS e Android para o Windows 10 com Universal Windows Platform Bridges

WIN301

Quem é o palestrante?Caio GarcezSenior Technical Evangelist@caio_garcez

Palestra

Desktop

Mobile

XboxIoT

Holographic

Surface Hub

Universal Windows Platform

Plataformas MiddlewareMiddleware Partners (e.g., Xamarin)Game Engine Partners (e.g., Unity)

Plataforma WindowsUniversal 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

Project Centennial

Project Centennial é uma ponte entre aplicações Windows clássicas (.NET, Win32) eUniversal Windows Apps

MotivaçãoAmplo ecossistema de aplicações Windows clássicasNão há um app model para estas aplicaçõesMSI é frágilPublicação na Windows StoreAplicações podem ser gradualmente migradas para UWAs

BenefíciosAquisição via single-clickUpdates automáticosMais confiávelUsuário se sente confiante

RestriçõesAplicação deve rodar como standard user – sem privilégios de adminAplicação não pode rodar em kernel modeAplicação não pode ser um serviço WindowsCódigo que trata licenciamento precisa ser removido ou ajustado

File System

Registry

Instalação Clássica (.EXE,.MSI)

DLL Hell

File System

Registry

Tecnologia App-VApp-V Sequencer

Application Bubble

File System

Registry

Desktop

Mobile

XboxIoT

Holographic

Surface Hub

UWP

App-V X Project CentennialApp-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

Merging

SystemNamespace

AppNamespace

Merged View

C:\Windows\System \advapi.dll \kernel32.dll \shell32.dll

C:\Windows\System \msvcrt.dllC:\Windows\System

\advapi.dll \kernel32.dll \msvcrt.dll \shell32.dll

Redirect

SystemNamespace

AppNamespace

Merged View

Documents

AppDataRegistry

AppDataRegistryDocuments

ConversãoMSI

Processo de Conversão

Testes

AjustesAppX

StoreIdentity

Objetivos para v1

Live tilesAssociações com tipos de arquivosAtivação por protocolo (meuapp://...)Novas funcionalidades que usem a UWP:App Universal executada em um App Container

Migração para UWA/App ContainerInicie movendo a UI para XAMLElimine gradualmente o código full trustUma vez migrada - rode em qualquer dispositivo!

Ativação e ComunicaçãoProcessoFull Trust

ProcessoApp Container

Ativa

ção

Ativa

ção

Com

unic

ação

Project Astoria

Motivação“Our goal for the Windows Bridge for Android is to help you reuse your existing Java and C++ Android code to bring experiences to Windows 10 customers, beginning with Windows 10 Mobile.

It is our hope that this will be your first step in adoption of the Universal Windows Platform, enabling you to deliver the richest experiences across all Windows 10 devices – phone, tablet, PC, Xbox and more.”

Requisitos para DesenvolvimentoWindows 8.1/Windows 10/OS X YosemiteJava JDK 1.7+IntelliJ/Android Studio

Processo de ConversãoConfigure ambiente de DesenvolvimentoFaça ajustes no script GradleAdicione arquivo de configuração (MicrosoftServices.xml)Configure serviços específicosAdsAnalyticsCloud MessagingLocation ServicesMaps Service

Adicione APIs “light-up”Live TilesCortana

Android Studio

buildscript { repositories { maven { url uri('https://projectastoriasdk.blob.core.windows.net/gradleplugin') } } dependencies { classpath 'com.microsoft.services:windowsBridgePlugin:1.0' }}apply plugin: 'com.microsoft.services'

Modificações no script Gradle

android { ... productFlavors { windows { } android { } }}...dependencies { // compile 'com.google.android.gms:play-services:6.5.87' androidCompile 'com.google.android.gms:play-services:6.5.87‘ windowsCompile 'com.microsoft.services:interop:6.5.87' ... }

Flavor Microsoft + Ajuste de Dependência

Redirecionamento de PlataformaRecursos da plataforma Android são redirecionados para o Windows

APPX

APK

SUB-SISTEMA “WINDOWS BRIDGE FOR ANDROID”

WINDOWS

• File system• Contacts, photos,…• Sensors• Camera• Hardware accelerated graphics & Direct

X• Networking/sockets• Application lifecycle• Resource management• Background execution model• Security model

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

NotificaçõesSharing File system Câmera

• 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• …

Portal de análise de pacotes APKRealiza análise estática de pacotesTroca íconesIdentifica chamadas a serviços Google Play

Experiência de UsuárioApps criados com o Project Astoriasão apps Windows

Users adquirem apps através da Windows Store

Experiência de UsuárioApps criados com o Project Astoriasão apps Windows

v/sv/sv/s

Project Islandwood

Motivação“What is WinObjC?Windows Bridge for iOS (also referred to as WinObjC) is a Microsoft open source project that provides an Objective-C development environment for Visual Studio/Windows. In addition, WinObjC provides support for iOS API compatibility.”

Crie Universal Windows Apps em Objective-CSuporte à linguagem Objective-C

Compilador e Ambiente de Execução (Runtime)APIs

Compatibilidade com APIs iOSFerramentas

Editor/WorkflowImportação de projetos

FerramentasDesenvolvimento 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

Ferramentas

Projetos Xcode projects importados no Visual StudioConfigurações de projeto compartilhadas, importadas do Xcode

Processo de ConversãoInstale o SDKRode a ferramenta vsimporter.exeDefina projeto inicial na solução (Startup Project)Execute/Teste/AjustePublique!

Demo

CustomizaçãoApp não limitado a tamanhos fixos de tela

Categoria UIApplicationStartupModeOperationMode

Trata form factorappBackButtonPressed

Callback para botão físico Back

Funciona em todos os dispositivos Windows 10

Instale em mais dispositivos

Múltiplos “form-factors”

CPUs ARM, x86 e x64

Windows faz o “trabalho pesado”A plataforma traduz e redireciona conceitos iOS para conceitos Windows

Experiência de usuário Monetization services Plataforma

NotificationsSharing File system CameraIn-App Purchase

Suportado por Windows NotificationsE aparecem no Action Center

StoreKit redirecionado para transaçõesda Windows Store; exige poucas

mudanças no código

Windows 10

Caminhos do FileSystem são mapeados;não é preciso reorganizar

o projeto ou seus arquivos

Compatibilidade de APIs

Suporta um subconjunto de APIs iOSNão aponta para uma versão específica do iOSAPIs 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, …

Exemplo

Candy Crush Saga: Portado para o Windows Phone com poucas alteraçõesNo código

Interop usado para integração nativa• In-App Purchase• Notificações locais

Conclusão

Windows Bridges - ComparaçãoWindows 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 CompletoConversão

AjustesSubmissão para Store

Depende

Windows Bridge for Android (Astoria) Parcial

ConversãoAjustes

Submissão para StoreIDE Android

Windows Bridge for iOS (Islandwood) Completo

ImportaçãoAjustes

Submissão para StoreVisual Studio

LinksIntroducing the Universal Windows Platform Bridgeshttps://dev.windows.com/en-us/uwp-bridges

Universal Windows Platform Bridge for the Android Runtimehttp://aka.ms/projectastoria Project Islandwoodhttp://aka.ms/islandwoodhttps://github.com/Microsoft/WinObjC

Q&A

Visite o espaço Ask the Experts, próximo dos expositores

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

Continue sua capacitação

Microsoft Virtual Academy

http://aka.ms/ch9 http://aka.ms/mva

Evento de encerramento do Microsoft Insights Week 

com Satya Nadella, CEO da Microsoft.Dia 29 de setembro

AMCHAM - Rua da Paz 1431Chácara Santo Antônio - SP

Para se inscrever: http://aka.ms/satyabr