SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Android* on Intel platforms
And what it means for you, developers.

Xavier Hallade, Technical Marketing Engineer, Intel
Our devices are already fully compatible with
established Android* ecosystem
Android* Dalvik* apps
 These will directly work, Dalvik has been
optimized for Intel® platforms.

Android Runtime
Dalvik Virtual
Machine
Core Libraries

Android NDK apps
 Most will run without any recompilation on consumer platforms.

 Android NDK provides an x86 toolchain since 2011
 A simple recompile using the Android NDK yields the best performance
 If there is specific processor dependent code, porting may be necessary

Most of the time, it just works !
What’s a NDK app ?
It’s an Android* application that uses native libraries.
Native libraries are .so files, usually found inside
libs/CPU_ABI/.
An application can use some calls to these
native libraries, or rely almost exclusively on
these.
These libs can be generated from native sources
inside jni folder, game engines, or required by
other 3rd party libraries.
There is no 100% native application. Even an
application purely written in C/C++, using
native_app_glue.h, will be executed in the
context of the Dalvik Virtual Machine.
What we are working on for Android*

Key AOSP and
Kernel Contributor

Porting and
Optimizing
Browser and Apps

Optimized Drivers
& Firmware

NDK Apps Bridging
Technology

Highly Tuned
Dalvik Runtime

64
bit

64-Bit
Intel® devices on the market
Smartphones with Intel Inside - 2012
Z2460
Orange* San Diego (UK)
Orange* avec Intel Inside (FR)

Lava* Xolo X900

Motorola* RAZR i

ZTE* Grand X IN

Megafon* Mint
Lenovo*
K800
Smartphones with Intel Inside - 2013
Z2420

Z2580
ZTE* Geek – 5”

Intel® Yolo

ASUS Fonepad™ Note FHD - 6”

Etisalat E-20*

Lenovo* K900 – 5.5”
Acer* Liquid C1

…
Tablets with Intel Inside - 2013
ASUS* MeMO Pad FHD 10”

ASUS* Fonepad™ 7”

(Z2560)

(Z2420/Z2560)

Samsung* Galaxy™ Tab 3 10.1”
(Z2560)

LTE version now available

Dell* Venue 7/8
(Z2560)
Future Android* platforms based on Intel*
Silvermont microarchitecture
New 22nm tri-gate microarchitecture
~3X more peak performance or ~5X lower power than previous Atom microarchitecture
Intel® Atom™ Processor Z3000 Series
(Bay Trail)
Next Generation Tablets

Merrifield
Next Generation Smartphones
How to target multiple platforms (incl. x86)
from NDK apps ?
Configuring NDK Target ABIs
If you have the source code of your native libraries, you can compile it for several CPU
architectures by setting APP_ABI to all in the Makefile “jni/Application.mk”:
APP_ABI=all

Put APP_ABI=all inside
Application.mk
Run ndk-build…
ARM v7a libs are built
ARM v5 libs are built

x86 libs are built
mips libs are built

The NDK will generate optimized code for all target ABIs
You can also pass APP_ABI variable directly to ndk-build, and specify each ABI:
ndk-build APP_ABI=x86
Fat Binaries
By default, an APK contains libraries for every supported ABIs.

libs/armeabi

Use lib/armeabi libraries

libs/armeabi-v7a
libs/x86

…
APK file

Use lib/armeabi-v7a
libraries
Use lib/x86
libraries

The application will be filtered during installation (after download)
Multiple APKs
Google Play* supports multiple APKs for the same application.
What compatible APK will be chosen for a device entirely depends on the
android:VersionCode

If you have multiple APKs for multiple ABIs, best is to simply prefix your current
version code with a digit representing the ABI:

2310
ARMv7

6310
x86

You can have more options for multiple APKs, here is a convention that will work
if you’re using all of these:
3rd party libraries x86 support
Game engines/libraries with x86 support:

•

Havok Anarchy SDK: android x86 target available

•

Unreal Engine 3: android x86 target available

•

Marmalade: android x86 target available

•

Cocos2Dx: set APP_ABI in Application.mk

•

FMOD: x86 lib already included, set ABIs in Application.mk

•

AppGameKit: x86 lib already included, set ABIs in Application.mk

•

libgdx: x86 lib now available in latest releases

•

…

No x86 support but works on consumer devices:
•

Corona

•

Unity
®
Intel

Tools for Android* apps
developers
HAXM, TBB, GPA, XDK and others

