Motorola Mobility                                       Peter van der Linden                               Evangelista da ...
MOTODEV App Summit 2011                                                                       Page 21      INSTALANDO AS F...
MOTODEV App Summit 2011                              Page 3POR QUE CÓDIGOS C/C++ NO ANDROID?        • Open GL        • Des...
MOTODEV App Summit 2011                                                Page 4Limitações C++ do NDK • Originalmente para es...
MOTODEV App Summit 2011                                                                   Page 5Arquiteturas de CPU SUPORT...
INSTALANDO AS FERRAMENTAS MOTOROLA e o logotipo estilizado M são marcas comerciais ou marcas registradas da Motorola Trade...
MOTODEV App Summit 2011                                                Page 7Baixando o Native Development Kit • Verifique...
MOTODEV App Summit 2011                                              Page 8Usuários do Windows • Baixe e instale o Cygwin ...
MOTODEV App Summit 2011                                                Page 9Dicas para Windows e MacOS X• Não use nomes d...
MOTODEV App Summit 2011                                                Page 10Descompacte o Native Development Kit• Contem...
MOTODEV App Summit 2011                                                                   Page 11Pastas NDK • build: 4 pas...
MOTODEV App Summit 2011                                                           Page 12Adicionar suporte de C/C++ ao Ecl...
MOTODEV App Summit 2011                                                 Page 13    • Há um plugin para C/C++, assim como p...
Escreva seu código C MOTOROLA e o logotipo estilizado M são marcas comerciais ou marcas registradas da Motorola Trademark ...
MOTODEV App Summit 2011                                                           Page 15Abordagem geral      •Comece com ...
MOTODEV App Summit 2011                                         Page 16                          Criar o projeto Android  ...
MOTODEV App Summit 2011                                                        Page 17Crie a pasta jni para seu projeto   ...
MOTODEV App Summit 2011                                                        Page 18Adicione dois arquivos à pasta jni e...
MOTODEV App Summit 2011                                   Page 19Preencha arquivos na pasta jni Criando a pasta jni em seu...
MOTODEV App Summit 2011                           Page 20Criando mkfile na pasta jni                              © 2011 M...
MOTODEV App Summit 2011                                                      Page 21Preencha o makefile Android.mk       •...
MOTODEV App Summit 2011                                                                 Page 22Desvio em relação ao make  ...
MOTODEV App Summit 2011                                                              Page 23Crie o código C na pasta jni  ...
MOTODEV App Summit 2011                                                                         Page 24Código C explicado ...
Crie um código C MOTOROLA e o logotipo estilizado M são marcas comerciais ou marcas registradas da Motorola Trademark Hold...
MOTODEV App Summit 2011                                                    Page 26Chamadas entre linguagens    •O Android ...
MOTODEV App Summit 2011                                                                  Page 27Crie uma biblioteca C  • A...
MOTODEV App Summit 2011                                                                      Page 28Abordagem geral para a...
MOTODEV App Summit 2011                                                     Page 29CRIE SUA BIBLIOTECA: resumo • O Eclipse...
O Lado Java do JNI MOTOROLA e o logotipo estilizado M são marcas comerciais ou marcas registradas da Motorola Trademark Ho...
MOTODEV App Summit 2011                                                          Page 31Código Java que chama para o códig...
MOTODEV App Summit 2011                                               Page 32Adicione o carregamento da biblioteca  • Adic...
MOTODEV App Summit 2011                                                          Page 33Adicione a declaração da função na...
MOTODEV App Summit 2011                                                          Page 34Adicione a chamada para a função n...
MOTODEV App Summit 2011                                                        Page 35Juntando tudo package com.greet     ...
MOTODEV App Summit 2011                        Page 36                          © 2011 Motorola Mobility, Inc.
Resumo
MOTODEV App Summit 2011                                                   Page 38O COMEÇO Este pode ser um belo começo par...
MOTODEV App Summit 2011                                                                Page                               ...
MOTODEV App Summit 2011                                               Page                                                ...
MOTODEV App Summit 2011                                               Page                                                ...
MOTODEV App Summit 2011                                                                     Page                          ...
MOTODEV App Summit 2011                                                        Page                                       ...
MOTODEV App Summit 2011                                                                     Page                          ...
MOTODEV App Summit 2011                                                        Page 45                            Pergunta...
MOTODEV App Summit 2011                                   Page 46                          obrigado                       ...
MOTODEV App Summit 2011                                                                                     Page 47Licença...
MOTODEV App Summit 2011                                                                                                   ...
Upcoming SlideShare
Loading in...5
×

