SlideShare una empresa de Scribd logo
Herramientas y 

tips para Android
Pedro Galván - @pedrogk
HackMty - 2015-03-21
#IntelAndroid
Estrategias y Herramientas
para Desarrollar Apps
• Nativa
• Eclipse/Android Studio + Java
• Híbrida
• Cordova (PhoneGap)
• Sencha Touch
• Appgyver
• Cross-platform
• Xamarin
• Appcelerator
–Nunca nadie en la vida
“Así estoy bien”
Apps verdaderamente nativas 

(native^2)
• Código nativo (C, C++, ASM) compilado como
librerías binarias que invocas desde tu app.
• Android NDK (Native Development Kit)
Antes de aventurarnos 

con NDK
• Existen distintas arquitecturas de procesador
(ej.ARM, ARM v7, x86, x86 64, MIPS).
• Por su naturaleza, Android puede soportar distintas
arquitecturas.
• Cada arquitectura tiene su propio “lenguaje
máquina”, así que hay que compilar binarios para
cada arquitectura.
Pasos para Android NDK
1. Instalar Android NDK (https://
developer.android.com/tools/sdk/ndk)
2. Compilar tu código como librería (.so) usando el
comando ndk-build
3. Modificar tu código Java para que invoque tu
librería (usando JNI).
4. Generar apk que contenga tu código Java +
librería.
Proceso a grandes rasgos
C/C++
Code
Makefile ndk-build Mix with Java* GDB debug
Java
SDK APIs
Native Libs
Android* Application
NDK APIs
C/C++
Using JNI
JNI
Android NDK: 

Arquitectura
Android* NDK Application
Dalvik* Application
Java Class
Java Source
Compile with
Javac
Java Class
Java Source
Compile with
Javac
Create C header
with javah -jni
Header file
C/C++ Source
Code
Compile and Link C
Code (ndk-build)
Dynamic
Library (.so)
*.mk
Makefiles
Ejemplo JNI
Uso de javah
“javah” genera los stubs de header de JNI a partir de
las clases compiladas de Java.
Ejemplo: 

javah –d jni –classpath bin/classes com.example.hellojni.HelloJni
Generaría el archivo
com_example_hellojni_HelloJni.h
JNIEXPORT jstring JNICALL
Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv *, jobject);
Makefiles
Android.mk

module settings and declarations
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)
Predefined macro can be:
BUILD_SHARED_LIBRARY, 

BUILD_STATIC_LIBRARY,

PREBUILT_SHARED_LIBRARY, PREBUILT_STATIC_LIBRARY
Other useful variables:
LOCAL_C_INCLUDES := ./headers/
LOCAL_EXPORT_C_INCLUDES := ./headers/
LOCAL_SHARED_LIBRARIES := module_shared
LOCAL_STATIC_LIBRARIES := module_static
Application.mk 

Application-wide settings
APP_PLATFORM := android-15
#~=minSDKVersion
APP_CFLAGS := -O3
APP_STL := gnustl_shared #or other STL if
you need extended C++ support
APP_ABI := all #or all32, all64…
APP_OPTIM := release #default
NDK_TOOCLHAIN_VERSION := 4.8 #4.6 is
default, 4.8 brings perfs, 4.9 also but
less stable
Aprende más de NDK en
http://software.intel.com/es-es/android
–Algunos
“Mejor sí estoy bien así.”
Intel XDK
• IDE para desarrollo de apps híbridas.
• Ventajas:
• Gratuito y disponible para Win, Mac, Linux.
• Juega bien con Cordova y otros frameworks.
• Depuración y testing.
• Capacidades de building/deployment de apps.
https://software.intel.com/en-us/html5/tools
Crosswalk
• Motor de ejecución de apps híbridas basado en
Chromium y Blink.
• El motor se empaqueta como parte de tu app.
• Ya no dependes de qué sistema operativo o versión
tenga el dispositivo donde se ejecuta la app.
• Es software libre.
https://crosswalk-project.org
No olvides probar
Pro tips
• Si pruebas con emulador, utiliza HAXM.
• Mejora significativamente desempeño del emulador.
• Haz testing en la nube con múltiples dispositivos.
• http://appthwack.com
• http://testdroid.com
¡En dispositivos Intel es gratis!
¿Qué sigue con Intel?
RealSense
https://software.intel.com/es-es/realsense
Internet of
Things
https://software.intel.com/es-es/iot
¡Gracias!
• Visita la Zona de Desarrolladores Intel en Español: 

http://software.intel.com/es-es
• Avísame si desarrollas una app NDK.
pedro@sg.com.mx
• Síguenos en Google+ 

(Intel Software en Español)

Más contenido relacionado