Most of our tools are relevant even if you’re not targeting x86 platforms!
Faster Android* Emulation on Intel® Architecture
Based Host PC
Pre-built Intel® Atom™ Processor Images
Android* SDK manager has x86 emulation images
built-in
To emulate an Intel Atom processor based Android
phone, install the “Intel Atom x86 System Image”
available in the Android SDK Manager
Much Faster Emulation
Intel® Hardware Accelerated Execution Manager (Intel®
HAXM) for Mac and Windows uses Intel®
Virtualization Technology (Intel® VT) to accelerate
Android emulator
Intel VT is already supported in Linux* by qemu -kvm

Intel x86 Atom
System Image
Intel x86 Emulator
Accelerator
Intel® Threading Building Blocks (TBB)
Specify tasks instead of manipulating threads

 Intel® Threading Building Blocks (Intel® TBB) maps your logical tasks onto
threads with full support for nested parallelism
Targets threading for scalable performance

 Uses proven efficient parallel patterns
 Uses work-stealing to support the load balance of unknown execution
time for tasks
Open source and licensed versions available on Linux*, Windows*, Mac OS
X*, Android*…
Open Source version available on: threadingbuildingblocks.org
Licensed version available on: software.intel.com/en-us/intel-tbb
Intel® TBB - Example
#include <tbb/parallel_reduce.h>
#include <tbb/blocked_range.h>

Lambda function with
Calculating aa one- Pi
Defining a reduction
Computes part of
Defining
range and initial value as
dimensional range
within the range r
over a range
function
parm

double getPi() {
const int num_steps = 10000000;
const double step = 1./num_steps;
double pi = tbb::parallel_reduce(
tbb::blocked_range<int>(0, num_steps), //Range
double(0), //Value
//function
[&](const tbb::blocked_range<int>& r, double current_sum ) ->
double {
for (size_t i=r.begin(); i!=r.end(); ++i) {
double x = (i+0.5)*step;
current_sum += 4.0/(1.0 + x*x);
}
return current_sum; // updated value of the accumulator
},
[]( double s1, double s2 ) { //Reduction
return s1+s2;
}
);
return pi*step;
}
Project Anarchy*
• Complete mobile game engine that includes
Havok Vision Engine, Physics, Animation Studio
and AI
• Free to publish on Android (ARM and x86), iOS,
and Tizen
• C++ development environment

• Efficient asset management system
• LUA scripting and debugging
• Extensible source code and full library of sample
materials
• Remote debugging
• File serving for live asset updates
• Remote input
• Visual debugger

http://www.projectanarchy.com/
Intel® Graphics Performance Analyzers
• Profiles performance and Power
• Real-time charts of CPU, GPU and
power metrics
• Conduct real-time experiments
with OpenGL-ES* (with state
overrides) to help narrow down
problems
• Triage system-level performance
with CPU, GPU and Power metrics

Available freely on intel.com/software/gpa
Intel® HTML5 Development Environment
(XDK NEW)
• Great tools for free
• Convenient, cloud-based build tool lets you target all popular platforms
& app stores
• Write once, run anywhere; code once, debug once, publish everywhere

more on: html5dev-software.intel.com
Other tools and libs for Android*
• Intel Beacon Mountain

• Intel IPP Preview
• Intel Compiler

Contenu connexe

Tendances

OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
Paris Open Source Summit
 
Efficient Image Processing - Nicolas Roard
Efficient Image Processing - Nicolas RoardEfficient Image Processing - Nicolas Roard
Efficient Image Processing - Nicolas Roard
Paris Android User Group
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VI
Opersys inc.
 

Tendances (20)

Tizen Window System
Tizen Window SystemTizen Window System
Tizen Window System
 
Android Things - The IoT platform for everyone.
Android Things - The IoT platform for everyone. Android Things - The IoT platform for everyone.
Android Things - The IoT platform for everyone.
 
Android 10 Internals Update
Android 10 Internals UpdateAndroid 10 Internals Update
Android 10 Internals Update
 
Kadecot APIs overview
Kadecot APIs overviewKadecot APIs overview
Kadecot APIs overview
 
How to Add Original Library to Android NDK
How to Add Original Library to Android NDKHow to Add Original Library to Android NDK
How to Add Original Library to Android NDK
 
Android Things
Android ThingsAndroid Things
Android Things
 
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
 
How to Use OpenGL/ES on Native Activity
How to Use OpenGL/ES on Native ActivityHow to Use OpenGL/ES on Native Activity
How to Use OpenGL/ES on Native Activity
 
Efficient Image Processing - Nicolas Roard
Efficient Image Processing - Nicolas RoardEfficient Image Processing - Nicolas Roard
Efficient Image Processing - Nicolas Roard
 