Gráficos cada vez mais rápidos utilização de NDK e Renderscript

1,336

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,336
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
69
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Gráficos cada vez mais rápidos utilização de NDK e Renderscript

  1. 1. Motorola Mobility Peter van der Linden Evangelista da tecnologia Android Plataformas e serviços para desenvolvedores Brasil - #appsum11brGráficos cada vez mais rápidos:utilização de NDK e Renderscript
  2. 2. MOTODEV App Summit 2011 Page 21 INSTALANDO AS FERRAMENTAS2 ESCREVA UM CÓDIGO C3 CRIE UM CÓDIGO C4 CHAMANDO C A PARTIR DE JAVA (O JNI)5 RESUMO - Encerrando, Controle de qualidade © 2011 Motorola Mobility, © 2011Versão 1.0 Inc. Motorola Mobility, Inc.
  3. 3. MOTODEV App Summit 2011 Page 3POR QUE CÓDIGOS C/C++ NO ANDROID? • Open GL • Desempenho • Portar! © 2011 Motorola Mobility, Inc.
  4. 4. MOTODEV App Summit 2011 Page 4Limitações C++ do NDK • Originalmente para escrever partes de desempenho crítico de código em C • Você não precisa de abstração OOP para isso (e a Dalvik VM é bastante rápida, com a compilação JIT desde 2.2) • O suporte de C++ é um tanto restrito • exceções não são suportadas • bugs conhecidos em invocações do construtor/destrutor estáticas • Assim, é mais provável que o código NDK seja escrito em C do que em C++ © 2011 Motorola Mobility, Inc.
  5. 5. MOTODEV App Summit 2011 Page 5Arquiteturas de CPU SUPORTADADAS • o NDK suporta dois conjuntos de instruções ARM: • ARMv5TE (inclui instruções Thumb-1). Esse é o target padrão e o código compilado para ele será executado em todos os dispositivos com Android baseado em ARM. Escolha outro target, mudando uma linha no makefile do Application.mk. • O ARMv7-A (inclui instruções Thumb-2 e VFPv3-D16, com suporte opcional para instruções NEON/VFPv3-D32). O código compilado para ARMv7-A funcionará apenas em dispositivos como o Verizon Droid ou Motorola XOOM que possuem uma CPU v7. O código para NEON só funcionará em um ARMv7 com suporte para NEON. • Há uma terceira arquitetura "em construção" (experimental, sem suporte): • conjunto de instruções x86 © 2011 Motorola Mobility, Inc.
  6. 6. INSTALANDO AS FERRAMENTAS MOTOROLA e o logotipo estilizado M são marcas comerciais ou marcas registradas da Motorola Trademark Holdings, Versão 1.0 LLC. Todas as outras marcas comerciais são propriedade dos seus respectivos proprietários. © 2011 Motorola Mobility, Inc. Todos os direitos reservados.
  7. 7. MOTODEV App Summit 2011 Page 7Baixando o Native Development Kit • Verifique a compatibilidade: XP ou Vista, MacOS X 10.5, Ubuntu • Baixe o arquivo zip de 50 MB ou tar.bz2 em: http://developer.android.com/sdk/ndk/index.html • Faça a descompactação dele em qualquer lugar, lembre-se de onde em $NDK export NDK=~/android-ndk-r5b • Requer o GNU make e GNU awk! Usuários do Windows - instalar o Cygwin 1.7 ou mais recente © 2011 Motorola Mobility, Inc.
  8. 8. MOTODEV App Summit 2011 Page 8Usuários do Windows • Baixe e instale o Cygwin 1.7 ou mais recente • Ferramentas de linha de comando Unix/Linux para usuários do Windows http://cygwin.com © 2011 Motorola Mobility, Inc.
  9. 9. MOTODEV App Summit 2011 Page 9Dicas para Windows e MacOS X• Não use nomes de caminhos com espaços entre eles! Em qualquer lugar!• O Cygwin instala somente os pacotes básicos.• Você precisa dos pacotes de desenvolvimento. É simples instalar todo o branch “Devel”. 1. Execute o setup.exe. 2. Clique na palavra “Default” (Padrão) próxima ao nó da raiz “Devel”. 3. “Default” altera para “Install” para o nó Devel. 4. Clique em “next” (Avançar) para instalar. Vá almoçar enquanto a instalação é realizada. 5. Deixe-o criar um ícone do console cygwin na sua área de trabalho. 6. Digite "make -v" no console cygwin para verificar se © 2011 Motorola Mobility, Inc. está tudo OK.
  10. 10. MOTODEV App Summit 2011 Page 10Descompacte o Native Development Kit• Contem sete pastas, e uma série de coisas para ler: © 2011 Motorola Mobility, Inc.
  11. 11. MOTODEV App Summit 2011 Page 11Pastas NDK • build: 4 pastas de scripts awk e shell, makefiles para compilar os seus arquivos C/C++ • docs: cerca de 20 arquivos de texto (Perguntas frequentes sobre o NDK); acesse pelo navegador o arquivo documentation.html • plataforms: .h e arquivos de sistema library.so para os vários níveis de API • samples: uma série de exemplos de funcionamento • sources: algumas fontes para os elementos relacionadas ao sistema • tests: scripts para testar o próprio NDK. Provavelmente aqui por engano. • toolchains: toolchains de cross-compiler © 2011 Motorola Mobility, Inc.
  12. 12. MOTODEV App Summit 2011 Page 12Adicionar suporte de C/C++ ao Eclipse• O Eclipse tem um plug-in para C/C++, assim como para o Android• Consiga isso usando o Eclipse Help (Ajuda) > Install new software (Instalar novo software)• Digite http://download.eclipse.org/releases/helios/ no campo “work with” (trabalhar com) (ou qualquer versão que você usa)• Advertências comuns sobre proxies de rede no trabalho (defina-os em MOTODEV Studio > Preferences (Preferências) > Network Conn. (Conexão de rede)• Clique em Programming Langs (Linguagens de programação) > C/C++ Development Tools (Ferramentas de desenvolvimento) © 2011 Motorola Mobility, Inc.
  13. 13. MOTODEV App Summit 2011 Page 13 • Há um plugin para C/C++, assim como para o Android • Consiga isso usando o Eclipse Help (Ajuda)> Install new software (Instalar novo software) © 2011 Motorola Mobility, Inc.
  14. 14. Escreva seu código C MOTOROLA e o logotipo estilizado M são marcas comerciais ou marcas registradas da Motorola Trademark Holdings, LLC. Todas as outras marcas comerciais são propriedade dos seus respectivos proprietários. © 2011 Motorola Mobility, Inc. Todos os direitos reservados.
  15. 15. MOTODEV App Summit 2011 Page 15Abordagem geral •Comece com um aplicativo Android em Java, e adicione pedaços NDK a ele. •Coloque sua fontes C/C++ nativas em $PROJECT/jni: •Crie o seu código nativo em bibliotecas (libraries). •Seu código Java do Android pode chamar código nessas bibliotecas nativas. •O código nativo também pode chamar de volta em Java, e acesso objetos Java. © 2011 Motorola Mobility, Inc.
  16. 16. MOTODEV App Summit 2011 Page 16 Criar o projeto Android da maneira usual © 2011 Motorola Mobility, Inc.
  17. 17. MOTODEV App Summit 2011 Page 17Crie a pasta jni para seu projeto • Destaque o projeto Eclipse que usará o código nativo • O nome do seu pacote é usado para acessar o código nativo, então mantenha-o curto e simples, por exemplo, "com.greet" para propósitos de treinamento • File (Arquivo) > New (Novo) > Folder (Pasta) • atribua-lhe o nome de "jni" • Dentro dessa pasta jni recém-criada, nós adicionaremos • um makefile • alguns arquivos C © 2011 Motorola Mobility, Inc.
  18. 18. MOTODEV App Summit 2011 Page 18Adicione dois arquivos à pasta jni em seu projeto • File (Arquivo) > New (Novo) > Other (Outro) ... • Selecione General (Geral), File (Arquivo) e, em seguida, procurar • Escolha a pasta jni, com o nome de "Android.mk“ > Finish (Finalizar) • Repita, criando um arquivo "myhello.c", também na pasta jni • Isso oferece a você • jni/Android.mk • jni/myhello.c © 2011 Motorola Mobility, Inc.
  19. 19. MOTODEV App Summit 2011 Page 19Preencha arquivos na pasta jni Criando a pasta jni em seu projeto saud ar © 2011 Motorola Mobility, Inc.
  20. 20. MOTODEV App Summit 2011 Page 20Criando mkfile na pasta jni © 2011 Motorola Mobility, Inc.
  21. 21. MOTODEV App Summit 2011 Page 21Preencha o makefile Android.mk • Edite o arquivo jni/Android.mk que você acabou de criar • Coloque essas palavras mágicas no makefile LOCAL_PATH := $ l my-d r (cal i) i lude $ nc (CLEAR_VARS) # nosso arqu vo fon e e a b b io i t i l teca c iada r # a par i le t rde LOCAL_M O D ULE : he lo = l LOCAL_SRC_FILES : he lo c = l . i lude $ nc (BUILD_SHARE D_LIBRARY) © 2011 Motorola Mobility, Inc.
  22. 22. MOTODEV App Summit 2011 Page 22Desvio em relação ao make • O make foi criado por Stu Feldman em 1977, no Bell Labs • Em 2003, o Dr. Feldman recebeu o prêmio ACM Software System Award pela criação dessa ferramenta amplamente difundida. • Você não ficou sabendo disso por mim, mas a tradição de software diz que... # Cada comando que segue a linha de dependência, # ou seja, o TARGET à esquerda, deve ser indentado por um # caracter TAB. target: componente-a-construir <TAB>comandos-para-construi-lo © 2011 Motorola Mobility, Inc.
  23. 23. MOTODEV App Summit 2011 Page 23Crie o código C na pasta jni •Edite o arquivo jni/myhello.c que você acabou de criar •Coloque essas palavras mágicas no arquivo C •Usa o objeto JNIEnv para criar uma string de Java a partir de um literal #incluir <string.h> #incluir <jni.h> jstring Java_com_greet_MyActivity_myCFunction (JNIEnv* env, jobject javaThis) { return (*env)->NewStringUTF(env, "Hello from native code!"); } © 2011 Motorola Mobility, Inc.
  24. 24. MOTODEV App Summit 2011 Page 24Código C explicado Quando o JVM invoca uma função nativa, ele passa • um indicador JNIEnv (estrutura que tem a interface da JVM para C) • um ponteiro jobject (o objeto "this") • quaisquer argumentos de Java declarados pelo método Java. Esses tipos vêm de #include <jni.h> (veja em "plataforms") Seu método de C deve ser escrito para esperar esses argumentos O método C é chamado de "Java“_classname_activity_methodname #incluir <string.h> #incluir <jni.h> Jstring Java_com_greet_MyActivity_myCFunction (JNIEnv* env, jobject javaThis) { return (*env)->NewStringUTF(env, "Hello from native code!"); } • ... parece, mas não é, um vazamento de memória? © 2011 Motorola Mobility, Inc.
  25. 25. Crie um código C MOTOROLA e o logotipo estilizado M são marcas comerciais ou marcas registradas da Motorola Trademark Holdings, LLC. Todas as outras marcas comerciais são propriedade dos seus respectivos proprietários. © 2011 Motorola Mobility, Inc. Todos os direitos reservados.
  26. 26. MOTODEV App Summit 2011 Page 26Chamadas entre linguagens •O Android segue o caminho normal para falar entre Java e C •JNI – Java Native Interface •Link para documentação do JNI http://java.sun.com/docs/books/jni/ •Isso inclui um livro completo, um tutorial, exemplos, etc © 2011 Motorola Mobility, Inc.
  27. 27. MOTODEV App Summit 2011 Page 27Crie uma biblioteca C • Abra uma janela de terminal, e cd para a pasta do projeto jni • Use o script "NDK-build" do diretório NDK (apenas um invólucro GNU Make) (pode colocar $NDK em seu caminho, se você quiser) • O script compila o código C, o transforma em uma biblioteca compartilhada (“shared library”) • Move o libhello.so para um novo projeto de pasta libs/armeabi © 2011 Motorola Mobility, Inc.
  28. 28. MOTODEV App Summit 2011 Page 28Abordagem geral para a construção de uma biblioteca • Salve arquivos no Eclipse • Abra uma janela de terminal e cd na pasta jni do seu projeto • Execute o script NDK-build para transformar o seu código em C em um arquivo .so • Essa lib *. so será adicionada no arquivo do aplicativo APK. • File (Arquivo) > Refresh (Atualizar) no Eclipse (para sincronizar com o sistema de arquivos) $ cd MYECLIPSEPROJECT/ i jn $ $NDK/ndk-bu ld i Co mpi e thumb : he l <= helo l lo l .c SharedL ibrary :l bhe l i lo.so Ins l tal :l b l .so => l /armeab /ibhe lo i he lo ibs il l .so © 2011 Motorola Mobility, Inc.
  29. 29. MOTODEV App Summit 2011 Page 29CRIE SUA BIBLIOTECA: resumo • O Eclipse não compila seu código NDK, o GNU Make sim • O plugin C/C++ dá-lhe as cores de sintaxe e de edição (apenas) • Execute o "NDK-build " script após cada edição de seu código C • Depois clique em File > Refresh, (F5), para manter o Eclipse em sincronia com seus arquivos nativos © 2011 Motorola Mobility, Inc.
  30. 30. O Lado Java do JNI MOTOROLA e o logotipo estilizado M são marcas comerciais ou marcas registradas da Motorola Trademark Holdings, LLC. Todas as outras marcas comerciais são propriedade dos seus respectivos proprietários. © 2011 Motorola Mobility, Inc. Todos os direitos reservados.
  31. 31. MOTODEV App Summit 2011 Page 31Código Java que chama para o código nativo • Comece com o aplicativo de base criado no Eclipsepackage com.greet;impor andro t id.app.Actvt ; iiyimpor andro t id.os.Bund ; lepub ic cl l ass MyAct i y ex ivt tends Ac ivt { t iy / * Chamado quando a Actvt é cr * iiy iada pe p i ra vez. * la rmei / @ Over ide r pub i vo onCreate lc id (Bund savedIns le tanceSta e) { t super .onCreate(savedInstanceSta ; te) setContentV iew(R.layout in) .ma ; }} © 2011 Motorola Mobility, Inc.
  32. 32. MOTODEV App Summit 2011 Page 32Adicione o carregamento da biblioteca • Adicione a chamada para carregar a nossa biblioteca nativa libhello.so • o nome deve corresponder ao nome da biblioteca sem “lib” e “.so” • assim libhello.so é "hello"s t c{ ta i Sys em. t loadLibrary "he l " ; ( lo)} © 2011 Motorola Mobility, Inc.
  33. 33. MOTODEV App Summit 2011 Page 33Adicione a declaração da função nativa • Adicione a declaração de protótipo da função nativa • No lado C, ela tem dois argumentos explícitos, um envp, um this • Mas no lado Java, esses argumentos estão implícitos p i te na i Str myCFunct ) r va t ve ing ion( ; © 2011 Motorola Mobility, Inc.
  34. 34. MOTODEV App Summit 2011 Page 34Adicione a chamada para a função nativa • Nós pegaremos a string de C e exibiremos alertas para o usuário (usando um “toast”).impor s t c andro . t ta i id widget Toast * . .;impor andro t id.widget.Toas ; t ... Sr t ing msg = myCFunct ) ion( ; Toas . t makeText th msg, LEN GTH_LO N G).show() ( is, ; © 2011 Motorola Mobility, Inc.
  35. 35. MOTODEV App Summit 2011 Page 35Juntando tudo package com.greet ; impor andro .app.Ac ivt ; t id t iy impor andro .os Bund ; t id . le impor s i andro d.w t tatc i idget Toast * . .; impor andro .w t id idget.Toas ; t pub ic c l lass MyAct v ty ex ii tends Ac ivt { t iy s t c { Sys ta i tem.loadLibrary " l " ;} ( he lo ) pr te natve S r iva i t ing myCFunct ) ion( ; @ Override pub i vo onCreate(Bund savedIns l c id le tanceSta { te) super.onCreate(savedInstanceState); setConten iew(R. tV layout in) .ma ; Sr t ing msg = myCFunct ) ion( ; Toas .makeText th ,msg, LENGT H_LON G).show() t ( is ; } } © 2011 Motorola Mobility, Inc.
  36. 36. MOTODEV App Summit 2011 Page 36 © 2011 Motorola Mobility, Inc.
  37. 37. Resumo
  38. 38. MOTODEV App Summit 2011 Page 38O COMEÇO Este pode ser um belo começo para um longo caminho • http://groups.google.com/group/android-ndk/topics • http://java.sun.com/docs/books/jni/ • http://developer.android.com/sdk/ndk/index.html © 2011 Motorola Mobility, Inc.
  39. 39. MOTODEV App Summit 2011 Page Página39Renderscript• Nova API com gráficos 3D de alto desempenho• Foi usada no Froyo para papéis de parede animados• É usada no Honeycomb para as apps Books e YouTube• O Honeycomb apresenta o Renderscript como uma API pública• Para executar códigos críticos em que as APIs de estrutura tradicionais Open GL ES não são rápidas o suficiente! © 2010 Motorola Mobility, Inc. Motorola Mobility, Inc. © 2011 Versão 1.0
  40. 40. MOTODEV App Summit 2011 Page Página40Exemplo de renderscript © 2010 Motorola Mobility, Inc. Motorola Mobility, Inc. © 2011 Versão 1.0
  41. 41. MOTODEV App Summit 2011 Page Página41App Books e Renderscript © 2010 Motorola Mobility, Inc. Motorola Mobility, Inc. © 2011 Versão 1.0
  42. 42. MOTODEV App Summit 2011 Page Página42API do Renderscript• Uma API de "computação" para localizar pontos de movimento em 3D• Um API de "renderização" para desenhar texturas sobre os pontos• Uma linguagem de script baseada em C para acessar essa API• Único objetivo: espremer até a última gota de desempenho gráfico!• Abordagem: a API é uma fina camada sobre os recursos que são suportados pelo hardware• http://community.developer.motorola.com/t5/MOTODEV- Blog/Introduction-to-Renderscript/ba-p/12136 © 2010 Motorola Mobility, Inc. Motorola Mobility, Inc. © 2011 Versão 1.0
  43. 43. MOTODEV App Summit 2011 Page Página43API do Renderscript• As ferramentas de construção do Android compilam seu arquivo .rs do Renderscript para bytecode intermediário.• e o empacota no arquivo .apk do seu aplicativo.• No dispositivo, o bytecode é compilado (durante a execução - JIT) para código de máquina, que é otimizado para o dispositivo exato em que está sendo executado• O código de máquina é armazenado em cache para uso futuro• Isso elimina a necessidade de destinar uma arquitetura específica durante o processo de desenvolvimento. Excelente! © 2011 Motorola Mobility, Inc.
  44. 44. MOTODEV App Summit 2011 Page Página44Exemplo de arquivo .rs (a partir de exemplos doHoneycomb) #pragma rsjava_package_name(com.andro . s l id r .he lowor ) ld # lude " inc rs_graph cs rsh"/ Headers com APIs g f cas i . / rá i / gTouchX e gTouchY são var / iáve que serão obt is idas a ravés de t / re lexão para o uso pe API java Podemos usá- para no ii r / f la . las tf ca / o sc ip de eventos de toque. / r t i t gTouchX; n i t gTouchY; n / Esse éi / nvocado automaticamente quando o scr t é c i ip rado vo int ){ id i( gTouchX = 50 ; .0f gTouchY = 50 ; .0f } i troo ( n t intlaunchID) { / Apaga a cor do p / lano fundo rsgClearCo (0.0 , 0 f 0.0 , 0 f ; lor f .0 , f .0 ) / In r o run ime que a cor da fonte deve t / fo ma t er rsgFontCo r .0f 1 f 1 0f 1 f ; lo (1 , .0 , . , .0 ) //Nos apresenta ao mundo esboçando uma saudação / no loca em que o usuár o tocou a te / l i la rsgDrawText "He lo Wor d! , gTouchX, gTouchY) ( l l " ; / O va or de re / l tornoin r ao RS aprox mada mente quantas vezes fo ma i / redesenhar nesse caso 20 ms / ; Versão 1.0 © 2011 Motorola Mobility, Inc. re rn 20; tu }
  45. 45. MOTODEV App Summit 2011 Page 45 Perguntas? @motodev @motodevbr Brasil - #appsum11br Argentina - #appsum11ar México - #appsum11mx Atendimento on line Terca-feira, 2 de junho 14 hs Sao Paulo, Buenos Aires 12 hs Cidade do Mexico © 2011 Motorola Mobility, Inc.
  46. 46. MOTODEV App Summit 2011 Page 46 obrigado © 2011 Motorola Mobility, Inc.
  47. 47. MOTODEV App Summit 2011 Page 47LicençasOs exemplos de código fonte exibidos nessa apresentação podem ser licenciados sob a Licença Apache, Versão 2 da seguinte maneira: Copyright © 2010, Android Open Source Project. Todos os direitos reservados, exceto onde expressamente indicado o contrário. Licenciado sob a Licença Apache, Versão 2.0 (a "Licença"); você não pode usar esse arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em http://www.apache.org/licenses/LICENSE-2.0. A menos que exigido pela lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído "NA CONDIÇÃO QUE SE ENCONTRA", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam expressas ou implícitas. Consulte a Licença para o idioma específico que governam as permissões e limitações sob a Licença. © 2011 Motorola Mobility, Inc.
  48. 48. MOTODEV App Summit 2011 Page 48LicençasOs exemplos de código fonte exibidos nessa apresentação podem ser licenciados sob a Licença BSD, da seguinte maneira:Copyright © 2010-2011, Motorola, Inc. Todos os direitos reservados exceto quando expressamente indicado.A redistribuição e utilização em formas de fonte e binário, com ou sem modificação, são permitidas de acordo com as seguintes condições: As redistribuições de código fonte devem manter o aviso de direitos autorais acima, esta lista de condições e a seguinte isenção de responsabilidade. As redistribuições em formulários binários devem reproduzir o aviso de copyright acima, esta lista de condições e a seguinte isenção de responsabilidade na documentação e/ou outros materiais fornecidos com a distribuição. O nome da Motorola, Inc. e os nomes de seus colaboradores não podem ser usados para endossar ou promover produtos derivados desse software sem permissão prévia por escrito.ESTE SOFTWARE É FORNECIDO PELOS DETENTORES E COLABORADORES "COMO TAL" E QUALQUER GARANTIA EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO LIMITADO A, AS GARANTIAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO PARA UMA FINALIDADE ESPECÍFICA. EM NENHUM CASO A TITULAR DO DIREITO OU CONTRIBUINTES DEVEM SER RESPONSÁVEIS POR QUAISQUER DANOS DIRETOS, INDIRETOS, ESPECIAIS, EXEMPLARES OU CONSEQUENTES (INCLUINDO, MAS NÃO SE LIMITANDO À AQUISIÇÃO DE BENS OU SERVIÇOS, PERDA DE USO, DADOS OU LUCROS; OU INTERRUPÇÃO DE NEGÓCIOS) CAUSADOS E SOB QUALQUER TEORIA DE RESPONSABILIDADE, SEJA EM CONTRATO, RESPONSABILIDADE OBJETIVA OU (INCLUINDO NEGLIGÊNCIA OU NÃO) DECORRENTE DE QUALQUER MANEIRA DO USO DO SOFTWARE, MESMO QUE DA POSSIBILIDADE DE TAIS DANOS. © 2011 Motorola Mobility, Inc.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×