PDF
Android NDK y optimizacion para x86
PDF
Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript
PDF
Perfil docente tutor
PDF
Guía de diseño y desarrollo de tesis UCV
PDF
Desarrollo de aplicaciones realmente nativas con NDK
PDF
Lleva tu Android App al Sigiente Nivel
PDF
Introducción Android NDK
 
PDF
Introducción android ndk
Android NDK y optimizacion para x86
Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript
Perfil docente tutor
Guía de diseño y desarrollo de tesis UCV
Desarrollo de aplicaciones realmente nativas con NDK
Lleva tu Android App al Sigiente Nivel
Introducción Android NDK
 
Introducción android ndk

Similar a Intel Android @ HackMTY (20)

PPT
Desarrollo android - 3 - entorno de desarrollo
PDF
Aprendiendo a usar NDK Android Day(castellano)
PPTX
Jordan solis (1)
PPTX
Taller deandroid
PDF
Introducción al Desarrollo de NDK apps | Dev Day 4 Woman | @condesa_sama
PDF
Introducción al desarrollo de aplicaciones para Android
PPTX
FROM lost to the Docker 2020
PPTX
introducción a flutter
ODP
Android Pres3
PDF
FROM lost to the docker
PDF
Introducción a ndk
PPT
Taller de Android
PDF
Webpack desde cero
PPTX
Clase 05 Tipos de accesos y listas de objetos.pptx
PDF
Desarrollo de aplicaciones multiplataforma 1/2
PDF
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
DOCX
Android de la A a la Z - Unidad 3
PDF
Optimización de Aplicaciones Android para X86
PDF
Curso de android
DOCX
Componentes para programar en android
Desarrollo android - 3 - entorno de desarrollo
Aprendiendo a usar NDK Android Day(castellano)
Jordan solis (1)
Taller deandroid
Introducción al Desarrollo de NDK apps | Dev Day 4 Woman | @condesa_sama
Introducción al desarrollo de aplicaciones para Android
FROM lost to the Docker 2020
introducción a flutter
Android Pres3
FROM lost to the docker
Introducción a ndk
Taller de Android
Webpack desde cero
Clase 05 Tipos de accesos y listas de objetos.pptx
Desarrollo de aplicaciones multiplataforma 1/2
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
Android de la A a la Z - Unidad 3
Optimización de Aplicaciones Android para X86
Curso de android
Componentes para programar en android

Más de Software Guru (20)

PDF
Hola Mundo del Internet de las Cosas
PDF
Estructuras de datos avanzadas: Casos de uso reales
PPTX
Building bias-aware environments
PDF
El secreto para ser un desarrollador Senior
PDF
Cómo encontrar el trabajo remoto ideal
PDF
Automatizando ideas con Apache Airflow
PPTX
How thick data can improve big data analysis for business:
PDF
Introducción al machine learning
PDF
Democratizando el uso de CoDi
PDF
Gestionando la felicidad de los equipos con Management 3.0
PDF
Taller: Creación de Componentes Web re-usables con StencilJS
PPTX
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
PDF
¿Qué significa ser un programador en Bitso?
PDF
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
PDF
Pruebas de integración con Docker en Azure DevOps
PDF
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
PDF
Así publicamos las apps de Spotify sin stress
PPTX
Achieving Your Goals: 5 Tips to successfully achieve your goals
PDF
Acciones de comunidades tech en tiempos del Covid19
PDF
De lo operativo a lo estratégico: un modelo de management de diseño
Hola Mundo del Internet de las Cosas
Estructuras de datos avanzadas: Casos de uso reales
Building bias-aware environments
El secreto para ser un desarrollador Senior
Cómo encontrar el trabajo remoto ideal
Automatizando ideas con Apache Airflow
How thick data can improve big data analysis for business:
Introducción al machine learning
Democratizando el uso de CoDi
Gestionando la felicidad de los equipos con Management 3.0
Taller: Creación de Componentes Web re-usables con StencilJS
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
¿Qué significa ser un programador en Bitso?
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Pruebas de integración con Docker en Azure DevOps
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Así publicamos las apps de Spotify sin stress
Achieving Your Goals: 5 Tips to successfully achieve your goals
Acciones de comunidades tech en tiempos del Covid19
De lo operativo a lo estratégico: un modelo de management de diseño

Último (20)

PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
modulo seguimiento 1 para iniciantes del
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PPTX
Curso de generación de energía mediante sistemas solares
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PPT
introduccion a las_web en el 2025_mejoras.ppt
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Influencia-del-uso-de-redes-sociales.pdf
Propuesta BKP servidores con Acronis1.pptx
modulo seguimiento 1 para iniciantes del
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Zarate Quispe Alex aldayir aplicaciones de internet .docx
SAP Transportation Management para LSP, TM140 Col18
TRABAJO DE TECNOLOGIA.pdf...........................
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Curso de generación de energía mediante sistemas solares
Historia Inteligencia Artificial Ana Romero.pptx
introduccion a las_web en el 2025_mejoras.ppt
historia_web de la creacion de un navegador_presentacion.pptx
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Presentación PASANTIAS AuditorioOO..pptx
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Influencia-del-uso-de-redes-sociales.pdf