Intel ndk - a few Benchmarks
Intel ndk - a few BenchmarksIntel ndk - a few Benchmarks
Intel ndk - a few Benchmarks
 
What's new in android 4.4 - Romain Guy & Chet Haase
What's new in android 4.4 - Romain Guy & Chet HaaseWhat's new in android 4.4 - Romain Guy & Chet Haase
What's new in android 4.4 - Romain Guy & Chet Haase
 
Async task, threads, pools, and executors oh my!
Async task, threads, pools, and executors oh my!Async task, threads, pools, and executors oh my!
Async task, threads, pools, and executors oh my!
 
GPU Virtualization in SUSE
GPU Virtualization in SUSEGPU Virtualization in SUSE
GPU Virtualization in SUSE
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VI
 
The abcs of gpu
The abcs of gpuThe abcs of gpu
The abcs of gpu
 
Android tools for testers
Android tools for testersAndroid tools for testers
Android tools for testers
 
GS-4136, Optimizing Game Development using AMD’s GPU PerfStudio 2, by Gordon ...
GS-4136, Optimizing Game Development using AMD’s GPU PerfStudio 2, by Gordon ...GS-4136, Optimizing Game Development using AMD’s GPU PerfStudio 2, by Gordon ...
GS-4136, Optimizing Game Development using AMD’s GPU PerfStudio 2, by Gordon ...
 
Improve the performance of your Unity project using Graphics Performance Anal...
Improve the performance of your Unity project using Graphics Performance Anal...Improve the performance of your Unity project using Graphics Performance Anal...
Improve the performance of your Unity project using Graphics Performance Anal...
 
Daggerate your code - Write your own annotation processor
Daggerate your code - Write your own annotation processorDaggerate your code - Write your own annotation processor
Daggerate your code - Write your own annotation processor
 
Android Automotive
Android AutomotiveAndroid Automotive
Android Automotive
 

Similaire à Android on IA devices and Intel Tools

Android Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинAndroid Meetup, Илья Лёвин
Android Meetup, Илья Лёвин
GDG Saint Petersburg
 
Android NDK and the x86 Platform
Android NDK and the x86 PlatformAndroid NDK and the x86 Platform
Android NDK and the x86 Platform
Sebastian Mauer
 
0xdroid -- community-developed Android distribution by 0xlab
0xdroid -- community-developed Android distribution by 0xlab0xdroid -- community-developed Android distribution by 0xlab
0xdroid -- community-developed Android distribution by 0xlab
National Cheng Kung University
 
0xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp020xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp02
chon2010
 

Similaire à Android on IA devices and Intel Tools (20)

[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
[Android Codefest Germany] Adding x86 target to your Android app by Xavier Ha...
 
Advance Android Application Development
Advance Android Application DevelopmentAdvance Android Application Development
Advance Android Application Development
 
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV
 
Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...
Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...
Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...
 
Android Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинAndroid Meetup, Илья Лёвин
Android Meetup, Илья Лёвин
 
Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014
 
Getting started with the NDK
Getting started with the NDKGetting started with the NDK
Getting started with the NDK
 
Getting Native with NDK
Getting Native with NDKGetting Native with NDK
Getting Native with NDK
 
Android Native Development Kit
Android Native Development KitAndroid Native Development Kit
Android Native Development Kit
 
Android NDK and the x86 Platform
Android NDK and the x86 PlatformAndroid NDK and the x86 Platform
Android NDK and the x86 Platform
 
DLL Design with Building Blocks
DLL Design with Building BlocksDLL Design with Building Blocks
DLL Design with Building Blocks
 
0xdroid -- community-developed Android distribution by 0xlab
0xdroid -- community-developed Android distribution by 0xlab0xdroid -- community-developed Android distribution by 0xlab
0xdroid -- community-developed Android distribution by 0xlab
 
Academy PRO: .NET Core intro
Academy PRO: .NET Core introAcademy PRO: .NET Core intro
Academy PRO: .NET Core intro
 
Go native benchmark test su dispositivi x86: java, ndk, ipp e tbb
Go native  benchmark test su dispositivi x86: java, ndk, ipp e tbbGo native  benchmark test su dispositivi x86: java, ndk, ipp e tbb
Go native benchmark test su dispositivi x86: java, ndk, ipp e tbb
 
Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)
 
Cross-compilation native sous android
Cross-compilation native sous androidCross-compilation native sous android
Cross-compilation native sous android
 
Net core
Net coreNet core
Net core
 
Introduction to the Android NDK
Introduction to the Android NDKIntroduction to the Android NDK
Introduction to the Android NDK
 
