SlideShare una empresa de Scribd logo
1 de 63
Copyright© 2014, Intel Corporation. All rights reserved. 
*Other brands and names are the property of their respective owners 
Albertina Durante 
@albertinad16 
ASDC -Argentina Software Design Center 
LlevátuAndroid App al SiguienteNivel
#IntelAndroid
Agenda 
Android Native Development 
Técnicas de Optimización para x86 
Intel XDK: Apps Híbridas 
Cloud Testing
Android Native Development
Android Applications: APK 
Aplicaciones Dalvik 
Código Java 
Recursos: xml, imágenes 
Android SDK 
Código C/C++ 
Código assembly 
Librerias dinámicas .so 
Llamadas a funciones nativas 
Frameworks y librerías estaticas/dinámicas 
Librerías nativas se compilan en binarios “.so” en libs/CPU_ABI 
DalvikClasses 
Android Manifest 
Resources Bundle 
DalvikClasses 
Android Manifest 
Resources Bundle 
JNI 
Native Libraries 
No existe una aplicación 100% nativa (C/C++ y assembly) 
Aplicaciones NDK
Desarrollode AplicacionesAndroid 
Aplicaciones 
Java Framework 
JNI 
Librerías Nativas 
Librería Bionic C 
NDK APIs 
SDK APIs 
PlataformaNativa 
Dalvik 
VM 
DalvikBytecode 
NDK BinarioCompilado 
JNI
Native Development Kit (NDK) 
Herramientasy build scripts quepermitenimplementarpartesde unaaplicación en códigonativocomoC/C++ 
CompilarcódigoC/C++ a librerías y ejecutablesnativosespecíficosa la plataforma 
Se debecompilarpara cadaplataformaquea soportar: CPU_ABI
Usos de NDK 
Realidad Aumentada 
Performance Tunning 
Reutilización 
Multimedia y Juegos 
Uso intensivo CPU 
Procesamiento de Gráficos 
Hardware features 
Cuidado! 
Performance no garantizada 
Difícil Debuging 
Complejidad 
Comunicación 
Java y C/C++ 
Múltiples plataformas
Binariospara MúltiplesArquitecturas 
CódigoC/C++ 
Makefile 
ndk-build 
JNI 
GDB debug 
3. Ejecutarndk-build 
ndk-build APP_ABI:= x86 
NDK genera códigopara todoslos targets ABIs 
Llamadasa través de JNI 
C/C++ Java 
Java C/C++ 
1. Librería nativa propia o de terceros 
2. Configuración del makefile jni/Application.mk 
APP_ABI:= all 
APP_ABI:= armeabiarmeabi-v7a x86 
Make, GCC, Intel C/C++ Compiler, Flags de optimización
Java Native Interface 
Framework que permite a código Java corriendo en una instancia de JVM ser llamado y llamar a aplicaciones y librerías nativas en lenguajes como C/C++ 
Estructuras de datos claves 
JavaVM: funciones de invocación, Android permite un JavaVMpor proceso 
JNIEnv: JNI functions, thread-local, no se comparte entre threads. 
Gestión de Memoria 
JVM: gestión de memoriade objetosJava 
Nosencargamosde lasreferenciasa los objetos: 
slot máxde 16 referenciaslocales
Mapeo entre Tipos de Datos y Tipos de Signatures 
Signature 
TipoJava 
Z 
boolean 
B 
byte 
C 
char 
S 
short 
I 
int 
J 
long 
F 
float 
D 
double 
JNI utiliza la misma representación de Signatures que Java VM 
L fully-qualified-class; fully-qualfied-class 
[ typetype[] 
(arg-types) return-type method type 
Ejemplo: 
Método Java 
Double myFunction (int v1, String v2, int[] v3) 
Signature 
(ILjava/lang/String;[I)D 
Java 
Nativo 
Descripción 
boolean 
jboolean 
Unsigned8bits 
byte 
jbyte 
Signed8bits 
char 
jchar 
Unsigned16bits 
short 
jshort 
Signed16bits 
int 
jint 
Signed32bits 
long 
jlong 
Signed64bits 
float 
jfloat 
32bits 
double 
jdouble 
64bits 
void 
void 
N/A
Funciones Nativas en Java 
packagecom.intel.androiddev.lib; 
publicclassNativeMessage{ 
publicnativeString getMessage(); 
} 
static{ 
System.loadLibrary("nativemessages"); 
} 
Cargarla libreríaantes de utilizar 
System.loadLibrary 
System.load(<full_path>) 
¿CómoasociarcódigoJava y códigoNativo? javahy JNI_OnLoad 
Java keyword indicando que el siguiente método se declara en una clase nativa C/C++
Métodos de Asociación de Código Java y Nativo 
Javah 
Herramienta que ayuda a generar los headers JNI a partir de una clase Java. 
javah-classpathbin/classes/ -d jni/ com.intel.android.lib.NativeJNIEXPORT jstringJNICALL Java_com_intel_applatina_lib_NativeMessage_getMessage(JNIEnv*,jobject); 
JNI_OnLoad 
Métodoejecutadocuandoel ClassLoaderinstanciala clasejava 
Enfoquerecomendadopara cargarlibs nativas 
Evitaerrorescuandose hacerefactoring de código 
Agregar/remover funcionalidadcon mayor control 
Stub 
jintJNI_OnLoad(JavaVM*vm, void*reserved) { 
… 
JNINativeMethodmethodsInfo[0]; 
methodsInfo[0].name="getCpuInfo"; 
methodsInfo[0].signature="(II)I"; 
methodsInfo[0].fnPtr=getCpuInfo; 
jclassclsInfo=(*env)->FindClass(env, "com/intel/lib/NativeInfo"); 
(*env)->RegisterNatives(env, clsInfo, methodsInfo, 1); 
returnJNI_VERSION_1_6; 
}
Hands-on: Hello NDK 
1. Crear proyecto standard de Android 
2. Crear carpeta jni para source code nativo 
3. JNI header generado con javah 
4. makefiles 
5. Código fuente nativo 
packagecom.intel.androiddev.lib; 
publicclassNativeMessage{ 
publicnativeString getMessage(); 
} 
Clase NativeMessage.java
Hands-on: Hello NDK 
static{ 
System.loadLibrary("nativemessages"); 
} 
@Override 
protectedvoidonCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
this.messages= newNativeMessage(); 
this.txtvMessage= (TextView) findViewById(R.id.txtv_message); 
this.txtvMessage.setText(this.messages.getMessage()); 
} 
Clase MainActivity.java 
Instancia de la clase NativeMessage, la cual define funciones nativas 
Llamada a la función nativa 
Cargar la librería nativa
Hands-on: Hello NDK#include <jni.h> #ifndef_Included_com_intel_androiddev_lib_NativeMessage#define _Included_com_intel_androiddev_lib_NativeMessage#ifdef__cplusplusextern"C"{ #endif/* * Class: com_intel_androiddev_lib_NativeMessage* Method: getMessage* Signature: ()Ljava/lang/String; */ JNIEXPORT jstringJNICALL Java_com_intel_androiddev_lib_NativeMessage_getMessage(JNIEnv*,jobject); #ifdef__cplusplus} #endif#endif 
Header generado con javah 
javah-classpathbin/classes/ -d jni/com.intel.androiddev.lib.NativeMessage
Hands-on: Hello NDK 
LOCAL_PATH := $(call my-dir) 
include$(CLEAR_VARS) 
LOCAL_MODULE := nativemessages 
LOCAL_SRC_FILES := NativeMessage.c 
include$(BUILD_SHARED_LIBRARY) 
Android.mk 
Application.mkAPP_ABI := armeabiarmeabi-v7a x86 
Nombre del módulo resultado de la compilación 
Código fuente a compilar 
Tagets ABI: Application Binary Interface 
Compilar para ARM y x86 
Librerías nativas generadas para cada arquitectura Target con el build script ndk-build
Intel Binary Translator 
Android Apps con llamadasJNI 
Dalvik 
Android Framework 
JNI libs 
(ARM) 
Android (Kernel + Libraries) 
ARM Hardware 
DispositivosARM 
Android Apps con llamadasJNI 
Dalvikcon BT Interface 
Android Framework 
JNI libs 
(ARM) 
Android (Kernel + Libraries) 
Atom Hardware 
ARM to Atom BT 
DispositivosIntel Atom 
NDK Apps 
Intel Atom x86 
RECOMENDADO: 
Re-compilarcon ABI x86 
Librería quetraduce códigonativoARM a códigonativox86 en runtime 
Apps desarrolladasen Java se ejecutanporDalvik, apps con libs nativaspara ARM utilizanBT siendotransparenteal usuario
Porting y Optimización deAndroid Apps para Intel Atom x86 
Aplicación Android 
Dalvik 
App 
-Java y HTML5 
NDK 
App 
NDK 
ARM 
-C/C++y códigono específico a la plataforma 
ActualizarTarget CPU 
Optimizar 
Compilar 
Testear 
Empaquetar 
APK para x86 
NDK con librerías 
-Funcionesespecíficasa la plataforma 
Open source 
Privativo 
Migrar a una librería alternativa 
Detectarfuncionalidadesquepuedenserdesarrolladascon códigonativoPerformance 
Reescribir el código ARM a Intel x86 
Recompilar la librería para Intel x86 
¿Librerías no 
compatibles 
con x86? 
ndk-build 
GCC flags: 
-march=atom-msse4-mavx-maes 
Application.mk 
APP_ABI:= armeabi armeabi-v7a x86 
-C/C++e instrucciones específicasa la plataforma 
Copyright© 2014, Intel Corporation. All rights reserved. 
*Other brands and names are the property of their respective owners 
Intel HAXM 
AppThwack 
Dispositivos
Games Engines y Frameworks
Games Engines 
2D Engine Cross-platform 
Open Source 
C/C++, JavaScript, Lua 
2D/3D Engine Cross platform 
Open Source 
Basado en C++ y Java 
Box2d physics 
Engine para juegos mobile, para las plataformas iOS, Android, Android x86 que incluye Havok Vision Engine, Physics, Animation Studio y Al 
Arquitectura C/C++ extensible en plugins 
Optimización para rendering mobile 
Lua scripting 
Project Anarchy
Games Engines 
Ecosistema para desarrollo de juegos 
Engine de render y Herramientas 
Workflows para desarrollar contenido interactivo en 2D y 3D 
Assets disponibles 
Lenguajes de Scripting 
C#, JavaScript, Boo 
Intel y Unity trabajando juntos para desarrollar un engine 3D optimizado para Intel x86: 
Soporte Nativo de Android para IA en todas las versiones de Unity3D 
Acceso a features únicas de gráficos Intel 
Acceso a instrucciones de IA CPU y soporte de multithreading 
Apps con la mejor performance y optimizadas para Intel x86 y ARM 
Soporte para x86 NEW! 
release AIR 14 
Adobe AIR 
“[…] we are very excited to announce support for packaging of AIR applications for Intel x86 based Android devices. This support will allow AIR developers to directly target the x86 Android platform, providing the best performance possible from their AIR applications. […]” 
21/04/2014
Frameworks 
Appcelerator 
Entorno de desarrollo extensible para crear aplicaciones cross-platform con código base en HTML5 + JavaScript 
Apache Cordova 
Framework para desarrollar hybrid apps cross-platform con HTML5 + JS 
Accede a features nativas de la plataforma 
Basado en plugins: extensible 
Appcelerator Platform: enterprise platform suite: APIs, Analitics, Build, Deploy 
Titanium: 
open source framework cross-platform HTML5 + JS code base 
Módulos extensibles: incluir librería nativa optimizada para x86
Buenas Prácticas para Desarrollo Nativo
MejoresPrácticaspara DesarrollarCódigoNativo 
Alineación de MemoriastructTestStruct { intvar1; longlongvar2; intvar3; }; 
Pordefault 
Solución de Layout de MemoriaARM Intel Atom 
Agregar“malign-double” flag al compiladorGCC 
Declararatributocon __attribute__ ((aligned(8))) structTestStruct{ intvar1; longlongvar2 __attribute__ ((aligned(8))); intvar3; };
MejoresPrácticaspara DesarrollarCódigoNativo 
Porting de instruccionesARM NEON a instruccionesIntel SSE 
Single InstruccionesMultiple Data 
Técnicapara lograrparalelismoa nivelde datos 
Instrucciones que aplican una misma operación sobre un conjunto de grandes datos 
Intel SSE 
Streaming SIMD Extension, equivalentede ARM NEON 
SS3, SSE2, SSE3, SSSE3 (Supplemental Streaming SIMD Extension 3) 
La mayoría de lasfuncionesde NEON tienenunaequivalencia1:1 con Intel SSE 
NEON proveelibrerías C nativas, debenreescribirsepara sercompatibles con x86 
Intel proveeun header C++ con mapping de funciones entre NEON y SSE para desarrolladores 
NEONtoSSE.h
Técnicas de Optimización para x86
Técnicas Optimización 
Velocidad de Ejecución 
Tamaño del Código 
Consumo de Energía 
Eficacia 
Igual Valor 
Combinado 
Selección de instrucciones rápidas 
Mejorar el grado de paralelismo 
Uso efectivo de los registros de Cache
Técnicas de Optimización de la Performance 
Automático por el Compilador 
Asistencia por Tools de Desarrollo 
Manual por el Developer
Compiladores 
Intel C/C++ Compiler 
Utilizafeatures de la plataformax86 
Códigooptimizadoresultaun 30% más optimizado 
Basado enIntel® C/C++ Compiler XE 14.0 for Linux 
Integrado a Android NDK como toolchain adicional 
Flags de optimización: independientesde la plataformay asociadasa la plataforma
GCC Compiler: Flags de Optimización 
-finline-functions 
-funswitch-loops 
-fpredictive-communing 
-fgcse-after-reload 
Códigopara tipoespecificode CPU 
•-march=cpu-type 
•-mtune=cpu-type 
Vectorizaciónautomática 
•-msse, -msse2, -msse3, -mssse3, -msse4.1, - msse4.2, -msse4 
•-mmmx 
•-mno-sse, -mno-sse2 
•-mno-mmx 
Código generado para arq 32/64 
•-m32-m64 
-0 ó -01 
•Reduccion de tamaño de codigo y tiempo de ejecucion 
-02 
•Aumenta tiempo de compilacion y performnace dle codigo generado 
-03 
•Activa optimizacion -02 
-00 
•Reduce tiempo de compilacion para debugging 
•Default 
-ftree-vectorize 
-fvect-cost-model 
-ftree-partial-pre 
-fipa-cp-clone
Recomendación 
GCC Compiler 
Intel C++Compiler 
Nivelde Optimización 
-O2 o superior,-Ofastfor peak 
-O2,-fast for peak (implica-static) 
Arquitectura 
-march=atom –mtune=atom –mssse3 para Atom 
-march=slm–mtune=slm–msse4.2 para Silvermont 
-march=atom activa-mmovbe(nosoportado en todas las plataformas x86) 
Para evitar agregar–mno-movbe. 
-xATOM_SSSE3 paraAtom 
-xATOM_SSE4.2 paraSilvermont 
Math 
-ffast-math –Más rápido,menos preciso 
-mfpmath=sse–Usar SSE para cálculos FP en lugar de i387 
-no-prec-div –Más rápido,menos preciso 
-mfpmath=sse–Usar SSE para cálculos FP en lugar de i387 
Mayor Performance 
-flto 
-funroll-loops 
-O3-ansi-alias-ipo-auto-p32-parallel
Vectorización 
Loop-unrolling y generación avanzada de instrucciones SIMD 
Tarea manual del developer: no es escalable e implica costo de adaptación para cada arquitectura 
Auto-vectorización realizada por el compilador 
APP_CFLAGS := -O3 -xSSSE3_ATOM-vec-report3 
ifeq($(TARGET_ARCH_ABI),x86) LOCAL_CFLAGS := -mtune=atom -mssse3endif 
ifeq($(TARGET_ARCH_ABI),armeabi-v7a) LOCAL_CFLAGS:= -march=armv7-aendif 
Targets de Compilación 
Proceso de Build de NDK: 
Se evalúa el make file Android.mk para cada arquitectura 
TARGET_ARCH_ABI: arquitectura actual
Intel Integrated Native Development Experience 
Suite de desarrollo nativo cross-platform (Intel Architecture y ARM) 
Cross platform meets native performance 
Cross-OS, Cross-Architecture, Cross-IDE 
Tools nativas para C/C++ y Java 
Tools integradas a IDEs popupales 
Ejemplos para Android y Microsoft Windows 
Mayor Performance, Menor tiempo 
INDE Inside 
Media for Mobile 
Intel Media SDK 
Intel® Threading Building Blocks 
Intel Integrated Performance Primitives 
Intel® C/C++ Compiler y GNU C/C++ Compiler 
Compute Code Builder: soporta APIs de GoogleRenderscript* and OpenCL™ 
Intel HAXM 
Analyzing and Debugging: Intel® GPA
Intel® Graphics Performance Analyzer Tool 
Análisisde performance en tiemporeal a nivelde sistemapara dispositivosbasadosen Android x86 
Realizarexperimentosy aislarproblemasde performance de CPU y GPU 
Métricasde CPU, GPU, API, memoria, red, alimentación 
Conexión USB ADB 
Conexión WiFi 
Datos 
Android x86 Device 
Intel GPA System
Intel® Graphics Performance Analyzer Tool 
System AnalyzerMétricas de CPU, Graphics API, GPU y consumo de energía 
Graphics Frame AnalyzerSingle-frame analysis and optimization tool for Microsoft DirectX*and OpenGL ES* game workloads
Intel® Graphics Performance Analyzer Tool 
Platform AnalyzerView where your application is spending time across the CPU and GPU 
Graphics Frame DebuggerIdentify rendering problems in games, track down errors, and identify complex state-related and frame content problems
Intel XDK: Aplicaciones Híbridas
HybridHTML5 Apps… 
…allow developers to build apps using these skills and tools… 
…that can be distributedin native app stores. 
Accessing Native Device functionality
Mobile HTML5 Web App Block Diagram 
Device Libraries 
Mobile Device OS 
HTML5 Web App 
Mobile Browser
Mobile Hybrid HTML5 WebView App Block Diagram 
Device Libraries 
Mobile Device OS 
Native WebView 
HTML5 
WebView App 
Hybrid Extension 
Bridge
Web, Native & Hybrid Apps 
Web 
Web Standard technologies: HTML5 + JS 
+ CSS 
Write-once-runs-anywhere approach: 
cross-platform between devices 
Runs in a browser 
Limitations: devices capabilities access, 
secured storage, etc 
Native 
Specific to a given Platform 
Language and Dev tools supported by 
the Platform 
Perfomance 
Device features access 
Platform UX guidelines 
Hybrid 
• HTML5 + JS + CSS 
• Native Container 
• Device feature access 
• Cross-platform 
• Package and Install as 
an App 
• Distribute and Publish 
to the Stores 
Bluetooth 
NFC 
Sensors 
File System 
Media 
Contacts
Intel® XDK 
43 
 Write Once, Run Anywhere 
HTML5 Web Apps, Hybrid Apps 
 Faster-Time-To-Market 
Integrated Front-To-End Tools Solution 
 Amazing App Experience 
Optimized UI/UX JS Libraries, Performance Profiling Tools 
 Short Learning Curve 
Simplified Workflow 
Intel® XDK enables software developers 
to develop, test and build HTML5 web 
and hybrid apps across platforms, app 
stores and multiple form factors 
Intel® XDK free at 
http://xdk.intel.com
Intel® XDK and Cordova!
45 
DEVELOP EMULATE TEST DEBUG PROFILE BUILD 
Intel® XDK Components 
Accelerometer 
Geolocation 
Camera 
Compass 
Contacts 
Device 
Notification 
Storage 
Display, Multitouch, Connection, 
Event,s File, Globalization, Media 
InAppBrowser, and more...
46 
App Preview 
Testing of hybrid apps on real devices without going 
through app store submission processes – for faster TTM 
Your HTML5 App 
with Cordova API calls 
Cordova 3.x 
Intel® XDK APIs 
App Preview 
with Cordova runtime 
 Native Container/WebView 
 Closes the gap between app development and on-device testing
47 
Live Development 
Live Layout Editing 
View your app on WiFi-connected Android 
and/or Apple iOS* device(s), or in a browser 
window 
Changes appear immediately after you make 
edits using the built-in Intel XDK editor
Remote Debugger 
Remote on-device debugging of 
HTML5 code 
Not building and installing required 
Remote debugging provided by 
Google Chrome Developer Tools 
(CDT) 
Works with Android Devices – 
Requires Crosswalk Run-Time 
JS Remote Debugger 
Memory, frames profiling 
Intel App Preview (Crosswalk)
Profiler 
Analyze performance of JavaScript 
in the Android app 
Collects statistics of your code 
 CPU Cycles 
 Source code lines 
Identify hotspots 
 Functions taking the most 
time to execute 
 Time spent in each JS 
function 
CPU Utilization on function level 
CPU Utilization on source level 
Works with Android Devices – 
Requires Crosswalk Run-Time
50 
Build 
HTML5 Hybrid containers: 
 Standard 
 Crosswalk for Android 
Web App 
packaging 
Hybrid App 
Packaging 
Standard and 
Crosswalk Runtime 
available for Cordova 
3.X building option 
Do not use Cordova 
3.x plugins, but can se 
Cordova 2.9 APIs 
Only legacy runtime 
available 
Building on the Cloud 
 Not need to set up the 
local environment for 
each supported 
platform 
 Not hardware 
dependencies
51 
Crosswalk 
Web runtime for ambitious HTML5 applications 
Use experimental APIs not available in mainstream web browsers 
Extends the features of a modern browser with deep device integration 
API for adding native extensions 
https://github.com/crosswalk-project
Crosswalk Modes 
Embedded 
• 2 APKs: ARM and Intel IA x86 
• Bundled with the full Crosswalk runtime 
• Architecture-dependent native library 
• Tight dependency between Crosswalk and the app 
• APK larger 
Shared 
• 1 APK 
• Dependency with a separated Crosswalk runtime installed on the 
device 
• Architecture-independent 
• Thin layer of Java code which is architecture-independent 
• 1 runtime for architecture: shared between apps 
• APK smaller
SIMD.JS 
A set of low level APIs for programming SIMD directly in JavaScript 
 The API can be mapped to the processor’s SIMD instructions by a JavaScript JIT compiler when 
the processor has SIMD capabilities 
 Default VM implementation will accomplish the task when SIMD is not available 
The SIMD.JS API is architecture-neutral  Efficient SIMD execution on Intel® Architecture 
and ARM 
Firefox Nightly 
 Mozilla’s Emscripten compiler modified to generate SIMD code automatically 
 Major part of SIMD.JS API ready 
Chromium 
 Full implementation of the API for Intel Architecture has been submitted for review
SIMD JavaScript API: Example 
A SIMD value has multiple lanes 
Lanes X, Y, Z, W 
SIMD.float32x4 
 vector with length 4 
 A lane holds a IEEE-754 32-bit 
single-precision floating point value 
Apply add operation 
C = [6.0, 8.0, 10.0, 12.0] // SIMD vector as a result
Performance 
Firefox Chrome 
Mandelbrot set dynamically 
calculation as we zoom in and out 
Crosswalk has native support for SIMD on Intel x86 architecture 
since version 5.34.104.0 
To run SIMD sample android app 
 Crosswalk 5.34.104.0 version or later 
 Device with an Intel x86 chipset (emulated or physical)
Cloud Testing
Testing en Múltiples Dispositivos 
Emuladores 
Hardware del device Host 
Bundle con SDK, Intel yThird- party 
Emulación: no todas las features soportadas 
Dispositivos Reales 
Tests de Usabilidad y UX 
Idealmente 
Costoso 
Android SDK 
Intel HAXM 
Third-party: Genymotion 
Nexus, Samsung, Motorola, LG, Lenovo, y más
Cloud-based Testing 
Servicio a partir de Dispositivos Reales en el Cloud 
Tests corren en todos los dispositivos seleccionados 
Unit Tests 
Component Tests 
Integration Tests 
UI Tests 
No permite tests de Usabilidad 
AppThwack 
Xamarin Test Cloud 
CloudMonkey Lab Manager
AppThwack 
Testingde apps Android en dispositivos Intel Atomen el Cloud 
Laboratorio de dispositivos reales 
Dispositivos del mercado mundial 
No root –No jailbreak 
Dispositivos incluídos: 
AsusMeMOPadFHD 10 
Dell Venue7 
Dell Venue8 
Lenovo IdeaPhoneK900 
Motorola DroidRAZR i 
Samsung GalaxyTab3 10 
254 ANDROID DEVICES
AppThwack 
Ejecución de tests en paralelo 
Recolección de datos de performance de forma automática 
Frameworks soportados
Documentacióny Links 
http://software.intel.com/es-es/androidhttp://xdk-software.intel.com/ 
https://software.intel.com/en-us/html5/home 
https://appthwack.com/ 
https://software.intel.com/es-es/articles/optimizaci-n-de-aplicaciones-android-para-arquitectura-x86 
http://software.intel.com/es-es/articles/android-application-development-and-optimization-on-the-intel- atom-platformhttp://software.intel.com/en-us/blogs/2012/12/12/from-arm-neon-to-intel-mmxsse-automatic-porting- solution-tips-and-tricks 
http://software.intel.com/en-us/android/articles/ndk-android-application-porting-methodologieshttp://software.intel.com/en-us/blogs/2014/03/19/free-ebook-download-from-apress-android-on-x86-an- introduction-to-optimizing-for 
http://ark.intel.com/es/Products/VirtualizationTechnology
Copyright© 2014, Intel Corporation. All rights reserved. 
*Other brands and names are the property of their respective owners
Legal Disclaimer & Optimization Notice 
INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR 
OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO 
LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS 
INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, 
MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. 
Software and workloads used in performance tests may have been optimized for performance only on Intel 
microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer 
systems, components, software, operations and functions. Any change to any of those factors may cause the results 
to vary. You should consult other information and performance tests to assist you in fully evaluating your 
contemplated purchases, including the performance of that product when combined with other products. 
Copyright © , Intel Corporation. All rights reserved. Intel, the Intel logo, Xeon, Xeon Phi, Core, VTune, and Cilk are 
trademarks of Intel Corporation in the U.S. and other countries. 
Optimization Notice 
Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not 
unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other 
optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on 
microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use 
with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel 
microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the 
specific instruction sets covered by this notice. 
Notice revision #20110804

Más contenido relacionado

La actualidad más candente (19)

Lenguaje de programación java. Detalles
Lenguaje de programación java. DetallesLenguaje de programación java. Detalles
Lenguaje de programación java. Detalles
 
Características de los 10 lenguajes de programación
 Características de los 10 lenguajes de programación Características de los 10 lenguajes de programación
Características de los 10 lenguajes de programación
 
Introducción a Java
Introducción a JavaIntroducción a Java
Introducción a Java
 
Net Framework
Net FrameworkNet Framework
Net Framework
 
Dce1 introduccion microsoft.net
Dce1 introduccion microsoft.netDce1 introduccion microsoft.net
Dce1 introduccion microsoft.net
 
1 introduccion microsoft .net
1 introduccion microsoft .net1 introduccion microsoft .net
1 introduccion microsoft .net
 
Introduccion A Java
Introduccion A JavaIntroduccion A Java
Introduccion A Java
 
Android de la A a la Z - Introducción
Android de la A a la Z - IntroducciónAndroid de la A a la Z - Introducción
Android de la A a la Z - Introducción
 
Yerald tormet
Yerald tormetYerald tormet
Yerald tormet
 
Compiladores (python)
Compiladores (python)Compiladores (python)
Compiladores (python)
 
Java world
Java worldJava world
Java world
 
Caracteristicas lenguajes
Caracteristicas lenguajesCaracteristicas lenguajes
Caracteristicas lenguajes
 
Arquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzadosArquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzados
 
Introducción a net
Introducción a netIntroducción a net
Introducción a net
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje java
 
Tutorial de eclipse 2
Tutorial de eclipse 2Tutorial de eclipse 2
Tutorial de eclipse 2
 
Bootstrapping
BootstrappingBootstrapping
Bootstrapping
 
definicion de java
definicion de javadefinicion de java
definicion de java
 
Lenguaje cc++
Lenguaje cc++Lenguaje cc++
Lenguaje cc++
 

Destacado

Datos Abiertos Financieros (Carto DB)
Datos Abiertos Financieros (Carto DB)Datos Abiertos Financieros (Carto DB)
Datos Abiertos Financieros (Carto DB)Software Guru
 
Big Data: Revelando los Secretos de Twitter en México
Big Data: Revelando los Secretos de Twitter en MéxicoBig Data: Revelando los Secretos de Twitter en México
Big Data: Revelando los Secretos de Twitter en MéxicoSoftware Guru
 
Android puede ser peor que George Parker
Android puede ser peor que George ParkerAndroid puede ser peor que George Parker
Android puede ser peor que George ParkerSoftware Guru
 
Desarrollo Bajo una Plataforma de Servicios en la Nube
Desarrollo Bajo una Plataforma de Servicios en la NubeDesarrollo Bajo una Plataforma de Servicios en la Nube
Desarrollo Bajo una Plataforma de Servicios en la NubeSoftware Guru
 
Hackea tu cultura y sé un agente de cambio
Hackea tu cultura y sé un agente de cambioHackea tu cultura y sé un agente de cambio
Hackea tu cultura y sé un agente de cambioSoftware Guru
 
Presente y futuro del desarrollo de apps mobile y wearable
Presente y futuro del desarrollo de apps mobile y wearablePresente y futuro del desarrollo de apps mobile y wearable
Presente y futuro del desarrollo de apps mobile y wearableSoftware Guru
 
Cross Browser Testing: El reto de la eficiencia
Cross Browser Testing: El reto de la eficienciaCross Browser Testing: El reto de la eficiencia
Cross Browser Testing: El reto de la eficienciaSoftware Guru
 
La Importancia de las Certificaciones en TI
La Importancia de las Certificaciones en TILa Importancia de las Certificaciones en TI
La Importancia de las Certificaciones en TISoftware Guru
 
Tendencias, Herramientas y Retos de la nueva era del Desarrollo Web
Tendencias, Herramientas y Retos de la nueva era del Desarrollo WebTendencias, Herramientas y Retos de la nueva era del Desarrollo Web
Tendencias, Herramientas y Retos de la nueva era del Desarrollo WebSoftware Guru
 
Diseño de CV Efectivo Para Perfiles TI
Diseño de CV Efectivo Para Perfiles TIDiseño de CV Efectivo Para Perfiles TI
Diseño de CV Efectivo Para Perfiles TISoftware Guru
 
Prototipos:Un juguete muy valioso
Prototipos:Un juguete muy valiosoPrototipos:Un juguete muy valioso
Prototipos:Un juguete muy valiosoSoftware Guru
 
¿Cómo convertirse en un Tester de verdad?
¿Cómo convertirse en un Tester de verdad?¿Cómo convertirse en un Tester de verdad?
¿Cómo convertirse en un Tester de verdad?Software Guru
 

Destacado (12)

Datos Abiertos Financieros (Carto DB)
Datos Abiertos Financieros (Carto DB)Datos Abiertos Financieros (Carto DB)
Datos Abiertos Financieros (Carto DB)
 
Big Data: Revelando los Secretos de Twitter en México
Big Data: Revelando los Secretos de Twitter en MéxicoBig Data: Revelando los Secretos de Twitter en México
Big Data: Revelando los Secretos de Twitter en México
 
Android puede ser peor que George Parker
Android puede ser peor que George ParkerAndroid puede ser peor que George Parker
Android puede ser peor que George Parker
 
Desarrollo Bajo una Plataforma de Servicios en la Nube
Desarrollo Bajo una Plataforma de Servicios en la NubeDesarrollo Bajo una Plataforma de Servicios en la Nube
Desarrollo Bajo una Plataforma de Servicios en la Nube
 
Hackea tu cultura y sé un agente de cambio
Hackea tu cultura y sé un agente de cambioHackea tu cultura y sé un agente de cambio
Hackea tu cultura y sé un agente de cambio
 
Presente y futuro del desarrollo de apps mobile y wearable
Presente y futuro del desarrollo de apps mobile y wearablePresente y futuro del desarrollo de apps mobile y wearable
Presente y futuro del desarrollo de apps mobile y wearable
 
Cross Browser Testing: El reto de la eficiencia
Cross Browser Testing: El reto de la eficienciaCross Browser Testing: El reto de la eficiencia
Cross Browser Testing: El reto de la eficiencia
 
La Importancia de las Certificaciones en TI
La Importancia de las Certificaciones en TILa Importancia de las Certificaciones en TI
La Importancia de las Certificaciones en TI
 
Tendencias, Herramientas y Retos de la nueva era del Desarrollo Web
Tendencias, Herramientas y Retos de la nueva era del Desarrollo WebTendencias, Herramientas y Retos de la nueva era del Desarrollo Web
Tendencias, Herramientas y Retos de la nueva era del Desarrollo Web
 
Diseño de CV Efectivo Para Perfiles TI
Diseño de CV Efectivo Para Perfiles TIDiseño de CV Efectivo Para Perfiles TI
Diseño de CV Efectivo Para Perfiles TI
 
Prototipos:Un juguete muy valioso
Prototipos:Un juguete muy valiosoPrototipos:Un juguete muy valioso
Prototipos:Un juguete muy valioso
 
¿Cómo convertirse en un Tester de verdad?
¿Cómo convertirse en un Tester de verdad?¿Cómo convertirse en un Tester de verdad?
¿Cómo convertirse en un Tester de verdad?
 

Similar a Lleva tu Android App al Sigiente Nivel

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
 
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
 
C1 intro java
C1 intro javaC1 intro java
C1 intro javaalenco
 
Aprendiendo a usar NDK Android Day(castellano)
Aprendiendo a usar NDK Android Day(castellano)Aprendiendo a usar NDK Android Day(castellano)
Aprendiendo a usar NDK Android Day(castellano)videos
 
Introducción a la progrogramación orientada a objetos - Java
Introducción a la progrogramación orientada a objetos - JavaIntroducción a la progrogramación orientada a objetos - Java
Introducción a la progrogramación orientada a objetos - JavaFacultad de Ciencias y Sistemas
 
Herramientas case[procesamiento de lenguaje analisis de p
Herramientas case[procesamiento de lenguaje   analisis de pHerramientas case[procesamiento de lenguaje   analisis de p
Herramientas case[procesamiento de lenguaje analisis de pManuel Villalta
 
Desarrollo android - 3 - entorno de desarrollo
Desarrollo android  - 3 - entorno de desarrolloDesarrollo android  - 3 - entorno de desarrollo
Desarrollo android - 3 - entorno de desarrolloEmilio Aviles Avila
 
Arquitectura de Android por Andrés Deza
Arquitectura de Android por Andrés DezaArquitectura de Android por Andrés Deza
Arquitectura de Android por Andrés DezaLima GTUG
 
Arquitectura Android
Arquitectura AndroidArquitectura Android
Arquitectura Androidadvillacorta
 
Android: Caracterización de Plataforma Móvil
Android: Caracterización de Plataforma MóvilAndroid: Caracterización de Plataforma Móvil
Android: Caracterización de Plataforma MóvilSantiago Mejía Sánchez
 
Clase2
Clase2Clase2
Clase2rilara
 
Articulo tipos de ide y ajax control toolkit
Articulo   tipos de ide y ajax control toolkitArticulo   tipos de ide y ajax control toolkit
Articulo tipos de ide y ajax control toolkitCesar Escalante
 
Conceptos Fundamentales de POO
Conceptos Fundamentales de POOConceptos Fundamentales de POO
Conceptos Fundamentales de POOsena
 

Similar a Lleva tu Android App al Sigiente Nivel (20)

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
 
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
 
C1 intro java
C1 intro javaC1 intro java
C1 intro java
 
Aprendiendo a usar NDK Android Day(castellano)
Aprendiendo a usar NDK Android Day(castellano)Aprendiendo a usar NDK Android Day(castellano)
Aprendiendo a usar NDK Android Day(castellano)
 
Taller deandroid
Taller deandroidTaller deandroid
Taller deandroid
 
Introducción a la progrogramación orientada a objetos - Java
Introducción a la progrogramación orientada a objetos - JavaIntroducción a la progrogramación orientada a objetos - Java
Introducción a la progrogramación orientada a objetos - Java
 
Módulo 01 Introducción a la Tecnología Java
Módulo 01 Introducción a la Tecnología JavaMódulo 01 Introducción a la Tecnología Java
Módulo 01 Introducción a la Tecnología Java
 
Herramientas case[procesamiento de lenguaje analisis de p
Herramientas case[procesamiento de lenguaje   analisis de pHerramientas case[procesamiento de lenguaje   analisis de p
Herramientas case[procesamiento de lenguaje analisis de p
 
Desarrollo android - 3 - entorno de desarrollo
Desarrollo android  - 3 - entorno de desarrolloDesarrollo android  - 3 - entorno de desarrollo
Desarrollo android - 3 - entorno de desarrollo
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Arquitectura de Android por Andrés Deza
Arquitectura de Android por Andrés DezaArquitectura de Android por Andrés Deza
Arquitectura de Android por Andrés Deza
 
Arquitectura Android
Arquitectura AndroidArquitectura Android
Arquitectura Android
 
Android: Caracterización de Plataforma Móvil
Android: Caracterización de Plataforma MóvilAndroid: Caracterización de Plataforma Móvil
Android: Caracterización de Plataforma Móvil
 
Clase2
Clase2Clase2
Clase2
 
Articulo tipos de ide y ajax control toolkit
Articulo   tipos de ide y ajax control toolkitArticulo   tipos de ide y ajax control toolkit
Articulo tipos de ide y ajax control toolkit
 
JAVA
JAVAJAVA
JAVA
 
Java 2010: presente, límites y futuro
Java 2010: presente, límites y futuroJava 2010: presente, límites y futuro
Java 2010: presente, límites y futuro
 
Conceptos Fundamentales de POO
Conceptos Fundamentales de POOConceptos Fundamentales de POO
Conceptos Fundamentales de POO
 
Exposición - Android
Exposición - AndroidExposición - Android
Exposición - Android
 

Más de Software Guru

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

Más de Software Guru (20)

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

Último

Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 

Último (7)

Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 

Lleva tu Android App al Sigiente Nivel

  • 1. Copyright© 2014, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners Albertina Durante @albertinad16 ASDC -Argentina Software Design Center LlevátuAndroid App al SiguienteNivel
  • 3. Agenda Android Native Development Técnicas de Optimización para x86 Intel XDK: Apps Híbridas Cloud Testing
  • 5. Android Applications: APK Aplicaciones Dalvik Código Java Recursos: xml, imágenes Android SDK Código C/C++ Código assembly Librerias dinámicas .so Llamadas a funciones nativas Frameworks y librerías estaticas/dinámicas Librerías nativas se compilan en binarios “.so” en libs/CPU_ABI DalvikClasses Android Manifest Resources Bundle DalvikClasses Android Manifest Resources Bundle JNI Native Libraries No existe una aplicación 100% nativa (C/C++ y assembly) Aplicaciones NDK
  • 6. Desarrollode AplicacionesAndroid Aplicaciones Java Framework JNI Librerías Nativas Librería Bionic C NDK APIs SDK APIs PlataformaNativa Dalvik VM DalvikBytecode NDK BinarioCompilado JNI
  • 7. Native Development Kit (NDK) Herramientasy build scripts quepermitenimplementarpartesde unaaplicación en códigonativocomoC/C++ CompilarcódigoC/C++ a librerías y ejecutablesnativosespecíficosa la plataforma Se debecompilarpara cadaplataformaquea soportar: CPU_ABI
  • 8. Usos de NDK Realidad Aumentada Performance Tunning Reutilización Multimedia y Juegos Uso intensivo CPU Procesamiento de Gráficos Hardware features Cuidado! Performance no garantizada Difícil Debuging Complejidad Comunicación Java y C/C++ Múltiples plataformas
  • 9. Binariospara MúltiplesArquitecturas CódigoC/C++ Makefile ndk-build JNI GDB debug 3. Ejecutarndk-build ndk-build APP_ABI:= x86 NDK genera códigopara todoslos targets ABIs Llamadasa través de JNI C/C++ Java Java C/C++ 1. Librería nativa propia o de terceros 2. Configuración del makefile jni/Application.mk APP_ABI:= all APP_ABI:= armeabiarmeabi-v7a x86 Make, GCC, Intel C/C++ Compiler, Flags de optimización
  • 10. Java Native Interface Framework que permite a código Java corriendo en una instancia de JVM ser llamado y llamar a aplicaciones y librerías nativas en lenguajes como C/C++ Estructuras de datos claves JavaVM: funciones de invocación, Android permite un JavaVMpor proceso JNIEnv: JNI functions, thread-local, no se comparte entre threads. Gestión de Memoria JVM: gestión de memoriade objetosJava Nosencargamosde lasreferenciasa los objetos: slot máxde 16 referenciaslocales
  • 11. Mapeo entre Tipos de Datos y Tipos de Signatures Signature TipoJava Z boolean B byte C char S short I int J long F float D double JNI utiliza la misma representación de Signatures que Java VM L fully-qualified-class; fully-qualfied-class [ typetype[] (arg-types) return-type method type Ejemplo: Método Java Double myFunction (int v1, String v2, int[] v3) Signature (ILjava/lang/String;[I)D Java Nativo Descripción boolean jboolean Unsigned8bits byte jbyte Signed8bits char jchar Unsigned16bits short jshort Signed16bits int jint Signed32bits long jlong Signed64bits float jfloat 32bits double jdouble 64bits void void N/A
  • 12. Funciones Nativas en Java packagecom.intel.androiddev.lib; publicclassNativeMessage{ publicnativeString getMessage(); } static{ System.loadLibrary("nativemessages"); } Cargarla libreríaantes de utilizar System.loadLibrary System.load(<full_path>) ¿CómoasociarcódigoJava y códigoNativo? javahy JNI_OnLoad Java keyword indicando que el siguiente método se declara en una clase nativa C/C++
  • 13. Métodos de Asociación de Código Java y Nativo Javah Herramienta que ayuda a generar los headers JNI a partir de una clase Java. javah-classpathbin/classes/ -d jni/ com.intel.android.lib.NativeJNIEXPORT jstringJNICALL Java_com_intel_applatina_lib_NativeMessage_getMessage(JNIEnv*,jobject); JNI_OnLoad Métodoejecutadocuandoel ClassLoaderinstanciala clasejava Enfoquerecomendadopara cargarlibs nativas Evitaerrorescuandose hacerefactoring de código Agregar/remover funcionalidadcon mayor control Stub jintJNI_OnLoad(JavaVM*vm, void*reserved) { … JNINativeMethodmethodsInfo[0]; methodsInfo[0].name="getCpuInfo"; methodsInfo[0].signature="(II)I"; methodsInfo[0].fnPtr=getCpuInfo; jclassclsInfo=(*env)->FindClass(env, "com/intel/lib/NativeInfo"); (*env)->RegisterNatives(env, clsInfo, methodsInfo, 1); returnJNI_VERSION_1_6; }
  • 14. Hands-on: Hello NDK 1. Crear proyecto standard de Android 2. Crear carpeta jni para source code nativo 3. JNI header generado con javah 4. makefiles 5. Código fuente nativo packagecom.intel.androiddev.lib; publicclassNativeMessage{ publicnativeString getMessage(); } Clase NativeMessage.java
  • 15. Hands-on: Hello NDK static{ System.loadLibrary("nativemessages"); } @Override protectedvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.messages= newNativeMessage(); this.txtvMessage= (TextView) findViewById(R.id.txtv_message); this.txtvMessage.setText(this.messages.getMessage()); } Clase MainActivity.java Instancia de la clase NativeMessage, la cual define funciones nativas Llamada a la función nativa Cargar la librería nativa
  • 16. Hands-on: Hello NDK#include <jni.h> #ifndef_Included_com_intel_androiddev_lib_NativeMessage#define _Included_com_intel_androiddev_lib_NativeMessage#ifdef__cplusplusextern"C"{ #endif/* * Class: com_intel_androiddev_lib_NativeMessage* Method: getMessage* Signature: ()Ljava/lang/String; */ JNIEXPORT jstringJNICALL Java_com_intel_androiddev_lib_NativeMessage_getMessage(JNIEnv*,jobject); #ifdef__cplusplus} #endif#endif Header generado con javah javah-classpathbin/classes/ -d jni/com.intel.androiddev.lib.NativeMessage
  • 17. Hands-on: Hello NDK LOCAL_PATH := $(call my-dir) include$(CLEAR_VARS) LOCAL_MODULE := nativemessages LOCAL_SRC_FILES := NativeMessage.c include$(BUILD_SHARED_LIBRARY) Android.mk Application.mkAPP_ABI := armeabiarmeabi-v7a x86 Nombre del módulo resultado de la compilación Código fuente a compilar Tagets ABI: Application Binary Interface Compilar para ARM y x86 Librerías nativas generadas para cada arquitectura Target con el build script ndk-build
  • 18. Intel Binary Translator Android Apps con llamadasJNI Dalvik Android Framework JNI libs (ARM) Android (Kernel + Libraries) ARM Hardware DispositivosARM Android Apps con llamadasJNI Dalvikcon BT Interface Android Framework JNI libs (ARM) Android (Kernel + Libraries) Atom Hardware ARM to Atom BT DispositivosIntel Atom NDK Apps Intel Atom x86 RECOMENDADO: Re-compilarcon ABI x86 Librería quetraduce códigonativoARM a códigonativox86 en runtime Apps desarrolladasen Java se ejecutanporDalvik, apps con libs nativaspara ARM utilizanBT siendotransparenteal usuario
  • 19. Porting y Optimización deAndroid Apps para Intel Atom x86 Aplicación Android Dalvik App -Java y HTML5 NDK App NDK ARM -C/C++y códigono específico a la plataforma ActualizarTarget CPU Optimizar Compilar Testear Empaquetar APK para x86 NDK con librerías -Funcionesespecíficasa la plataforma Open source Privativo Migrar a una librería alternativa Detectarfuncionalidadesquepuedenserdesarrolladascon códigonativoPerformance Reescribir el código ARM a Intel x86 Recompilar la librería para Intel x86 ¿Librerías no compatibles con x86? ndk-build GCC flags: -march=atom-msse4-mavx-maes Application.mk APP_ABI:= armeabi armeabi-v7a x86 -C/C++e instrucciones específicasa la plataforma Copyright© 2014, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners Intel HAXM AppThwack Dispositivos
  • 20. Games Engines y Frameworks
  • 21. Games Engines 2D Engine Cross-platform Open Source C/C++, JavaScript, Lua 2D/3D Engine Cross platform Open Source Basado en C++ y Java Box2d physics Engine para juegos mobile, para las plataformas iOS, Android, Android x86 que incluye Havok Vision Engine, Physics, Animation Studio y Al Arquitectura C/C++ extensible en plugins Optimización para rendering mobile Lua scripting Project Anarchy
  • 22. Games Engines Ecosistema para desarrollo de juegos Engine de render y Herramientas Workflows para desarrollar contenido interactivo en 2D y 3D Assets disponibles Lenguajes de Scripting C#, JavaScript, Boo Intel y Unity trabajando juntos para desarrollar un engine 3D optimizado para Intel x86: Soporte Nativo de Android para IA en todas las versiones de Unity3D Acceso a features únicas de gráficos Intel Acceso a instrucciones de IA CPU y soporte de multithreading Apps con la mejor performance y optimizadas para Intel x86 y ARM Soporte para x86 NEW! release AIR 14 Adobe AIR “[…] we are very excited to announce support for packaging of AIR applications for Intel x86 based Android devices. This support will allow AIR developers to directly target the x86 Android platform, providing the best performance possible from their AIR applications. […]” 21/04/2014
  • 23. Frameworks Appcelerator Entorno de desarrollo extensible para crear aplicaciones cross-platform con código base en HTML5 + JavaScript Apache Cordova Framework para desarrollar hybrid apps cross-platform con HTML5 + JS Accede a features nativas de la plataforma Basado en plugins: extensible Appcelerator Platform: enterprise platform suite: APIs, Analitics, Build, Deploy Titanium: open source framework cross-platform HTML5 + JS code base Módulos extensibles: incluir librería nativa optimizada para x86
  • 24. Buenas Prácticas para Desarrollo Nativo
  • 25. MejoresPrácticaspara DesarrollarCódigoNativo Alineación de MemoriastructTestStruct { intvar1; longlongvar2; intvar3; }; Pordefault Solución de Layout de MemoriaARM Intel Atom Agregar“malign-double” flag al compiladorGCC Declararatributocon __attribute__ ((aligned(8))) structTestStruct{ intvar1; longlongvar2 __attribute__ ((aligned(8))); intvar3; };
  • 26. MejoresPrácticaspara DesarrollarCódigoNativo Porting de instruccionesARM NEON a instruccionesIntel SSE Single InstruccionesMultiple Data Técnicapara lograrparalelismoa nivelde datos Instrucciones que aplican una misma operación sobre un conjunto de grandes datos Intel SSE Streaming SIMD Extension, equivalentede ARM NEON SS3, SSE2, SSE3, SSSE3 (Supplemental Streaming SIMD Extension 3) La mayoría de lasfuncionesde NEON tienenunaequivalencia1:1 con Intel SSE NEON proveelibrerías C nativas, debenreescribirsepara sercompatibles con x86 Intel proveeun header C++ con mapping de funciones entre NEON y SSE para desarrolladores NEONtoSSE.h
  • 28. Técnicas Optimización Velocidad de Ejecución Tamaño del Código Consumo de Energía Eficacia Igual Valor Combinado Selección de instrucciones rápidas Mejorar el grado de paralelismo Uso efectivo de los registros de Cache
  • 29. Técnicas de Optimización de la Performance Automático por el Compilador Asistencia por Tools de Desarrollo Manual por el Developer
  • 30. Compiladores Intel C/C++ Compiler Utilizafeatures de la plataformax86 Códigooptimizadoresultaun 30% más optimizado Basado enIntel® C/C++ Compiler XE 14.0 for Linux Integrado a Android NDK como toolchain adicional Flags de optimización: independientesde la plataformay asociadasa la plataforma
  • 31. GCC Compiler: Flags de Optimización -finline-functions -funswitch-loops -fpredictive-communing -fgcse-after-reload Códigopara tipoespecificode CPU •-march=cpu-type •-mtune=cpu-type Vectorizaciónautomática •-msse, -msse2, -msse3, -mssse3, -msse4.1, - msse4.2, -msse4 •-mmmx •-mno-sse, -mno-sse2 •-mno-mmx Código generado para arq 32/64 •-m32-m64 -0 ó -01 •Reduccion de tamaño de codigo y tiempo de ejecucion -02 •Aumenta tiempo de compilacion y performnace dle codigo generado -03 •Activa optimizacion -02 -00 •Reduce tiempo de compilacion para debugging •Default -ftree-vectorize -fvect-cost-model -ftree-partial-pre -fipa-cp-clone
  • 32. Recomendación GCC Compiler Intel C++Compiler Nivelde Optimización -O2 o superior,-Ofastfor peak -O2,-fast for peak (implica-static) Arquitectura -march=atom –mtune=atom –mssse3 para Atom -march=slm–mtune=slm–msse4.2 para Silvermont -march=atom activa-mmovbe(nosoportado en todas las plataformas x86) Para evitar agregar–mno-movbe. -xATOM_SSSE3 paraAtom -xATOM_SSE4.2 paraSilvermont Math -ffast-math –Más rápido,menos preciso -mfpmath=sse–Usar SSE para cálculos FP en lugar de i387 -no-prec-div –Más rápido,menos preciso -mfpmath=sse–Usar SSE para cálculos FP en lugar de i387 Mayor Performance -flto -funroll-loops -O3-ansi-alias-ipo-auto-p32-parallel
  • 33. Vectorización Loop-unrolling y generación avanzada de instrucciones SIMD Tarea manual del developer: no es escalable e implica costo de adaptación para cada arquitectura Auto-vectorización realizada por el compilador APP_CFLAGS := -O3 -xSSSE3_ATOM-vec-report3 ifeq($(TARGET_ARCH_ABI),x86) LOCAL_CFLAGS := -mtune=atom -mssse3endif ifeq($(TARGET_ARCH_ABI),armeabi-v7a) LOCAL_CFLAGS:= -march=armv7-aendif Targets de Compilación Proceso de Build de NDK: Se evalúa el make file Android.mk para cada arquitectura TARGET_ARCH_ABI: arquitectura actual
  • 34. Intel Integrated Native Development Experience Suite de desarrollo nativo cross-platform (Intel Architecture y ARM) Cross platform meets native performance Cross-OS, Cross-Architecture, Cross-IDE Tools nativas para C/C++ y Java Tools integradas a IDEs popupales Ejemplos para Android y Microsoft Windows Mayor Performance, Menor tiempo INDE Inside Media for Mobile Intel Media SDK Intel® Threading Building Blocks Intel Integrated Performance Primitives Intel® C/C++ Compiler y GNU C/C++ Compiler Compute Code Builder: soporta APIs de GoogleRenderscript* and OpenCL™ Intel HAXM Analyzing and Debugging: Intel® GPA
  • 35. Intel® Graphics Performance Analyzer Tool Análisisde performance en tiemporeal a nivelde sistemapara dispositivosbasadosen Android x86 Realizarexperimentosy aislarproblemasde performance de CPU y GPU Métricasde CPU, GPU, API, memoria, red, alimentación Conexión USB ADB Conexión WiFi Datos Android x86 Device Intel GPA System
  • 36. Intel® Graphics Performance Analyzer Tool System AnalyzerMétricas de CPU, Graphics API, GPU y consumo de energía Graphics Frame AnalyzerSingle-frame analysis and optimization tool for Microsoft DirectX*and OpenGL ES* game workloads
  • 37. Intel® Graphics Performance Analyzer Tool Platform AnalyzerView where your application is spending time across the CPU and GPU Graphics Frame DebuggerIdentify rendering problems in games, track down errors, and identify complex state-related and frame content problems
  • 39. HybridHTML5 Apps… …allow developers to build apps using these skills and tools… …that can be distributedin native app stores. Accessing Native Device functionality
  • 40. Mobile HTML5 Web App Block Diagram Device Libraries Mobile Device OS HTML5 Web App Mobile Browser
  • 41. Mobile Hybrid HTML5 WebView App Block Diagram Device Libraries Mobile Device OS Native WebView HTML5 WebView App Hybrid Extension Bridge
  • 42. Web, Native & Hybrid Apps Web Web Standard technologies: HTML5 + JS + CSS Write-once-runs-anywhere approach: cross-platform between devices Runs in a browser Limitations: devices capabilities access, secured storage, etc Native Specific to a given Platform Language and Dev tools supported by the Platform Perfomance Device features access Platform UX guidelines Hybrid • HTML5 + JS + CSS • Native Container • Device feature access • Cross-platform • Package and Install as an App • Distribute and Publish to the Stores Bluetooth NFC Sensors File System Media Contacts
  • 43. Intel® XDK 43  Write Once, Run Anywhere HTML5 Web Apps, Hybrid Apps  Faster-Time-To-Market Integrated Front-To-End Tools Solution  Amazing App Experience Optimized UI/UX JS Libraries, Performance Profiling Tools  Short Learning Curve Simplified Workflow Intel® XDK enables software developers to develop, test and build HTML5 web and hybrid apps across platforms, app stores and multiple form factors Intel® XDK free at http://xdk.intel.com
  • 44. Intel® XDK and Cordova!
  • 45. 45 DEVELOP EMULATE TEST DEBUG PROFILE BUILD Intel® XDK Components Accelerometer Geolocation Camera Compass Contacts Device Notification Storage Display, Multitouch, Connection, Event,s File, Globalization, Media InAppBrowser, and more...
  • 46. 46 App Preview Testing of hybrid apps on real devices without going through app store submission processes – for faster TTM Your HTML5 App with Cordova API calls Cordova 3.x Intel® XDK APIs App Preview with Cordova runtime  Native Container/WebView  Closes the gap between app development and on-device testing
  • 47. 47 Live Development Live Layout Editing View your app on WiFi-connected Android and/or Apple iOS* device(s), or in a browser window Changes appear immediately after you make edits using the built-in Intel XDK editor
  • 48. Remote Debugger Remote on-device debugging of HTML5 code Not building and installing required Remote debugging provided by Google Chrome Developer Tools (CDT) Works with Android Devices – Requires Crosswalk Run-Time JS Remote Debugger Memory, frames profiling Intel App Preview (Crosswalk)
  • 49. Profiler Analyze performance of JavaScript in the Android app Collects statistics of your code  CPU Cycles  Source code lines Identify hotspots  Functions taking the most time to execute  Time spent in each JS function CPU Utilization on function level CPU Utilization on source level Works with Android Devices – Requires Crosswalk Run-Time
  • 50. 50 Build HTML5 Hybrid containers:  Standard  Crosswalk for Android Web App packaging Hybrid App Packaging Standard and Crosswalk Runtime available for Cordova 3.X building option Do not use Cordova 3.x plugins, but can se Cordova 2.9 APIs Only legacy runtime available Building on the Cloud  Not need to set up the local environment for each supported platform  Not hardware dependencies
  • 51. 51 Crosswalk Web runtime for ambitious HTML5 applications Use experimental APIs not available in mainstream web browsers Extends the features of a modern browser with deep device integration API for adding native extensions https://github.com/crosswalk-project
  • 52. Crosswalk Modes Embedded • 2 APKs: ARM and Intel IA x86 • Bundled with the full Crosswalk runtime • Architecture-dependent native library • Tight dependency between Crosswalk and the app • APK larger Shared • 1 APK • Dependency with a separated Crosswalk runtime installed on the device • Architecture-independent • Thin layer of Java code which is architecture-independent • 1 runtime for architecture: shared between apps • APK smaller
  • 53. SIMD.JS A set of low level APIs for programming SIMD directly in JavaScript  The API can be mapped to the processor’s SIMD instructions by a JavaScript JIT compiler when the processor has SIMD capabilities  Default VM implementation will accomplish the task when SIMD is not available The SIMD.JS API is architecture-neutral  Efficient SIMD execution on Intel® Architecture and ARM Firefox Nightly  Mozilla’s Emscripten compiler modified to generate SIMD code automatically  Major part of SIMD.JS API ready Chromium  Full implementation of the API for Intel Architecture has been submitted for review
  • 54. SIMD JavaScript API: Example A SIMD value has multiple lanes Lanes X, Y, Z, W SIMD.float32x4  vector with length 4  A lane holds a IEEE-754 32-bit single-precision floating point value Apply add operation C = [6.0, 8.0, 10.0, 12.0] // SIMD vector as a result
  • 55. Performance Firefox Chrome Mandelbrot set dynamically calculation as we zoom in and out Crosswalk has native support for SIMD on Intel x86 architecture since version 5.34.104.0 To run SIMD sample android app  Crosswalk 5.34.104.0 version or later  Device with an Intel x86 chipset (emulated or physical)
  • 57. Testing en Múltiples Dispositivos Emuladores Hardware del device Host Bundle con SDK, Intel yThird- party Emulación: no todas las features soportadas Dispositivos Reales Tests de Usabilidad y UX Idealmente Costoso Android SDK Intel HAXM Third-party: Genymotion Nexus, Samsung, Motorola, LG, Lenovo, y más
  • 58. Cloud-based Testing Servicio a partir de Dispositivos Reales en el Cloud Tests corren en todos los dispositivos seleccionados Unit Tests Component Tests Integration Tests UI Tests No permite tests de Usabilidad AppThwack Xamarin Test Cloud CloudMonkey Lab Manager
  • 59. AppThwack Testingde apps Android en dispositivos Intel Atomen el Cloud Laboratorio de dispositivos reales Dispositivos del mercado mundial No root –No jailbreak Dispositivos incluídos: AsusMeMOPadFHD 10 Dell Venue7 Dell Venue8 Lenovo IdeaPhoneK900 Motorola DroidRAZR i Samsung GalaxyTab3 10 254 ANDROID DEVICES
  • 60. AppThwack Ejecución de tests en paralelo Recolección de datos de performance de forma automática Frameworks soportados
  • 61. Documentacióny Links http://software.intel.com/es-es/androidhttp://xdk-software.intel.com/ https://software.intel.com/en-us/html5/home https://appthwack.com/ https://software.intel.com/es-es/articles/optimizaci-n-de-aplicaciones-android-para-arquitectura-x86 http://software.intel.com/es-es/articles/android-application-development-and-optimization-on-the-intel- atom-platformhttp://software.intel.com/en-us/blogs/2012/12/12/from-arm-neon-to-intel-mmxsse-automatic-porting- solution-tips-and-tricks http://software.intel.com/en-us/android/articles/ndk-android-application-porting-methodologieshttp://software.intel.com/en-us/blogs/2014/03/19/free-ebook-download-from-apress-android-on-x86-an- introduction-to-optimizing-for http://ark.intel.com/es/Products/VirtualizationTechnology
  • 62. Copyright© 2014, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners
  • 63. Legal Disclaimer & Optimization Notice INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. Copyright © , Intel Corporation. All rights reserved. Intel, the Intel logo, Xeon, Xeon Phi, Core, VTune, and Cilk are trademarks of Intel Corporation in the U.S. and other countries. Optimization Notice Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. Notice revision #20110804