Este documento presenta una introducción al desarrollo de aplicaciones nativas para Android usando el Native Development Kit (NDK). Explica qué es una aplicación nativa, cómo funciona el NDK, la interfaz Java Native (JNI) y cómo configurar compilaciones. También cubre temas como las diferentes arquitecturas de procesador, la compatibilidad con C/C++ y herramientas para probar aplicaciones en dispositivos reales en la nube.
Desarrollo de aplicaciones realmente nativas con NDKSoftware Guru
Native Development Kit (NDK) es una tecnología que permite construir aplicaciones móviles Android que interactúen con librerías programadas en lenguajes como C/C++ para obtener un alto desempeño. En esta sesión técnica mostraremos qué es NDK, en qué casos tiene sentido utilizarlo y cómo se desarrolla una aplicación de este tipo.
Desarrollo de aplicaciones realmente nativas con NDKSoftware Guru
Native Development Kit (NDK) es una tecnología que permite construir aplicaciones móviles Android que interactúen con librerías programadas en lenguajes como C/C++ para obtener un alto desempeño. En esta sesión técnica mostraremos qué es NDK, en qué casos tiene sentido utilizarlo y cómo se desarrolla una aplicación de este tipo.
Antes de enviar nuestra aplicación a publicar debemos revisar el archivo de manifiesto, generar y validar el paquete entre otras acciones. En esta sesión repasaremos todos los pasos necesarios a realizar antes de publicar la aplicación, repasaremos formas de monetización así como incluir analíticas y por supuesto publicaremos una aplicación universal paso a paso
Desde Visual Studio contamos con una gran cantidad de herramientas destinadas al desarrollo de aplicaciones universales. Podemos analizar paquetes, desplegar paquetes, medir el rendimiento de la aplicación y contamos con versátiles emuladores entre otras herramientas. En esta sesión repasaremos todas las herramientas incluidas con el SDK de desarrollo así como herramientas de terceros que nos incluyen librerías auxiliares y nuevos controles.
Prezentacja przedstawia ofertę znanych producentów obuwia. Wszystkie prezentowane produkty znaleźć można w sieciach sklepów marki Filippo, będąca znaną i ciesząca się zaufaniem w oczach klientów marką. Oferta skierowana jest do kobiet, mężczyzn oraz dzieci. Dodatkowo w sprzedaży są torebki oraz akcesoria obuwnicze. Cały asortyment sklepu zobaczyć można na stronie sklepu: http://www.filippo.pl/
Evaluación de la eficacia de Metarhizium Anisopliae y de Beauveria Bassiana sobre el control de picudos asociados
al cultivo de vid, utilizando activadores de patogenicidad
Digital strategy Insurance E-Broking ScotlandDave Hazlehurst
Slidedeck from my presentation at the e-Broking Insurance exhibition in Scotland on the 21st November on the 4 pillars for Digital strategy and what they need to do win online. Includes info on Google Hummingbird, SEO, Socials Media, Content Marketing, CRO, Experience
Documation
Le rendez-vous de la gestion de l'information et du document numérique en entreprise | ECM | GED | Management de l'Information Stratégique
http://www.documation.fr/
Recherche, collecte, création, organisation, diffusion, partage, évaluation
Rendez-vous les 21 et 22 mars 2012 au CNIT de Paris La Défense pour LE salon français de la gestion de l’information et des documents
Linkedin Training - Advancment Your Profile.Ali Tavanayan
(The LinkedIn section started from Slide 30)
This is a presentation for new comers to Canada on 2 main topics:
1- How to think about finding a job in Canada. (Use of Social Networking)
2- How to setup and advancement their LinkedIn account to get a found a job easier.
اسلاید های سخنرانی آموزش لینکداین در کتابخانه نورت ونکوور توسط علیرضا توانایان
اجرا تحت مدیریت مرکز مالتی کالچرال نورت ونکوور - خانم الهام سلطانی
En esta sesión revisaremos herramientas y prácticas para construir apps Android que tengan un gran desempeño.
Revisaremos:
Cómo generar binarios optimizados para distintas arquitecturas de procesador.
Introducción a técnicas de optimización de la performance (esto incluye optimización por flags del compilador, y uso de tools como Graphics Performance Analyzer Tool para encontrar cuellos de botella en el código, no es una tool sólo para gráficos)
Intel XDK: Desarrollo de aplicaciones HTML5 híbridas.
Testing en la nube: una alternativa para verificar el comportamiento de tu app en múltiples dispositivos reales.
Antes de enviar nuestra aplicación a publicar debemos revisar el archivo de manifiesto, generar y validar el paquete entre otras acciones. En esta sesión repasaremos todos los pasos necesarios a realizar antes de publicar la aplicación, repasaremos formas de monetización así como incluir analíticas y por supuesto publicaremos una aplicación universal paso a paso
Desde Visual Studio contamos con una gran cantidad de herramientas destinadas al desarrollo de aplicaciones universales. Podemos analizar paquetes, desplegar paquetes, medir el rendimiento de la aplicación y contamos con versátiles emuladores entre otras herramientas. En esta sesión repasaremos todas las herramientas incluidas con el SDK de desarrollo así como herramientas de terceros que nos incluyen librerías auxiliares y nuevos controles.
Prezentacja przedstawia ofertę znanych producentów obuwia. Wszystkie prezentowane produkty znaleźć można w sieciach sklepów marki Filippo, będąca znaną i ciesząca się zaufaniem w oczach klientów marką. Oferta skierowana jest do kobiet, mężczyzn oraz dzieci. Dodatkowo w sprzedaży są torebki oraz akcesoria obuwnicze. Cały asortyment sklepu zobaczyć można na stronie sklepu: http://www.filippo.pl/
Evaluación de la eficacia de Metarhizium Anisopliae y de Beauveria Bassiana sobre el control de picudos asociados
al cultivo de vid, utilizando activadores de patogenicidad
Digital strategy Insurance E-Broking ScotlandDave Hazlehurst
Slidedeck from my presentation at the e-Broking Insurance exhibition in Scotland on the 21st November on the 4 pillars for Digital strategy and what they need to do win online. Includes info on Google Hummingbird, SEO, Socials Media, Content Marketing, CRO, Experience
Documation
Le rendez-vous de la gestion de l'information et du document numérique en entreprise | ECM | GED | Management de l'Information Stratégique
http://www.documation.fr/
Recherche, collecte, création, organisation, diffusion, partage, évaluation
Rendez-vous les 21 et 22 mars 2012 au CNIT de Paris La Défense pour LE salon français de la gestion de l’information et des documents
Linkedin Training - Advancment Your Profile.Ali Tavanayan
(The LinkedIn section started from Slide 30)
This is a presentation for new comers to Canada on 2 main topics:
1- How to think about finding a job in Canada. (Use of Social Networking)
2- How to setup and advancement their LinkedIn account to get a found a job easier.
اسلاید های سخنرانی آموزش لینکداین در کتابخانه نورت ونکوور توسط علیرضا توانایان
اجرا تحت مدیریت مرکز مالتی کالچرال نورت ونکوور - خانم الهام سلطانی
En esta sesión revisaremos herramientas y prácticas para construir apps Android que tengan un gran desempeño.
Revisaremos:
Cómo generar binarios optimizados para distintas arquitecturas de procesador.
Introducción a técnicas de optimización de la performance (esto incluye optimización por flags del compilador, y uso de tools como Graphics Performance Analyzer Tool para encontrar cuellos de botella en el código, no es una tool sólo para gráficos)
Intel XDK: Desarrollo de aplicaciones HTML5 híbridas.
Testing en la nube: una alternativa para verificar el comportamiento de tu app en múltiples dispositivos reales.
Exposición de Android hecha por los estudiantes Sebastian Mejía y Leonardo Ardila en el curso Metodología de la Programación IV, programa Ingeniería de Sistemas y Telecomunicaciones, 2012
¿Tienes una aplicación iOS?, ¿quieres reaprovechar tus conocimientos y código Objective-C para acceder a la plataforma universal Windows?. En esta sesión conoceremos el Bridge de Windows para iOS, convertiremos algunas aplicaciones iOS a UWP e incluso veremos como añadir características específicas de la plataforma Windows como el uso de Live Tiles por ejemplo.
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
La utilización de estructuras de datos adecuadas para cada problema hace que se simplifiquen en gran medida los tiempos de respuestas y la cantidad de cómputo realizada.
Por Nelson González
Onboarding new members into an engineering team is not easy on anyone. In a short period of time, the new team member is required to be able to bring professional
Por Victoriya Kalmanovich
El secreto para ser un desarrollador SeniorSoftware Guru
En esta charla platicaremos sobre el “secreto” y el camino para llegar a ser un desarrollador Senior, experiencia, consejos y recomendaciones que en estos 8 años
Por René Sandoval
Apache Airflow es una plataforma en la que podemos crear flujos de datos de manera programática, planificarlos y monitorear de manera centralizada.
Por Yesi Díaz
How thick data can improve big data analysis for business:Software Guru
En esta presentación hablaré sobre cómo el Análisis de Datos Gruesos, específicamente el análisis antropológico y semiótico, puede ayudar a mejorar los resultados del Big Data
Por Martin Cuitzeo
CoDi® es la nueva forma de realizar pagos digitales desarrollada por el Banco de México. Por medio de CoDi puedes realizar cobros y pagos desde tu celular, utilizando una cuenta bancaria o de alguna institución financiera, sin comisiones.
Por Cristian Jaramillo
Gestionando la felicidad de los equipos con Management 3.0Software Guru
En las metodologías agiles hablamos de equipos colaborativos, autogestionados y felices. hablamos de lideres serviciales. El management 3.0 nos ayuda a cultivar el mindset correcto, aquel que servirá como el terreno fértil para que la agilidad florezca.
Por Andrea Vélez Cárdenas
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
Hoy por hoy las experiences de usuario pueden ser enriquecidas mediante el uso de Web Components, que son un estándar de la W3C soportado por la mayoría de los navegadores web modernos.
Por Alex Arriaga
Así publicamos las apps de Spotify sin stressSoftware Guru
En Spotify tenemos 1600+ ingenieros, trabajando en 280+ squads. Aún a esta escala, hemos logrado adoptar prácticas que nos han permitido acelerar la forma en que desarrollamos nuestro producto. Presentado por Erick Camacho en SG Virtual Conference 2020
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
he measure of the executive, Peter F. Drucker reminds us, is the ability to "get the right things done." This involves having clarity on what are the right things as well as avoiding what is unproductive. Intelligence, creativity, and knowledge may all be wasted if not put to work on the things that matter.
Presentado por Cristina Nistor en SG Virtual Conference 2020
Acciones de comunidades tech en tiempos del Covid19Software Guru
Acciones de Comunidades Tech en tiempo del COVID-19 es una platica para informar acerca de las acciones que están realizando algunas comunidades de tecnología en México para luchar contra la propagación del COVID-19. Desde análisis de datos, visualizaciones, simulaciones de contagio, etc.
Presentado por Juana Martínez, Adriana Vallejo y Eduardo Ramírez en SG Virtual Conference 2020
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
La charla presenta un modelo claro, generado por la ponente, para atender los niveles desde lo operativo a lo estratégico.
Presentado por Gabriela Salinas en SG Virtual Conference
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
5. ‹#›
Distintas arquitecturas de Android apps
Apps nativas
Se programa en Java.
Se invoca directamente las
librerías y componentes del
SDK de Android.
Apps HTML5 híbridas
Usa tecnologías web
(HTML5, CSS, Javascript).
No se programa directo al
SDK de Android sino hacia
un framework intermedio
(ej. Cordova).
6. ‹#›
¿Cuándo elegir cada una?
Nativo
Mejor desempeño y experiencia de usuario.
Híbrido
Mayor portabilidad.
9. ‹#›
Native Development Kit (NDK)
Conjunto de herramientas y build scripts que permiten
incorporar código nativo (C/C++) en aplicaciones Android.
Con NDK generas librerías binarias para cada arquitectura
de procesador.
Las librerías binarias se pueden invocar desde Java por
medio de JNI (Java Native Interface).
10. ‹#›
¿Arquitectura de procesador?
Android es soportado en una gran variedad de dispositivos
con distintos tipos de arquitectura de procesador (ARM,
ARM v7, x86, x86_64, MIPS).
Los binarios compilados para una arquitectura de
procesador no funcionan para otra arquitectura.
Es necesario compilar binarios para cada arquitectura
que desees soportar.
13. Código C/C++ Makefile ndk-build Mezclar con Java GDB debug
Java Framework
SDK APIs
JNI
Librerías nativas
Aplicación Android*
NDK APIs
Librería Bionic C
Usando JNI
Flujo de Desarrollo con NDK
14. Aplicación Android* NDK
Aplicación Dalvik*
Archivos
.class
Fuente Java
Compilar con
Javac
Librería nativa
Java .class
Librería nativa
Java*
Compilar con
Javac
Crear header C con
javah -jni
Archivo
Header
Código fuente C/
C++
Compilar y linkear
Código C
Librería
dinámica
Archivos de la
aplicación
Makefile
Opcional gracias a
JNI_Onload
Arquitectura de aplicación NDK
15. ‹#›
Compatibilidad con C/C++ Standard
Librería Bionic C:
Más liviana que que la librería GNU C standard
Soporte limitado de pthread.
Acceso a las propiedades del sistema Android
Bionic no es compatible a nivel binario con C standard
Por ello hay que (re)compilar usando NDK.
16. ‹#›
Instalación de Android NDK
Descargar desde
https://developer.android.com/ndk/downloads
Instalación incluye:
Herramientas y scripts para
compilar.
Headers y librerías.
Documentación y ejemplos
de código
17. Agregar manualmente código nativo
a proyecto existente
Estructura típica de
proyecto
Carpeta JNI
1. Crear carpeta JNI para
fuentes de código nativo.
2. Crear Makefile Android.mk
3. Construir librerías nativas usando el
script NDK-BUILD
NDK-BUILD creará
automáticamente las carpetas de
librerías ABI.
19. Consulta los ejemplos incluidos
App de muestra Tipo
hello-jni Llama a una función nativa escrita en C desde Java*.
bitmap-plasma Accede a un objeto Android* Bitmap desde C.
san-angeles Código EGL y OpenGL* ES en C.
hello-gl2 Setup EGL en Java y código OpenGL ES en C.
native-activity
Muestra OpenGL solo en C
(sin Java, usa la clase NativeActivity).
native-plasma
Muestra OpenGL solo en C
(también usa la clase NativeActivity).
…
21. ‹#›
Integración de código nativo con Java
En tu código Java, declara métodos nativos usando la palabra
clave “nativa”:
public native String stringFromJNI();
Proporciona la librería nativa compartida que contiene los
métodos usados por tu aplicación y que construiste con NDK
(ndk-build).
libMyLib.so
• Antes de usar la librería, debemos cargarla usando
System.loadLibrary
22. La función C que será mapeada:
jstring
Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv* env,
jobject thiz )
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}
...
{
...
tv.setText( stringFromJNI() );
...
}
public native String stringFromJNI();
static {
System.loadLibrary("hello-jni");
}
Integración de código nativo con Java
24. 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
25. Arquitecturas deseadas (ABI)
Incluye todos los ABIs indicando APP_ABI = all en jni/Application.mk:
APP_ABI=all
El NDK generará código optimizado para todos los ABIs objetivo
También puedes pasar la variable APP_ABI a ndk-build, y especificar cada ABI:
ndk-build APP_ABI=x86
librería para ARM v7a
librería para ARM v5
librería para x86
librería para mips
27. ‹#›
Intel INDE
(Integrated Native Developer Experience)
Ambiente de desarrollo optimizado para construir
aplicaciones nativas.
Se integra con IDEs populares (Android Studio,
Visual Studio).
Incluye librerías nativas para alto desempeño
(procesamiento de gráficas, primitivas de cómputo
paralelo).
Facilita la creación y depuración de apps NDK.
https://software.intel.com/es-es/intel-inde
28. ‹#›
Soporte para NDK en Android Studio
Android Studio (1.3) RC incluye el preview de soporte de C/C+
+ para construir apps con NDK.
Intel INDE aprovechará esta capacidad para brindar una
experiencia todavía mejor para construir apps NDK.
29. ‹#›
Zona de Desarrolladores Intel en
Español
Visita http://software.intel.com/es-es/android para obtener:
Herramientas gratuitas
Artículos y guías
Foros de discusión
31. ‹#›
Diversidad en Android
Plataforma
Distintas versiones de Android OS.
Android OS personalizado por distintos fabricantes.
Form Factors
Smartphones, tablets, wearables.
TV, automóviles y más.
Disponibilidad de Hardware
Distinto hardware en distintas regiones.
34. ‹#›
Estrategias para probar
Emulador
Opciones
Android SDK.
Intel HAXM.
Genymotion.
Ventajas
Sencillo (desde tu IDE) y gratis*.
Desventajas
Lento.
No es suficiente para probar todas las
capacidades.
Dispositivo real
Ventajas
Mejor desempeño.
Permite probar usabilidad y UX.
Desventajas
Caro.
Dificultad para conseguir
variedad de hardware.
Probar en variedad de HW
agrega complejidad y tiempo.
35. ‹#›
Testing basado en la nube
Dispositivos reales en un laboratorio en la nube.
Variedad de dispositivos disponible.
Seleccionas los dispositivos en los que quieres hacer tus
pruebas.
Opciones de proveedores
Xamarin Test Cloud - http://xamarin.com/test-cloud
TestDroid - http://testdroid.com
Google Cloud Test Lab* - https://developers.google.com/
cloud-test-lab/
36. ‹#›
Testdroid
Gratis para dispositivos Intel (x86).
Puedes utilizar:
App Crawler para pruebas automáticas (recorrer pantallas, dar click en
botones, probar usuarios y passwords, etc).
Proveer archivo con test cases en JUnit para pruebas específicas.
Puedes ver pantallas de tu app en distintos dispositivos, bitácoras
de ejecución (logs), excepciones, profiling de CPU y memoria.
Ofrece un API para que puedas integrar en tu proceso de build y
automatizar la ejecución de las pruebas.
http://testdroid.com