Post on 05-Dec-2014
description
Android* en plataformas Intel® Xavier Hallade, Technical Marketing Engineer, Intel
@ph0b - ph0b.com
Qué estamos haciendo con Android*
En qué está trabajando Intel en Android*
Colaborador
Clave en en
AOSP y Kernel
Drivers &
Firmware
Optimizados
Runtimes
extremadamente
afinados
Portando y
optimizando
Browser y Apps
Tecnología de
acercamiento en
NDK Apps
64-Bit
64 bit
Colaboración de Intel al paquete de SW Android*
Colaborador de Webkit
Colaborador externo de Chrome
Colaborador externo de Android
Código fuente del kernel de Linux APLICACIONES
FRAMEWORK DE
APLICACIONES
LIBRERÍAS RUNTIME
CAPA DE ABSTRACCIÓN DE
HARDWARE
KERNEL LINUX
Librerías clave
Dalvik VM / ART
Webkit / Chromium
Android* en plataformas x86
Android* en plataformas x86 – alguna novedad?
• 2009: android-x86.org (empujado por la comunidad)
• 2010: Google TVs
• 2011: AOSP
• 2012: primeros dispositivos de consumo
Dispositivos Android* con Intel Inside Motorola* RAZR i
ZTE* Grand X IN
Lava* Xolo X900
Megafon* Mint
Lenovo* K800
Orange* San Diego
2012…
Intel® Yolo
Acer* Liquid C1 Etisalat E-20*
2013… Lenovo* K900
ASUS
Fonepad™ Note
FHD - 6”
ZTE* Geek
ASUS* MeMO
Pad FHD 10
ASUS* Fonepad™
7” Dell* Venue 7/8
Samsung*
Galaxy™ Tab 3
10.1”
LTE in option
2014…
Asus* Zenfones, PadFone Mini, Memo Pad, y más…
Estos dispositivos son completamente compatibles con el ecosistema Android* ARM* Android* SDK apps
− Éstas van a funcionar directamente. Estamos optimizando los
Runtimes para plataformas Intel®.
Android* NDK apps − La mayoría corre sin ninguna recopilación en plataformas de consumo.
− Android NDK prove herramientas x86 desde 2011
− Una simple re-compilación usando el Android NDK produce la mejor performance
− Si existe código específico que depende del procesador, puede ser necesario portar
Android Runtime
Core Libraries
DVM / ART
La mayoría de las veces ¡simplemente funciona!
Plataformas de desarrollo Android* con Intel Inside
$99: Intel® Atom E3815
(single-core, 1.46 GHz)
$129: Intel® Atom E3825
(dual-core, 1.33 GHz)
Código fuente y BSP:
https://github.com/android-ia
MinnowBoard MAX Intel NUC DN2820FYKH
125 €: Intel® Celeron N2820
(dual-core, 2.13GHz)
Builds y documentación:
https://01.org/android-ia
Futuras plataformas Android* basadas en microarquitectura Intel* Silvermont
22nm tri-gate process SSE4.2, AES-NI y Extensiones de Virtualización OpenGL ES 3.1 con extensiones, OpenCL 1.2
Apto 64-bit
Intel® Atom™ Processor Z36xx, Z37xx Series (Bay Trail) Intel® Atom™ Processor Z34xx, Z35XX
Series (Merrifield, Moorefield)
con Gen7 Intel® HD Graphics™ GPU con PowerVR™ Series 6 GPU
La PRÓXIMA plataforma: CherryTrail,
presentando proceso de 14nm
4 cores 2 cores, 4 cores
Mejorando la compatibilidad de las aplicaciones que usan Android* NDK
Qué es una aplicación NDK?
Estas librerías son archivos .so, hallados
normalmente en libs/CPU_ABI/.
Una aplicación puede hacer algunos llamados a
estas librerías nativas o apoyarse casi
exlcusivamente en éstas.
Estas librerías pueden ser generadas de Fuentes
nativas dentro de la carpeta jni, game engines, o
requeridas por librerías de terceros.
No existe una aplicación 100% nativa. Hasta una
aplicación escrita completamente en C/C++, usando
native_app_glue.h será ejecutada en el contexto de la
Dalvik Virtual Machine o ART.
Es una aplicación Android* que usa librerías dependientes de la CPU.
Si tienes el código fuente de tus librerías nativas, puedes compilarlo para diferentes arquitecturas de CPU seteando APP_ABI a all en la Makefile “jni/Application.mk”:
APP_ABI=all
El NDK generará el código optimizado para todas las ABIs objetivo
Inclusive puedes pasar la variable APP_ABI directamente a ndk-build, y
especificar cada ABI:
ndk-build APP_ABI=x86
NDK: configurando los ABIs objetivo
Se construyen las libs ARM v7a
Se construyen las libs ARM v5
Se construyen las libs x86
Se construyen las libs mips
Pon APP_ABI=all dentro de
Application.mk
Corre ndk-build…
APKs “gordos” Por defecto, un APK contiene librerías por cada ABI soportada.
Instala librerías
lib/armeabi
Instala librerías
lib/armeabi-v7a
Instala librerías
lib/x86
libs/armeabi-v7a
libs/x86
libs/armeabi
APK file
…
Se instalan las librerías para la ABI seleccionada, y las otras permanecen dentro del APK
que fue bajado.
Múltiples APKs
Google Play* soporta múltiples APKs para la misma aplicación.
Qué APK compatible será elegido para un dispositivo depende por completo de android:VersionCode
Si tienes múltiples APKs para múltiples ABIs, lo mejor es prefijar tu version actual del código con un dígito representando la ABI:
2310 6310
Puedes tener más opticones para múltiples APKs: he aquí una convención que funcionará si estás usando todas éstas:
x86 ARMv7
Subiendo múltiples APKs a la tienda
Cambia a modo avanzado antes de
subir el segundo APK.
Soporte de terceros a librerías x86
Game engines/librerías con soporte x86:
• Havok Anarchy SDK: android x86 target disponible
• Unreal Engine 3: android x86 target disponible
• Marmalade: android x86 target disponible
• Cocos2Dx: set APP_ABI in Application.mk
• FMOD: librería x86 incluída, configura ABIs en Application.mk
• AppGameKit: librería x86 incluída, configura ABIs en Application.mk
• libgdx: x86 soportada por defecto en las últimas versiones
• AppPortable: soporte x86 disponible
• Adobe Air: soporte x86 en versiones beta
• …
No soportan x86 pero funcionan en dispositivos de consumo:
• Corona
• Unity
Q&A
xavier.hallade@intel.com
@ph0b – ph0b.com