SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
3 de Mayo 2016
Héctor Álvarez Díaz
• Aplicaciones Realizadas en JAVA y XML
• El mismo código para múltiples plataformas (Dalvik VM)
• JAVA no se compila se "Traduce" a Bytecode y luego se
interpreta a lenguaje máquina.
• Se pierde velocidad en el proceso
Native Development Kit (NDK)
• Es un set de herramientas que nos permite utilizar
lenguajes como C y C++ en Android.
• Nos permite compilar ejecutables y/o librerías nativamente.
• Usa Java Native Interface(JNI) para comunicarse.
• Necesita compilarse para cada arquitectura diferente (x86,
ARM, etc)
• Más difícil en debuggear
• Puede producir problemas de compatibilidad
• Agrega mayor complejidad al proyecto (JAVA y C/C++ en
múltiples dispositivos = muchos dolores de cabeza)
• Reutilizar Código y librerías en C/C++
• Mayor Rendimiento de la aplicación (Algoritmos Complejos,
juegos, multimedia, etc.)
• Aprovechar optimizaciones del procesador (SSE, AES, etc)
• Aplicaciones más fluidas
• Requisitos:
Tener instalado Android Studio
Usar sistema operativo x86_64 (64Bits)
Ir a "Configure" -> SDK Manager
Clickear "Android NDK" y luego en el botón Apply
Confirmar la versión a instalar
Aceptar la Licencia y presionar el botón "Next"
Terminado el proceso, "Android NDK"
aparece como "Installed"
• Para dar soporte a NDK, primero necesitamos modificar el
archivo "build.gradle (Project)".
• Cambiaremos la dependencia "classpath", la linea similar a
esta (generalmente la linea 8):
'com.android.tools.build:gradle:2.1.2'
por:
'com.android.tools.build:gradle-experimental:0.7.0-rc1'
• Ahora gradle reconocerá los proyectos con NDK.
• Continuando, modificaremos el build.gradle (Module):
• En este archivo solo se agregan las siguientes llaves para
incluir los módulos que se compilarán con ndk.
• Incluimos el módulo:
ndk{
moduleName = "fibonacci-jni"
toolchain = 'clang'
CFlags.addAll(['-Wall'])
}
• moduleName es el nombre de la clase en C/C++ que
queremos compilar.
• toolchain es la herramienta con la se se compilará el
módulo.
• CFlags.addALL(), agrega optimizaciones y configuraciones
de compilación al compilador (clang, gcc, etc).
• Luego incluimos el soporte para distintas arquitecturas de
procesador, en el mismo archivo " build.gradle (APP) ".
productFlavors {
create("arm") {
ndk.abiFilters.add("armeabi")
}
...
create("all")
}
• Se pueden agregar las arquitecturas deseadas por separado
o incluirlas todas con create("all")
• En el repositorio de github pueden encontrar el código
completo
• Luego en la clase principal del proyecto creamos una
función de tipo native y llamamos a la librería:
public native String fibboJni();
static{
System.loadLibrary("fibonacci-jni");
}
• Como Android Studio está para facilitarnos la vida, nos
mostrará una ayuda para crear la clase jni Nativa con el
icono de bombilla.
• Listo, ya podemos hacer llamadas nativas en nuestro
proyecto.
¿Qué es JNI?:
Java Native Interface, es un framework que nos permite
interactuar entre JAVA y el código nativo en C/C++.
• Para acceder al código pueden ingresar al siguiente
dirección de Github:
https://github.com/Phoenix2140/EjemploNDK-JNI
Introducción a ndk
Introducción a ndk
Introducción a ndk

Contenu connexe

En vedette

La identidad de los colombianos bajo la custodia de los invisibles
La identidad de los colombianos bajo la custodia de los invisiblesLa identidad de los colombianos bajo la custodia de los invisibles
La identidad de los colombianos bajo la custodia de los invisiblesHector Alvarez
 
Creating the first app with android studio
Creating the first app with android studioCreating the first app with android studio
Creating the first app with android studioParinita03
 
Android Application Development
Android Application DevelopmentAndroid Application Development
Android Application DevelopmentBenny Skogberg
 
