Intel Android @ HackMTY
-
Upload
software-guru -
Category
Technology
-
view
135 -
download
5
Transcript of Intel Android @ HackMTY
Estrategias y Herramientas para Desarrollar Apps
• Nativa • Eclipse/Android Studio + Java
• Híbrida • Cordova (PhoneGap)
• Sencha Touch
• Appgyver
• Cross-platform • Xamarin
• Appcelerator
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
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
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
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!
¡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)