First Steps Developing Embedded Applications using Heterogeneous Multi-core P...
First Steps Developing Embedded Applications using Heterogeneous Multi-core P...First Steps Developing Embedded Applications using Heterogeneous Multi-core P...
First Steps Developing Embedded Applications using Heterogeneous Multi-core P...
 
0xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp020xdroid osdc-2010-100426084937-phpapp02
0xdroid osdc-2010-100426084937-phpapp02
 

Plus de Xavier Hallade

Using the Presentation API and external screens on Android
Using the Presentation API and external screens on AndroidUsing the Presentation API and external screens on Android
Using the Presentation API and external screens on Android
Xavier Hallade
 

Plus de Xavier Hallade (6)

BCON22: oneAPI backend - Blender Cycles on Intel GPUs
BCON22: oneAPI backend - Blender Cycles on Intel GPUsBCON22: oneAPI backend - Blender Cycles on Intel GPUs
BCON22: oneAPI backend - Blender Cycles on Intel GPUs
 
Apps development for Recon HUDs
Apps development for Recon HUDsApps development for Recon HUDs
Apps development for Recon HUDs
 
Etendre ses applications aux smartwatches et TVs android
Etendre ses applications aux smartwatches et TVs androidEtendre ses applications aux smartwatches et TVs android
Etendre ses applications aux smartwatches et TVs android
 
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginMastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
 
Getting your app on Android TV
Getting your app on Android TVGetting your app on Android TV
Getting your app on Android TV
 
