Post on 10-May-2015
description
Android and Intel inside
Christoph Jechlitschek
Software and Services GroupIntel Corporation
Agenda
• Android* on IA Momentum
• Developing Android Apps for IA
• App Development with x86 NDK
Megafon MintRussia
Lenovo K800China Unicom
Orange San DiegoUK, France
Lava XoloIndia
ZTE Grand X IN
Motorola Razr IEurope, Latin America
Smartphones with Intel Inside
Why Intel® Atom™ processors & Android?
Enhanced Video and Graphics• 2D/3D HW accelerated graphics performance optimized for Intel
Atom Processors • Full HD support(1080p) for local video playback and HW-
accelerated video encode/decode for multiple formats (H.264, MPEG-4, H.263, Flash, etc.)
• SW-optimized audio codecs for more efficient CPU utilizationConnectivity, Security and Mobility across devices
• Connectivity & mobility through WiFi Direct and WiDi support• Wind River, an Intel subsidiary, offers solution accelerators for
DLNA, SyncML, additional Bluetooth profiles, etc.• Built-in HW assist for secure boot and full disk encryption.
Performance Leadership• Fast web page loading , optimized for Intel Atom processor• Best multi-tasking performance enabled by Intel® Hyper-
Threading Technology• Hundreds of Intel software engineers working to optimize Android
on AtomDesign-in and Application Enabling• Intel technical support for design in and custom application enabling• Intel® System Software Tools 1.0 for Android for power and
performance tuning• Applications developed to Android SDK APIs run “as is” on all Intel
platforms• Most Android NDK applications run on Atom with simple recompile
Focusing on Mobile ExperiencesApplications & Services, Operating Systems, Platforms and Silicon
BRAND EXPERIENCES
SECURITY TECHNOLOGY
And More
201322nm
Largest Dedicated Security
Company
+ 201414nm
201232nm
#7
Entertainment Business BasicEducation Gaming
Agenda
• Android* on IA Momentum
• Developing Android Apps for IA
• App Development with x86 NDK
Applications
Application Framework
Home Contacts Phone Browser
Activity Manager
Windows Manager
Telephony Manager
Resource Manager
Content Providers
View System
Location Manager
Notifica-tion Manager
Package Manager
…
Surface Manager
OpenGL | ES
SGL
Media Framework
FreeType
SSL
SQLite
WebKit
libc
Core Libraries
Dalvik Virtual Machine
Display Driver
Camera Driver
Flash Memory Driver
Binder (IPC) Driver
Keypad Driver
WiFi Driver
Audio Drivers
Power Manage-ment
…
…
Libraries
Linux Kernel
Android Runtime
Ap
ps
User
Exp
eri
en
ce
Mid
dle
ware
Op
era
tin
g
Syste
m
Android* on Intel® Atom™ processor-based platforms
Android* Optimizations for Intel® Atom™-based devices
• Dalvik VM runtime optimization• x86 trace-based JIT and Native
Code Generation• Enriched memory management
(e.g., garbage collection)• JNI streamlining
• Tuning of native libraries
• Bionic optimizations
• Javascript & HTML5 optimization
• Power Management for Android
• OpenGL ES 1.1/2.0 Driver
• HW Overlay
• HW Accelerated Media decode/encode
• Library to integrate w/ Android & reference implementation (MIX)
• Standard SoC drivers, middleware and applications optimized for power
Power ReductionPerformance Tuning
Intel has a rich history optimizing Java for IA. We’ve applied that knowledge to Dalvik Java with impressive results
Performance Gains from optimizations
Series10
1
2
3
4
5
6
7
Trace JIT enabled
Up to 6x Improvement!
Perf
orm
an
ce
Source: Intel Software and Solutions Group1 Intel Z670 reference design with Honeycomb2 SSE = Streaming SIMD Testing on Medfield (Z2460) CDK with Gingerbread.
Se-ries1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
Significant improvements in both web (HTML5) and Java* workloads due to optimizations for Intel SSE instructions in Android graphics libraries.
Perf
orm
an
ce
No Trace JIT1
Dalvik Runtime Optimizations Android* Native Library
No SSE2 with SSE
Linpack CaffeineMark
HTML5Slideshow
HTML5Zoom
HTML5Animation
HTML5Fancy Show
JetBoy* Stress
AlbumSlideshow(SA)
Faster Emulation and Prebuilt Atom Images
Pre-built Atom Images• Android SDK manager has x86
emulation images built-in• To emulate an Atom-based Android
phone, install the “Intel Atom x86 System Image” available in the Android SDK Manager
• http://software.intel.com/en-us/articles/installing-the-intel-atom-tm-android-x86-emulator-image-add-on-from-the-android-sdk-manager/
Much Faster Emulation• Intel® Hardware Accelerated
Execution Manager (HAXM) for Mac and Windows uses Intel® Virtualization Technology (VT) to accelerate x86 emulation by an order of magnitude
• VT is supported in Linux* (KVM) for x86
• http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/
Intel® Graphics Performance Analyzers (Intel® GPA)
• Provides real-time performance analysis of your OpenGL-ES* applications
• Conduct real-time experiments with OpenGL-ES* state overrides
• Triage system-level performance with CPU, Power and GPU metrics
System Analyzer
Note: Public release of Intel GPA for Android* is targeted for 2H-2012
Using Intel® Graphics Performance Analyzers
1. Install APK2. Run Intel® GPA System Analyzer on development machine
3. View Profile
Agenda
• Android* on IA Momentum
• Developing Android Apps for IA
• App Development with x86 NDK
Android* Native Development Kit (NDK)
Build scripts/toolkit to incorporate native c/c+
+ code in Android Apps via JNI
Why Use NDK?
• Performance intensive tasks
• e.g.: signal-processing/custom-algorithms
• Differentiated app that takes advantage of
direct CPU/HW access
• e.g.: specialized games
• Software Code reuse
• Legacy Code
• Huge legacy IA code base & libraries
Android* Application Overview
Android NDK Application
Dalvik Application
Android App Class
Java Source
Compile with Javac
Java Native Library Class
Java Native Library
Compile with Javac
Create C header with Javah -jni
Header File
C Source Code
Compile and Link C Code
Dynamic Library
Application File
Makefile
Adding Native Code to Android * Apps
Standard Android* Project Structure
Native Sources - JNI Folder
1. Create JNI folder for native sources
3. Create Android.mk with build rules
4. Build Native code using NDK-BUILD script.
2. Reuse or create native c/c++ sources
NDK will automatically create ABI lib folder.
Creating NDK-based Apps: Code Re-use Example
1. Create default Android* App project
~/labs/lab2$ android create project --target android-13 --activity CPUIdApp --package com.example.cpuid --path .
Sample Native Code for CPUID
Code Re-use Example (cont’d)
2. Define JNI Native Calls in Java* source to access CPUID native code3. Declare call to Load native lib cpuid.so (“cpuid”)
Code Re-use Example (cont’d)
4. Build with “ant” to generate Java* classes5. Use “javah” to generate JNI headers
Code Re-use Example (cont’d)
6. Implement native source stub based on generated header stub
7. Create Android.mk build rules for compiling native code with NDK
Code Re-use Example (cont’d)
8. Compile native sources with “ndk-build” script : specify APP_ABI=x869. Rebuild the final APK with ant, and optional install on emulator!
Porting Existing NDK-based Apps
A simple 4-step process:
1. Recompile existing native module with APP_ABI=all
2. Update the project to use Android* platform of choice (e.g. ICS target API is “Android-15”)
Porting Existing NDK-based Apps (cont’d)
3. Repackage the project into final APK file
- Example: Using “ant debug” for demo purposes
4. Install/Test the App (APK) on x86 Android* emulator or device
NDK Tips: Let the NDK Do the Hard Work
• Include all ABIs in jni/Application.mk
• The NDK will generate highly optimized code for all target ABIs
Build ARM v5…
Build ARM v7a…
Build ARM x86…
NDK Tips: Use “Fat Binaries”
Source Code
Application.mk with multiple ABIs
libs/armeabi-v7a
libs/x86
libs/armeabi
ndk-build apkbuilder
…
• Fat Binaries are .apk files that supports multiple ABIs• Use “APP_ABI := armeabi armeabi-v7a x86” in Application.mk
– Can use “APP_ABI := all” since NDK version r7
Install Will Select The Right .so
Use lib/armeabi libraries
Use lib/armeabi-v7a libraries
Use lib/x86 libraries
• Android Market will automatically filter applications based on ABI support
Intel Legal Information
INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL’S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL® PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. INTEL PRODUCTS ARE NOT INTENDED FOR USE IN MEDICAL, LIFE SAVING, OR LIFE SUSTAINING APPLICATIONS.
Intel may make changes to specifications and product descriptions at any time, without notice.
All products, dates, and figures specified are preliminary based on current expectations, and are subject to change without notice.
Intel, processors, chipsets, and desktop boards may contain design defects or errors known as errata, which may cause the product to deviate from published specifications. Current characterized errata are available on request.
Intel, Intel logo, Intel Atom, Intel Atom Inside,, Intel Inside, and Intel Inside logo are trademarks of Intel Corporation in the U.S. and other countries.
Android is a registered trademark of Google, Inc.
Java and all Java based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
For more complete information about performance and benchmark results, visit www.intel.com/benchmarks
Other names and brands may be claimed as the property of others.
Copyright © 2012 Intel Corporation.
Intel Technology is Used in a Broad Range of leading Smartphones and Tablets …
K800
...and more to come
XoomTab
San Diego