Final year project presentation in android application
Final year project presentation in android applicationFinal year project presentation in android application
Final year project presentation in android applicationChirag Thaker
 

En vedette (6)

La identidad de los colombianos bajo la custodia de los invisibles
La identidad de los colombianos bajo la custodia de los invisiblesLa identidad de los colombianos bajo la custodia de los invisibles
La identidad de los colombianos bajo la custodia de los invisibles
 
Creating the first app with android studio
Creating the first app with android studioCreating the first app with android studio
Creating the first app with android studio
 
Android studio 2.0
Android studio 2.0Android studio 2.0
Android studio 2.0
 
Android ppt
Android pptAndroid ppt
Android ppt
 
Android Application Development
Android Application DevelopmentAndroid Application Development
Android Application Development
 
Final year project presentation in android application
Final year project presentation in android applicationFinal year project presentation in android application
Final year project presentation in android application
 

Similaire à Introducción a ndk

Introducción Android NDK
Introducción Android NDKIntroducción Android NDK
Introducción Android NDKFe
 
Introducción android ndk
Introducción android ndkIntroducción android ndk
Introducción android ndkBarcelona GTUG
 
Desarrollo de aplicaciones realmente nativas con NDK
Desarrollo de aplicaciones realmente nativas con NDKDesarrollo de aplicaciones realmente nativas con NDK
Desarrollo de aplicaciones realmente nativas con NDKSoftware Guru
 
Depuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studioDepuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studioJavier Hermoso Blanco
 
Introducción al Desarrollo de NDK apps | Dev Day 4 Woman | @condesa_sama
Introducción al Desarrollo de NDK apps | Dev Day 4 Woman | @condesa_samaIntroducción al Desarrollo de NDK apps | Dev Day 4 Woman | @condesa_sama
Introducción al Desarrollo de NDK apps | Dev Day 4 Woman | @condesa_samaSoftware Guru
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
Android Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasAndroid Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasJorge Martín Espinosa
 
Android NDK y optimizacion para x86
Android NDK y optimizacion para x86Android NDK y optimizacion para x86
Android NDK y optimizacion para x86Software Guru
 
Politécnico padre zegri
Politécnico padre zegriPolitécnico padre zegri
Politécnico padre zegriadrian espinal
 
Net Maui Blazor Jornada ASP Net en Español.pptx
Net Maui Blazor Jornada ASP Net en Español.pptxNet Maui Blazor Jornada ASP Net en Español.pptx
Net Maui Blazor Jornada ASP Net en Español.pptxLuis775803
 

Similaire à Introducción a ndk (20)

Introducción Android NDK
Introducción Android NDKIntroducción Android NDK
Introducción Android NDK
 
Introducción android ndk
Introducción android ndkIntroducción android ndk
Introducción android ndk
 
Desarrollo de aplicaciones realmente nativas con NDK
Desarrollo de aplicaciones realmente nativas con NDKDesarrollo de aplicaciones realmente nativas con NDK
Desarrollo de aplicaciones realmente nativas con NDK
 
Fury DevopsConf 2015
Fury DevopsConf 2015Fury DevopsConf 2015
Fury DevopsConf 2015
 
Fury devops conf (1)
Fury devops conf (1)Fury devops conf (1)
Fury devops conf (1)
 
Tutorial de- c. ++
Tutorial de- c. ++ Tutorial de- c. ++
Tutorial de- c. ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Webpack desde cero
Webpack desde ceroWebpack desde cero
Webpack desde cero
 
Depuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studioDepuración de aplicaciones en visual studio
Depuración de aplicaciones en visual studio
 
Introducción al Desarrollo de NDK apps | Dev Day 4 Woman | @condesa_sama
Introducción al Desarrollo de NDK apps | Dev Day 4 Woman | @condesa_samaIntroducción al Desarrollo de NDK apps | Dev Day 4 Woman | @condesa_sama
Introducción al Desarrollo de NDK apps | Dev Day 4 Woman | @condesa_sama
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Act 8..1
Act 8..1Act 8..1
Act 8..1
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
Android Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajasAndroid Studio - Ventajas y desventajas
Android Studio - Ventajas y desventajas
 
Android NDK y optimizacion para x86
Android NDK y optimizacion para x86Android NDK y optimizacion para x86
Android NDK y optimizacion para x86
 
