Motorola Mobility                                    Peter van der Linden                         Evangelista de la tecnol...
MOTODEV App Summit 2011                                                                   Page 21      CÓMO INSTALAR LAS H...
MOTODEV App Summit 2011                             Page 3¿POR QUÉ C/C++ CÓDIGO EN ANDROID?        • Open GL        • Dese...
MOTODEV App Summit 2011                                                  Page 4Limitaciones de NDK C++ •  Originalmente pa...
MOTODEV App Summit 2011                                                                      Page 5Arquitecturas CON SOPOR...
CÓMO INSTALAR LASHERRAMIENTAS MOTOROLA y el logotipo estilizado "M" son marcas de fábrica o marcas registradas de Motorola...
MOTODEV App Summit 2011                                                Page 7Cómo descargar el Native Development Kit • Ve...
MOTODEV App Summit 2011                                                         Page 8Usuarios de Windows •  Descargar e i...
MOTODEV App Summit 2011                                                  Page 9Sugerencias para Windows y MacOS X• No deja...
MOTODEV App Summit 2011                                          Page 10Abra el Native Development Kit• Hay 7 carpetas y v...
MOTODEV App Summit 2011                                                                  Page 11Carpetas NDK • build : 4 c...
MOTODEV App Summit 2011                                                       Page 12Agregar soporte C/C++ a Eclipse•  Ecl...
MOTODEV App Summit 2011                                                  Page 13    •  Hay un plugin para C/C++, como para...
Escriba su código C  MOTOROLA y el logotipo estilizado "M" son marcas de fábrica o marcas registradas de Motorola Trademar...
MOTODEV App Summit 2011                                                      Page 15Enfoque general      • Comience con un...
MOTODEV App Summit 2011                                          Page 16                          Cree el proyecto        ...
MOTODEV App Summit 2011                                                          Page 17Cree la carpeta jni para su proyec...
MOTODEV App Summit 2011                                                           Page 18Agregue dos archivos a la carpeta...
MOTODEV App Summit 2011                                       Page 19Complete la carpeta jnien la carpeta jni Cómo crear a...
MOTODEV App Summit 2011                                  Page 20Cómo crear mkfile en la carpeta jni                       ...
MOTODEV App Summit 2011                                                           Page 21Complete el archivo Android.mk ma...
MOTODEV App Summit 2011                                                                          Page 22Acerca de make    ...
MOTODEV App Summit 2011                                                            Page 23Cree el código C en su carpeta j...
MOTODEV App Summit 2011                                                                   Page 24Código C explicado      C...
Cree su código C MOTOROLA y el logotipo estilizado "M" son marcas de fábrica o marcas registradas de Motorola Trademark Ho...
MOTODEV App Summit 2011                                                       Page 26Cómo llamar entre idiomas    • Androi...
MOTODEV App Summit 2011                                                           Page 27Cree su biblioteca C   •  Traiga ...
MOTODEV App Summit 2011                                                                  Page 28Enfoque general para crear...
MOTODEV App Summit 2011                                                       Page 29CONSTRUYA SU BIBLIOTECA: resumen  •  ...
El lado Java de JNI  MOTOROLA y el logotipo estilizado "M" son marcas de fábrica o marcas registradas de Motorola Trademar...
MOTODEV App Summit 2011                                                Page 31El código Java que llama al código nativo   ...
MOTODEV App Summit 2011                                                 Page 32Agregar la carga de biblioteca   •  Agregue...
MOTODEV App Summit 2011                                                           Page 33Agregar la declaración de la func...
MOTODEV App Summit 2011                                                          Page 34Agregar el llamado a la función na...
MOTODEV App Summit 2011                                                           Page 35Cómo juntamos las piezas package ...
MOTODEV App Summit 2011                       Page 36                          © 2011 Motorola Mobility, Inc.
Resumen
MOTODEV App Summit 2011                                                  Page 38EL COMIENZO Este puede ser un hermoso comi...
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             ¿Desea	  formular	  alguna...
MOTODEV App Summit 2011                                 Page 46                          gracias                          ...
MOTODEV App Summit 2011                                                                                     Page 47Licenci...
MOTODEV App Summit 2011                                                                                                   ...
MOTODEV App Summit 2011                       Page 49                          © 2011 Motorola Mobility, Inc.
Upcoming SlideShare
Loading in …5
×

Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript

1,730 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,730
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
56
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript

  1. 1. Motorola Mobility Peter van der Linden Evangelista de la tecnología Android Plataformas y Servicios del DesarrolladorGráficos cada vez más rápidos. Cómo usarNDK y RenderScript
  2. 2. MOTODEV App Summit 2011 Page 21 CÓMO INSTALAR LAS HERRAMIENTAS2 ESCRIBA SU CÓDIGO3 CREE SU CÓDIGO4 CÓMO LLAMAR A C DESDE JAVA (la JNI)5 RESUMEN. Síntesis, Control de calidad © 2011 Motorola Mobility, © 2011 Motorola Mobility, Inc. Inc. Versión 1.0
  3. 3. MOTODEV App Summit 2011 Page 3¿POR QUÉ C/C++ CÓDIGO EN ANDROID? • Open GL • Desempeño • Puerto © 2011 Motorola Mobility, Inc.
  4. 4. MOTODEV App Summit 2011 Page 4Limitaciones de NDK C++ •  Originalmente para escribir partes críticas de desempeño del código en C •  No necesita una abstracción POO para eso (y Dalvik VM es mucho más rápido, con el compilador JIT desde 2.2) •  El soporte de C++ es algo limitado •  no tiene soporte para las excepciones •  conocidas como bugs en invocaciones de destructor/ constructor estático •  De manera es más probable que el código NDK se escriba en C en lugar de C++ © 2011 Motorola Mobility, Inc.
  5. 5. MOTODEV App Summit 2011 Page 5Arquitecturas CON SOPORTE DE CPU •  NDK soporta dos conjuntos de instrucción ARM: •  ARMv5TE (incluye instrucciones Thumb-1). Este es el destino predeterminado y el código compilado para que esto se ejecute en todos los dispositivos basados en ARM Android. Elija otro destino al cambiar una línea en el archivo Application.mk. •  ARMv7-A (incluye Thumb-2 e instrucciones VFPv3-D16 con soporte opcional para instrucciones NEON/VFPv3- D32). El código compilado para ARMv7-A se ejecutará sólo en dispositivos, tales como Verizon Droid o Motorola XOOM que tienen v7 CPU. El código para NEON se ejecutará sólo en un ARMv7 con soporte para NEON. •  Hay una tercera arquitectura "en los trabajos" (experimental, sin soporte): •  conjunto de instrucciones x86 © 2011 Motorola Mobility, Inc.
  6. 6. CÓMO INSTALAR LASHERRAMIENTAS MOTOROLA y el logotipo estilizado "M" son marcas de fábrica o marcas registradas de Motorola Trademark Holdings, Versión 1.0 LLC. Todas las demás marcas comerciales son propiedad de sus respectivos dueños. © 2011 Motorola Mobility, Inc. Todos los derechos reservados.
  7. 7. MOTODEV App Summit 2011 Page 7Cómo descargar el Native Development Kit • Verifique compatibilidad: XP o Vista, MacOS X 10.5, Ubuntu • Descargue el archivo comprimido de 50 MB o el archivo tar.bz2 desde: http://developer.android.com/sdk/ndk/index.html • Descomprímalo en el lugar que elija; recuerde dónde en $NDK export NDK=~/android-ndk-r5b • Requiere GNU make y GNU awk! Usuarios de Windows: instalar Cygwin 1.7 o superior © 2011 Motorola Mobility, Inc.
  8. 8. MOTODEV App Summit 2011 Page 8Usuarios de Windows •  Descargar e instalar Cygwin 1.7 o superior •  Herramientas de la línea de comando Unix/Linux para los usuarios de Windows http://cygwin.com © 2011 Motorola Mobility, Inc.
  9. 9. MOTODEV App Summit 2011 Page 9Sugerencias para Windows y MacOS X• No dejar espacios en los nombres de rutas. ¡En ningún lugar!• Cygwin sólo instala los paquetes base.• Usted necesita los paquetes de desarrollo. Es más fácil instalar la rama completa de Devel. 1.  Ejecute setup.exe . 2.  Haga clic en la palabra "Default" al lado del nódulo Devel de la raíz. 3.  "Default" cambia a "Install" para el nódulo Devel. 4.  Haga clic en "next” para instalar. Vaya a almorzar mientras se instala. 5.  Deje que cree un icono de la consola cygwin en su computadora. 6.  Escriba "make –v" en la consola de cygwin para © 2011 Motorola Mobility, Inc. verificar que está bien.
  10. 10. MOTODEV App Summit 2011 Page 10Abra el Native Development Kit• Hay 7 carpetas y varias cosas para leer: © 2011 Motorola Mobility, Inc.
  11. 11. MOTODEV App Summit 2011 Page 11Carpetas NDK • build : 4 carpetas con notas de awk & shell, archivos makefiles para construir sus archivos C/C++ • docs: alrededor de 20 archivos de texto (preguntas frecuentes sobre NDK); acceda a ellas en documentation.html • platforms: archivos .h y system library.so p/los distintos niveles IPA • samples: una docena de ejemplos • sources: algunas fuentes para asuntos relacionados con el sistema • tests: notas para probar el mismo NDK. Probablemente aquí por error. • toolchains: cadena de herramientas para cross-compilación © 2011 Motorola Mobility, Inc.
  12. 12. MOTODEV App Summit 2011 Page 12Agregar soporte C/C++ a Eclipse•  Eclipse tiene un plugin para C/C++, como para Android•  Cómo usar Eclipse Help > Install new software•  Escriba http://download.eclipse.org/releases/helios/ en el campo "work with" (o en la versión que use)•  Advertencias habituales sobre proxies de la red en el trabajo (configúrelas en MOTODEV Studio > Preferences > Network Conn.)•  Haga clic en Programming Langs > C/C++ Development Tools © 2011 Motorola Mobility, Inc.
  13. 13. MOTODEV App Summit 2011 Page 13 •  Hay un plugin para C/C++, como para Android •  Cómo usar Eclipse Help > Install new software © 2011 Motorola Mobility, Inc.
  14. 14. Escriba su código C MOTOROLA y el logotipo estilizado "M" son marcas de fábrica o marcas registradas de Motorola Trademark Holdings, LLC. Todas las demás marcas comerciales son propiedad de sus respectivos dueños. © 2011 Motorola Mobility, Inc. Todos los derechos reservados.
  15. 15. MOTODEV App Summit 2011 Page 15Enfoque general • Comience con una aplicación Java Android y agréguele piezas de NDK • Ponga sus fuentes nativas C/C++ en $PROJECT/jni: • Construya su código nativo en las bibliotecas. • Su código Android Java puede recibir estas bibliotecas nativas • El código nativo puede también retornar a Java y acceder a objetos de Java © 2011 Motorola Mobility, Inc.
  16. 16. MOTODEV App Summit 2011 Page 16 Cree el proyecto Android de la manera habitual © 2011 Motorola Mobility, Inc.
  17. 17. MOTODEV App Summit 2011 Page 17Cree la carpeta jni para su proyecto •  Resalte el proyecto Eclipse que usará el código nativo •  El nombre de su paquete se usa para acceder al código nativo, por eso, hágalo corto y simple, ej. "com.greet" p/ fines de capacitación •  File > New > Folder •  póngale el nombre "jni" •  Dentro de esa carpeta jni recién creada, agregaremos •  un archivo makefile •  algunos archivos C © 2011 Motorola Mobility, Inc.
  18. 18. MOTODEV App Summit 2011 Page 18Agregue dos archivos a la carpeta "jni" en suproyecto •  File > New > Other … •  Seleccione "General", luego "file", luego navegue •  Seleccione la carpeta jni c/un nombre de archivo "Android.mk">Finish •  Repita, al crear un archivo "myhello.c", también en la carpeta jni •  Eso le da •  jni/Android.mk •  jni/myhello.c © 2011 Motorola Mobility, Inc.
  19. 19. MOTODEV App Summit 2011 Page 19Complete la carpeta jnien la carpeta jni Cómo crear archivos en su proyecto salud ar © 2011 Motorola Mobility, Inc.
  20. 20. MOTODEV App Summit 2011 Page 20Cómo crear mkfile en la carpeta jni © 2011 Motorola Mobility, Inc.
  21. 21. MOTODEV App Summit 2011 Page 21Complete el archivo Android.mk makefile •  Corrija el archivo jni/Android.mk que recién creó •  Ponga estas palabras mágicas en makefile LOCAL_PATH := $(call my-dir)! include $(CLEAR_VARS)! # numere nuestro archivo fuente y la biblioteca! # desde él! LOCAL_MODULE := hello! LOCAL_SRC_FILES := hello.c! include $(BUILD_SHARED_LIBRARY)! © 2011 Motorola Mobility, Inc.
  22. 22. MOTODEV App Summit 2011 Page 22Acerca de make •  Make fue creado por Stu Feldman en 1977 en los Laboratorios Bell •  En 2003, Dr. Feldman recibió el premio ACM Software System Award por publicar esta herramienta de gran difusión. •  Usted no sabía de mí, pero el conocimiento del software tiene eso que… # cada comando que sigue la línea de dependencia, # por ejemplo, el DESTINO a la izquierda, debe ser indentado por un # caracter de TAB. target: component-to-build <TAB>commands-to-build-it! © 2011 Motorola Mobility, Inc.
  23. 23. MOTODEV App Summit 2011 Page 23Cree el código C en su carpeta jni • Corrija el archivo jni/myhello.c que recién creó • Ponga estas palabras mágicas en el archivo • Usa el objeto JNIEnv p/crear 1 cadena Java desde 1 literal #include <string.h> #include <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 Cuando JVM invoca una función nativa, pasa •  un puntero JNIEnv (estructura que tiene la interfaz a JVM p/C) •  un puntero jobject (el objeto "this") •  cualquier argumento Java declarado por el método Java. Estos tipos vienen de #include <jni.h> (consulte en "platforms") Su método C debe escribirse para esperar estos argumentos El método C se denomina "Java"_classname_activity_methodname #include <string.h> #include <jni.h> jstring Java_com_greet_MyActivity_myCFunction (JNIEnv* env, jobject javaThis) { return (*env)->NewStringUTF(env, "Hello from native code!"); }! •  … parece, pero no es, ¿una pérdida de memoria? © 2011 Motorola Mobility, Inc.
  25. 25. Cree su código C MOTOROLA y el logotipo estilizado "M" son marcas de fábrica o marcas registradas de Motorola Trademark Holdings, LLC. Todas las demás marcas comerciales son propiedad de sus respectivos dueños. © 2011 Motorola Mobility, Inc. Todos los derechos reservados.
  26. 26. MOTODEV App Summit 2011 Page 26Cómo llamar entre idiomas • Android sigue el camino estándar para hablar entre Java yC • JNI: Java Native Interface (Interfaz nativa Java) • Enlace a documentos JNI http://java.sun.com/docs/books/jni/ • Eso incluye un libro completo, un tutorial, ejemplos, etc. © 2011 Motorola Mobility, Inc.
  27. 27. MOTODEV App Summit 2011 Page 27Cree su biblioteca C •  Traiga 1 emulador de terminal y cd en su carpeta jni d/proyecto •  Use la nota "ndk-build" del directorio NDK (un contenido adicional GNU Make) (puede poner $NDK en su ruta, si desea) •  La nota compila su código C, lo convierte en una biblioteca compartida •  Pasa libhello.so a una nueva carpeta de proyecto libs/armeabi © 2011 Motorola Mobility, Inc.
  28. 28. MOTODEV App Summit 2011 Page 28Enfoque general para crear una biblioteca •  Guarde los archivos en Eclipse •  Traiga un emulador de terminal y cd en su carpeta jni del proyecto •  Ejecute el script ndk-build para convertir su código C en un .so •  Ese lib*.so se agregará en su archivo de aplicación .apk •  File > Refresh en Eclipse (para sincronizar con el sistema de archivos)$ cd MYECLIPSEPROJECT/jni!$ $NDK/ndk-build !Compilar thumb : hello <= hello.c!SharedLibrary : libhello.so!Instalar : libhello.so => libs/armeabi/libhello.so! © 2011 Motorola Mobility, Inc.
  29. 29. MOTODEV App Summit 2011 Page 29CONSTRUYA SU BIBLIOTECA: resumen •  Eclipse no construye su código NDK, GNU Make sí •  El plugin C/C++ le da colores de sintaxis y corrección (solamente) •  Ejecute el scrip "ndk-build" después de cada corrección de su código C •  Luego, haga clic en File > Refresh, (F5), para mantener a Eclipse en sincronismo c/ sus archivos nativos © 2011 Motorola Mobility, Inc.
  30. 30. El lado Java de JNI MOTOROLA y el logotipo estilizado "M" son marcas de fábrica o marcas registradas de Motorola Trademark Holdings, LLC. Todas las demás marcas comerciales son propiedad de sus respectivos dueños. © 2011 Motorola Mobility, Inc. Todos los derechos reservados.
  31. 31. MOTODEV App Summit 2011 Page 31El código Java que llama al código nativo •  Comience c/la aplicación básica que le da Eclipsepackage com.greet;!import android.app.Activity;!import android.os.Bundle;!public class MyActivity extends Activity {! /** Llamado cuando la actividad se crea por primeravez. */! @Override! public void onCreate(Bundle savedInstanceState) {! super.onCreate(savedInstanceState);! setContentView(R.layout.main);! }!}! © 2011 Motorola Mobility, Inc.
  32. 32. MOTODEV App Summit 2011 Page 32Agregar la carga de biblioteca •  Agregue la llamada para cargar nuestra biblioteca nativa libhello.so •  el nombre debe coincidir con el nombre de la biblioteca sin "lib" ni ".so“ •  entonces libhello.so es "hello"static {! System.loadLibrary("hello");!}! © 2011 Motorola Mobility, Inc.
  33. 33. MOTODEV App Summit 2011 Page 33Agregar la declaración de la función nativa •  Agregar la declaración del prototipo de la función C •  Del lado de C, tiene dos argumentos explícitos, un envp, un this •  Del lado de Java, esos argumentos son implícitosprivate native String myCFunction(); ! © 2011 Motorola Mobility, Inc.
  34. 34. MOTODEV App Summit 2011 Page 34Agregar el llamado a la función nativa •  Vamos a obtener la cadena de C y mostrarla como una notificación (“toast”). import static android.widget.Toast.*;! import android.widget.Toast;! . . .! String msg = myCFunction();! Toast.makeText(this, msg, LENGTH_LONG).show();! © 2011 Motorola Mobility, Inc.
  35. 35. MOTODEV App Summit 2011 Page 35Cómo juntamos las piezas package com.greet;! Import android.app.Activity;! import android.os.Bundle;! import static android.widget.Toast.*;! import android.widget.Toast;! public class MyActivity extends Activity {! static { System.loadLibrary("hello"); }! private native String myCFunction(); ! @Override! public void onCreate(Bundle savedInstanceState) {! super.onCreate(savedInstanceState);! setContentView(R.layout.main);! String msg = myCFunction();! Toast.makeText(this, msg, LENGTH_LONG).show();! }! }! © 2011 Motorola Mobility, Inc.
  36. 36. MOTODEV App Summit 2011 Page 36 © 2011 Motorola Mobility, Inc.
  37. 37. Resumen
  38. 38. MOTODEV App Summit 2011 Page 38EL COMIENZO Este puede ser un hermoso comienzo de un largo camino • 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•  Nuevo, API de gráficos en 3D de alto desempeño•  Se usó en Froyo para papel tapiz en vivo•  Se usa en Honeycomb para aplicaciones de Books y YouTube•  Honeycomb presenta Renderscript como una API pública•  Para código crítico de desempeño donde las API del marco tradicional Open GL ES no son los suficientemente rápidas. © 2010 Motorola Mobility, Inc. Versión 1.0 © 2011 Motorola Mobility, Inc.
  40. 40. MOTODEV App Summit 2011 Page Página40Ejemplo de Renderscript © 2010 Motorola Mobility, Inc. Versión 1.0 © 2011 Motorola Mobility, Inc.
  41. 41. MOTODEV App Summit 2011 Page Página41App Books y Renderscript © 2010 Motorola Mobility, Inc. Versión 1.0 © 2011 Motorola Mobility, Inc.
  42. 42. MOTODEV App Summit 2011 Page Página42API de Renderscript•  Una API de "computing" para localizar puntos móviles en 3D•  Una API de "rendering" para dibujar texturas sobre los puntos•  Un lenguaje de script basado en C para acceder a esta API•  Única meta: exprimir hasta la última onza de desempeño de los gráficos•  Enfoque: API es una capa delgada sobre las características con soporte de hardware•  http://community.developer.motorola.com/t5/MOTODEV-Blog/ Introduction-to-Renderscript/ba-p/12136 © 2010 Motorola Mobility, Inc. Versión 1.0 © 2011 Motorola Mobility, Inc.
  43. 43. MOTODEV App Summit 2011 Page Página43API de Renderscript•  Android construye elementos que compilan su archivo Renderscript .rs a bytecode intermedio•  Y lo empaquetan dentro de su archivo de aplicación .apk•  En el dispositivo, el bytecode se compila (justo a tiempo – JIT) en el código de máquina que se optimiza para el dispositivo exacto que se está ejecutando•  El código de la máquina se pone en caché para uso futuro•  Así se elimina la necesidad de apuntar a una arquitectura específica durante le proceso de desarrollo. ¡Excelente! © 2011 Motorola Mobility, Inc.
  44. 44. MOTODEV App Summit 2011 Page Página44Ejemplo de archivo .rs (de muestras de Honeycomb) #pragma rs java_package_name(com.android.rs.helloworld)! #include "rs_graphics.rsh" // header de API de gráficos! // gTouchX y gTouchY son variables que se reflejarán para uso! // por la API de java. Podemos usarlas para notificar la nota de! // eventos táctiles.! int gTouchX;! int gTouchY;! // Esto se invoca automáticamente cuando se crean las instrucciones! void init() {! gTouchX = 50.0f;! gTouchY = 50.0f;! }! int root(int launchID) {! // Borrar el color de fondo! rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f);! // Decir al tiempo de ejecución cuál será el color de la fuente! rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);! // Presentarnos al mundo al diseñar un saludo! // en la posición que el usuario tocó la pantalla! rsgDrawText("Hello World!", gTouchX, gTouchY);! // El valor de retorno le dice a RS la frecuencia para rediseñar! // en este caso 20 ms! © 2011 Versión 1.0 Motorola Mobility, Inc. return 20;! }!
  45. 45. MOTODEV App Summit 2011 Page 45 ¿Desea  formular  alguna   pregunta? Brasil - #appsum11br Argentina - #appsum11ar México - #appsum11mx community.developer.motorola.com © 2011 Motorola Mobility, Inc.
  46. 46. MOTODEV App Summit 2011 Page 46 gracias © 2011 Motorola Mobility, Inc.
  47. 47. MOTODEV App Summit 2011 Page 47LicenciasLos ejemplos del código fuente que se exhiben en esta presentación pueden estar bajo la licencia de Apache, Versión 2 según lo siguiente: Copyright © 2010, Android Open Source Project. Todos los derechos reservados, salvo indicación expresa en contrario. Con licencia de Apache, Versión 2.0 (la "Licencia"); no podrá usar este archivo, salvo que cumpla con lo que establece la Licencia. Puede conseguir una copia de la licencia en http://www.apache.org/licenses/LICENSE-2.0. Salvo que lo exija la legislación vigente o se preste conformidad por escrito, el software se distribuye bajo la Licencia "EN EL ESTADO EN QUE SE ENCUENTRA", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, explícitas o implícitas. Consulte la Licencia para ver los permisos y las limitaciones que rigen para la Licencia según el idioma específico. © 2011 Motorola Mobility, Inc.
  48. 48. MOTODEV App Summit 2011 Page 48LicenciasLos ejemplos del código fuente que se muestran en esta presentación pueden estar bajo la licencia BSD, según lo siguiente:Copyright © 2010-2011, Motorola, Inc. Todos los derechos reservados, salvo indicación expresa en contrario.Se permite la redistribución y el uso en forma de fuente o binaria, con o sin modificación, siempre y cuando se cumpla con las siguientes condiciones: Las redistribuciones del código fuente deben conservar el aviso de derechos de autor arriba mencionado, la presente lista de condiciones y el siguiente descargo de responsabilidad. Las redistribuciones en forma binaria deben reproducir el aviso de derechos de autor arriba mencionado, la presente lista de condiciones y el siguiente descargo de responsabilidad en la documentación y/u otros materiales suministrados con la distribución. Ni el nombre de Motorola, Inc. ni los nombres de sus distribuidores pueden usarse para avalar o promover productos que deriven de este software sin previa autorización específica por escrito.EL PRESENTE SOFTWARE SE SUMINISTRA POR LOS TITULARES DE LOS DERECHOS DE AUTOR Y CONTRIBUYENTES EN EL ESTADO "EN QUE SE ENCUENTRA" Y SE RECHAZA TODA RESPONSABILIDAD DE GARANTÍA IMPLÍCITA O EXPLÍCITA, A TÍTULO ENUNCIATIVO, LAS GARANTÍAS IMPLÍCITAS DE COMERCIALIZACIÓN Y DE APTITUD PARA UN PROPÓSITO PARTICULAR. EN NINGÚN CASO PODRÁ EL TITULAR DE LOS DERECHOS DE AUTOR O LOS CONTRIBUYENTES SER RESPONSABLE POR NINGÚN DAÑO Y PERJUICIO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, PUNITIVO, O CONSECUENCIAL (A TÍTULO ENUNCIATIVO DE ABASTECIMIENTO DE BIENES O SERVICIOS DE SUSTITUCIÓN; PÉRDIDA DE USO, DATOS O GANANCIAS O INTERRUPCIÓN DE ACTIVIDADES) INDEPENDIENTEMENTE DE SU ORIGEN Y DE TODA TEORÍA DE RESPONSABILIDAD, YA SEA EN EL CONTRATO, RESPONSABILIDAD ESTRICTA O POR LESIÓN JURÍDICA (INCLUSO NEGLIGENCIA O DE OTRO MODO) QUE SURJA DE ALGUNA MANERA DEL USO DE ESTE SOFTWARE, INCLUSO SI SE ADVIRTIÓ DE LA POSIBILIDAD DE DICHO DAÑO. © 2011 Motorola Mobility, Inc.
  49. 49. MOTODEV App Summit 2011 Page 49 © 2011 Motorola Mobility, Inc.

×