Intel Android @ HackMTY

  • 1. Herramientas y 
 tips para Android Pedro Galván - @pedrogk HackMty - 2015-03-21 #IntelAndroid
  • 2. Estrategias y Herramientas para Desarrollar Apps • Nativa • Eclipse/Android Studio + Java • Híbrida • Cordova (PhoneGap) • Sencha Touch • Appgyver • Cross-platform • Xamarin • Appcelerator
  • 3. –Nunca nadie en la vida “Así estoy bien”
  • 4. Apps verdaderamente nativas 
 (native^2) • Código nativo (C, C++, ASM) compilado como librerías binarias que invocas desde tu app. • Android NDK (Native Development Kit)
  • 5. Antes de aventurarnos 
 con NDK • Existen distintas arquitecturas de procesador (ej.ARM, ARM v7, x86, x86 64, MIPS). • Por su naturaleza, Android puede soportar distintas arquitecturas. • Cada arquitectura tiene su propio “lenguaje máquina”, así que hay que compilar binarios para cada arquitectura.
  • 6. Pasos para Android NDK 1. Instalar Android NDK (https:// developer.android.com/tools/sdk/ndk) 2. Compilar tu código como librería (.so) usando el comando ndk-build 3. Modificar tu código Java para que invoque tu librería (usando JNI). 4. Generar apk que contenga tu código Java + librería.
  • 7. Proceso a grandes rasgos C/C++ Code Makefile ndk-build Mix with Java* GDB debug Java SDK APIs Native Libs Android* Application NDK APIs C/C++ Using JNI JNI
  • 8. Android NDK: 
 Arquitectura Android* NDK Application Dalvik* Application Java Class Java Source Compile with Javac Java Class Java Source Compile with Javac Create C header with javah -jni Header file C/C++ Source Code Compile and Link C Code (ndk-build) Dynamic Library (.so) *.mk Makefiles
  • 10. Uso de javah “javah” genera los stubs de header de JNI a partir de las clases compiladas de Java. Ejemplo: 
 javah –d jni –classpath bin/classes com.example.hellojni.HelloJni Generaría el archivo com_example_hellojni_HelloJni.h JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv *, jobject);
  • 11. Makefiles Android.mk
 module settings and declarations LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY) Predefined macro can be: BUILD_SHARED_LIBRARY, 
 BUILD_STATIC_LIBRARY,
 PREBUILT_SHARED_LIBRARY, PREBUILT_STATIC_LIBRARY Other useful variables: LOCAL_C_INCLUDES := ./headers/ LOCAL_EXPORT_C_INCLUDES := ./headers/ LOCAL_SHARED_LIBRARIES := module_shared LOCAL_STATIC_LIBRARIES := module_static Application.mk 
 Application-wide settings APP_PLATFORM := android-15 #~=minSDKVersion APP_CFLAGS := -O3 APP_STL := gnustl_shared #or other STL if you need extended C++ support APP_ABI := all #or all32, all64… APP_OPTIM := release #default NDK_TOOCLHAIN_VERSION := 4.8 #4.6 is default, 4.8 brings perfs, 4.9 also but less stable
  • 12. Aprende más de NDK en http://software.intel.com/es-es/android
  • 14. Intel XDK • IDE para desarrollo de apps híbridas. • Ventajas: • Gratuito y disponible para Win, Mac, Linux. • Juega bien con Cordova y otros frameworks. • Depuración y testing. • Capacidades de building/deployment de apps. https://software.intel.com/en-us/html5/tools
  • 15. Crosswalk • Motor de ejecución de apps híbridas basado en Chromium y Blink. • El motor se empaqueta como parte de tu app. • Ya no dependes de qué sistema operativo o versión tenga el dispositivo donde se ejecuta la app. • Es software libre. https://crosswalk-project.org
  • 17. Pro tips • Si pruebas con emulador, utiliza HAXM. • Mejora significativamente desempeño del emulador. • Haz testing en la nube con múltiples dispositivos. • http://appthwack.com • http://testdroid.com ¡En dispositivos Intel es gratis!
  • 21. ¡Gracias! • Visita la Zona de Desarrolladores Intel en Español: 
 http://software.intel.com/es-es • Avísame si desarrollas una app NDK. pedro@sg.com.mx • Síguenos en Google+ 
 (Intel Software en Español)