Using the Presentation API and external screens on Android
Using the Presentation API and external screens on AndroidUsing the Presentation API and external screens on Android
Using the Presentation API and external screens on Android
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Dernier (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Android on IA devices and Intel Tools

  • 1. Android* on Intel platforms And what it means for you, developers. Xavier Hallade, Technical Marketing Engineer, Intel
  • 2. Our devices are already fully compatible with established Android* ecosystem Android* Dalvik* apps  These will directly work, Dalvik has been optimized for Intel® platforms. Android Runtime Dalvik Virtual Machine Core Libraries Android NDK apps  Most will run without any recompilation on consumer platforms.  Android NDK provides an x86 toolchain since 2011  A simple recompile using the Android NDK yields the best performance  If there is specific processor dependent code, porting may be necessary Most of the time, it just works !
  • 3. What’s a NDK app ? It’s an Android* application that uses native libraries. Native libraries are .so files, usually found inside libs/CPU_ABI/. An application can use some calls to these native libraries, or rely almost exclusively on these. These libs can be generated from native sources inside jni folder, game engines, or required by other 3rd party libraries. There is no 100% native application. Even an application purely written in C/C++, using native_app_glue.h, will be executed in the context of the Dalvik Virtual Machine.
  • 4. What we are working on for Android* Key AOSP and Kernel Contributor Porting and Optimizing Browser and Apps Optimized Drivers & Firmware NDK Apps Bridging Technology Highly Tuned Dalvik Runtime 64 bit 64-Bit
  • 5. Intel® devices on the market
  • 6. Smartphones with Intel Inside - 2012 Z2460 Orange* San Diego (UK) Orange* avec Intel Inside (FR) Lava* Xolo X900 Motorola* RAZR i ZTE* Grand X IN Megafon* Mint Lenovo* K800
  • 7. Smartphones with Intel Inside - 2013 Z2420 Z2580 ZTE* Geek – 5” Intel® Yolo ASUS Fonepad™ Note FHD - 6” Etisalat E-20* Lenovo* K900 – 5.5” Acer* Liquid C1 …
  • 8. Tablets with Intel Inside - 2013 ASUS* MeMO Pad FHD 10” ASUS* Fonepad™ 7” (Z2560) (Z2420/Z2560) Samsung* Galaxy™ Tab 3 10.1” (Z2560) LTE version now available Dell* Venue 7/8 (Z2560)
  • 9. Future Android* platforms based on Intel* Silvermont microarchitecture New 22nm tri-gate microarchitecture ~3X more peak performance or ~5X lower power than previous Atom microarchitecture Intel® Atom™ Processor Z3000 Series (Bay Trail) Next Generation Tablets Merrifield Next Generation Smartphones
  • 10. How to target multiple platforms (incl. x86) from NDK apps ?
  • 11. Configuring NDK Target ABIs If you have the source code of your native libraries, you can compile it for several CPU architectures by setting APP_ABI to all in the Makefile “jni/Application.mk”: APP_ABI=all Put APP_ABI=all inside Application.mk Run ndk-build… ARM v7a libs are built ARM v5 libs are built x86 libs are built mips libs are built The NDK will generate optimized code for all target ABIs You can also pass APP_ABI variable directly to ndk-build, and specify each ABI: ndk-build APP_ABI=x86
  • 12. Fat Binaries By default, an APK contains libraries for every supported ABIs. libs/armeabi Use lib/armeabi libraries libs/armeabi-v7a libs/x86 … APK file Use lib/armeabi-v7a libraries Use lib/x86 libraries The application will be filtered during installation (after download)
  • 13. Multiple APKs Google Play* supports multiple APKs for the same application. What compatible APK will be chosen for a device entirely depends on the android:VersionCode If you have multiple APKs for multiple ABIs, best is to simply prefix your current version code with a digit representing the ABI: 2310 ARMv7 6310 x86 You can have more options for multiple APKs, here is a convention that will work if you’re using all of these:
  • 14. 3rd party libraries x86 support Game engines/libraries with x86 support: • Havok Anarchy SDK: android x86 target available • Unreal Engine 3: android x86 target available • Marmalade: android x86 target available • Cocos2Dx: set APP_ABI in Application.mk • FMOD: x86 lib already included, set ABIs in Application.mk • AppGameKit: x86 lib already included, set ABIs in Application.mk • libgdx: x86 lib now available in latest releases • … No x86 support but works on consumer devices: • Corona • Unity
  • 15. ® Intel Tools for Android* apps developers HAXM, TBB, GPA, XDK and others Most of our tools are relevant even if you’re not targeting x86 platforms!
  • 16. Faster Android* Emulation on Intel® Architecture Based Host PC Pre-built Intel® Atom™ Processor Images Android* SDK manager has x86 emulation images built-in To emulate an Intel Atom processor based Android phone, install the “Intel Atom x86 System Image” available in the Android SDK Manager Much Faster Emulation Intel® Hardware Accelerated Execution Manager (Intel® HAXM) for Mac and Windows uses Intel® Virtualization Technology (Intel® VT) to accelerate Android emulator Intel VT is already supported in Linux* by qemu -kvm Intel x86 Atom System Image Intel x86 Emulator Accelerator
  • 17. Intel® Threading Building Blocks (TBB) Specify tasks instead of manipulating threads  Intel® Threading Building Blocks (Intel® TBB) maps your logical tasks onto threads with full support for nested parallelism Targets threading for scalable performance  Uses proven efficient parallel patterns  Uses work-stealing to support the load balance of unknown execution time for tasks Open source and licensed versions available on Linux*, Windows*, Mac OS X*, Android*… Open Source version available on: threadingbuildingblocks.org Licensed version available on: software.intel.com/en-us/intel-tbb
  • 18. Intel® TBB - Example #include <tbb/parallel_reduce.h> #include <tbb/blocked_range.h> Lambda function with Calculating aa one- Pi Defining a reduction Computes part of Defining range and initial value as dimensional range within the range r over a range function parm double getPi() { const int num_steps = 10000000; const double step = 1./num_steps; double pi = tbb::parallel_reduce( tbb::blocked_range<int>(0, num_steps), //Range double(0), //Value //function [&](const tbb::blocked_range<int>& r, double current_sum ) -> double { for (size_t i=r.begin(); i!=r.end(); ++i) { double x = (i+0.5)*step; current_sum += 4.0/(1.0 + x*x); } return current_sum; // updated value of the accumulator }, []( double s1, double s2 ) { //Reduction return s1+s2; } ); return pi*step; }
  • 19. Project Anarchy* • Complete mobile game engine that includes Havok Vision Engine, Physics, Animation Studio and AI • Free to publish on Android (ARM and x86), iOS, and Tizen • C++ development environment • Efficient asset management system • LUA scripting and debugging • Extensible source code and full library of sample materials • Remote debugging • File serving for live asset updates • Remote input • Visual debugger http://www.projectanarchy.com/
  • 20. Intel® Graphics Performance Analyzers • Profiles performance and Power • Real-time charts of CPU, GPU and power metrics • Conduct real-time experiments with OpenGL-ES* (with state overrides) to help narrow down problems • Triage system-level performance with CPU, GPU and Power metrics Available freely on intel.com/software/gpa
  • 21. Intel® HTML5 Development Environment (XDK NEW) • Great tools for free • Convenient, cloud-based build tool lets you target all popular platforms & app stores • Write once, run anywhere; code once, debug once, publish everywhere more on: html5dev-software.intel.com
  • 22. Other tools and libs for Android* • Intel Beacon Mountain • Intel IPP Preview • Intel Compiler