Intel Android @ HackMTY

21
Herramientas y tips para Android Pedro Galván - @pedrogk HackMty - 2015-03-21 #IntelAndroid

Transcript of Intel Android @ HackMTY

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 NDK1. 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.mkmodule 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 settingsAPP_PLATFORM := android-15 #~=minSDKVersion APP_CFLAGS := -O3 APP_STL := gnustl_shared #or other STL if you need extended C++ supportAPP_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 enhttp://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?

RealSensehttps://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. [email protected]

• Síguenos en Google+ (Intel Software en Español)