Android on IA devices and Intel Tools


Published on

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Android on IA devices and Intel Tools

  1. 1. Android* on Intel platforms And what it means for you, developers. Xavier Hallade, Technical Marketing Engineer, Intel
  2. 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. 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. 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. 5. Intel® devices on the market
  6. 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. 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. 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. 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. 10. How to target multiple platforms (incl. x86) from NDK apps ?
  11. 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/”: APP_ABI=all Put APP_ABI=all inside 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. 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. 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. 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 • FMOD: x86 lib already included, set ABIs in • AppGameKit: x86 lib already included, set ABIs in • libgdx: x86 lib now available in latest releases • … No x86 support but works on consumer devices: • Corona • Unity
  15. 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. 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. 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: Licensed version available on:
  18. 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. 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
  20. 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
  21. 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:
  22. 22. Other tools and libs for Android* • Intel Beacon Mountain • Intel IPP Preview • Intel Compiler