Politécnico padre zegri
Politécnico padre zegriPolitécnico padre zegri
Politécnico padre zegri
 
Net Maui Blazor Jornada ASP Net en Español.pptx
Net Maui Blazor Jornada ASP Net en Español.pptxNet Maui Blazor Jornada ASP Net en Español.pptx
Net Maui Blazor Jornada ASP Net en Español.pptx
 
C_Basico_Parte_I.pptx
C_Basico_Parte_I.pptxC_Basico_Parte_I.pptx
C_Basico_Parte_I.pptx
 

Dernier

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 

Dernier (10)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Introducción a ndk

  • 1. 3 de Mayo 2016 Héctor Álvarez Díaz
  • 2. • Aplicaciones Realizadas en JAVA y XML • El mismo código para múltiples plataformas (Dalvik VM) • JAVA no se compila se "Traduce" a Bytecode y luego se interpreta a lenguaje máquina. • Se pierde velocidad en el proceso
  • 3. Native Development Kit (NDK) • Es un set de herramientas que nos permite utilizar lenguajes como C y C++ en Android. • Nos permite compilar ejecutables y/o librerías nativamente. • Usa Java Native Interface(JNI) para comunicarse.
  • 4. • Necesita compilarse para cada arquitectura diferente (x86, ARM, etc) • Más difícil en debuggear • Puede producir problemas de compatibilidad • Agrega mayor complejidad al proyecto (JAVA y C/C++ en múltiples dispositivos = muchos dolores de cabeza)
  • 5. • Reutilizar Código y librerías en C/C++ • Mayor Rendimiento de la aplicación (Algoritmos Complejos, juegos, multimedia, etc.) • Aprovechar optimizaciones del procesador (SSE, AES, etc) • Aplicaciones más fluidas
  • 6. • Requisitos: Tener instalado Android Studio Usar sistema operativo x86_64 (64Bits)
  • 7. Ir a "Configure" -> SDK Manager
  • 8. Clickear "Android NDK" y luego en el botón Apply
  • 10. Aceptar la Licencia y presionar el botón "Next"
  • 11. Terminado el proceso, "Android NDK" aparece como "Installed"
  • 12. • Para dar soporte a NDK, primero necesitamos modificar el archivo "build.gradle (Project)". • Cambiaremos la dependencia "classpath", la linea similar a esta (generalmente la linea 8): 'com.android.tools.build:gradle:2.1.2' por: 'com.android.tools.build:gradle-experimental:0.7.0-rc1' • Ahora gradle reconocerá los proyectos con NDK.
  • 13. • Continuando, modificaremos el build.gradle (Module): • En este archivo solo se agregan las siguientes llaves para incluir los módulos que se compilarán con ndk. • Incluimos el módulo: ndk{ moduleName = "fibonacci-jni" toolchain = 'clang' CFlags.addAll(['-Wall']) } • moduleName es el nombre de la clase en C/C++ que queremos compilar. • toolchain es la herramienta con la se se compilará el módulo. • CFlags.addALL(), agrega optimizaciones y configuraciones de compilación al compilador (clang, gcc, etc).
  • 14. • Luego incluimos el soporte para distintas arquitecturas de procesador, en el mismo archivo " build.gradle (APP) ". productFlavors { create("arm") { ndk.abiFilters.add("armeabi") } ... create("all") } • Se pueden agregar las arquitecturas deseadas por separado o incluirlas todas con create("all") • En el repositorio de github pueden encontrar el código completo
  • 15. • Luego en la clase principal del proyecto creamos una función de tipo native y llamamos a la librería: public native String fibboJni(); static{ System.loadLibrary("fibonacci-jni"); } • Como Android Studio está para facilitarnos la vida, nos mostrará una ayuda para crear la clase jni Nativa con el icono de bombilla. • Listo, ya podemos hacer llamadas nativas en nuestro proyecto.
  • 16. ¿Qué es JNI?: Java Native Interface, es un framework que nos permite interactuar entre JAVA y el código nativo en C/C++.
  • 17. • Para acceder al código pueden ingresar al siguiente dirección de Github: https://github.com/Phoenix2140/EjemploNDK-JNI