You are previewing Android on x86: An Introduction to Optimizing for Intel® Architecture.
O'Reilly logo
Android on x86: An Introduction to Optimizing for Intel® Architecture

Book Description

Android on x86: an Introduction to Optimizing for Intel® Architecture serves two main purposes. First, it makes the case for adapting your applications onto Intel's x86 architecture, including discussions of the business potential, the changing landscape of the Android marketplace, and the unique challenges and opportunities that arise from x86 devices. The fundamental idea is that extending your applications to support x86 or creating new ones is not difficult, but it is imperative to know all of the technicalities. This book is dedicated to providing you with an awareness of these nuances and an understanding of how to tackle them.

Second, and most importantly, this book provides a one-stop detailed resource for best practices and procedures associated with the installation issues, hardware optimization issues, software requirements, programming tasks, and performance optimizations that emerge when developers consider the x86 Android devices. Optimization discussions dive into native code, hardware acceleration, and advanced profiling of multimedia applications. The authors have collected this information so that you can use the book as a guide for the specific requirements of each application project.

This book is not dedicated solely to code; instead it is filled with the information you need in order to take advantage of x86 architecture. It will guide you through installing the Android SDK for Intel Architecture, help you understand the differences and similarities between processor architectures available in Android devices, teach you to create and port applications, debug existing x86 applications, offer solutions for NDK and C++ optimizations, and introduce the Intel Hardware Accelerated Execution Manager. This book provides the most useful information to help you get the job done quickly while utilizing best practices.

What you'll learn

  • The development-relevant differences between Android on ARM and Android on Intel x86

  • How to set up the SDK for an emulated Intel Android device

  • How to build the Android OS for the Intel Mobile Processor

  • How to create new x86 based Android applications, set up testing and performance tuning, and port existing Android applications to work with the x86 processor

  • How to debug problems they encounter when working on the x86 Android test platform

  • Intricacies of the Intel Hardware Accelerated Execution Manager. The reader will also gain significant insight into the OpenGL Android support.

Who this book is for

  • Android developers

  • Hardware designers who need to understand how Android will work on their processors

  • CIOs and CEOs of technology-based companies

  • IT staff who may encounter or need to understand the issues

  • New startup founders and entrepreneurs

  • Computer science students

Table of Contents

  1. Title Page
  2. About ApressOpen
  3. Dedication
  4. Contents at a Glance
  5. Contents
  6. About the Authors
  7. Acknowledgments
  8. Introduction
  9. CHAPTER 1: History and Evolution of the Android OS
    1. Origins
    2. What Is Android?
    3. The Open Handset Alliance
    4. Android Open Source Project
    5. Overview
  10. CHAPTER 2: The Mobile Device and Operating System Landscape
    1. Competition in the Mobile Space
    2. Before Android
    3. The Mobile Market: Success and Failure
    4. The Mobile Market: Trends
    5. Overview
  11. CHAPTER 3: Beyond the Mobile App—A Technology Foundation
    1. Connected Devices
    2. Special Requirements
    3. The Cyber Fiber of Our Connected World
    4. Mobile Interfaces
    5. Overview
  12. CHAPTER 4: Android Development—Business Overview and Considerations
    1. The Android Market Share
    2. Legacy and Future Platform Support
    3. Security of Android
    4. Licensing
    5. Physical Development Costs
    6. Overview
  13. CHAPTER 5: The Intel Mobile Processor
    1. Intel’s x86 Line
    2. Clash of the Mobile Titans: ARM versus Intel
    3. Intel’s Atom Line of Microprocessors
    4. Inside the Medfield System-on-Chip
    5. Architecture Differences between Intel’s Saltwell and ARM’s Cortex A15
    6. Intel Hyper-Threading Technology
    7. Application Compatibility: Native Development Kit and Binary Translator
    8. Overview
  14. CHAPTER 6: Installing the Android SDK for Intel Application Development
    1. Preparing for the SDK Installation
    2. Downloading the SDK Starter Package and Adding SDK Components
    3. Overview of Android Virtual Device Emulation
    4. Key Gingerbread Features
    5. Ice Cream Sandwich Emulation
    6. Overview
  15. CHAPTER 7: Creating and Porting NDK-Based Android Applications
    1. JNI and NDK Introduction
    2. NDK Installation
    3. NDK Examples
    4. NDK Compiler Optimization
    5. Overview
  16. CHAPTER 8: Debugging Android
    1. Prerequisites
    2. Application Debugging Using the Android Debug Bridge
    3. Intel Hardware Accelerated Execution Manager
    4. Running Android Within Oracle VirtualBox
    5. Debugging with GDB, the GNU Project Debugger
    6. The Intel Graphics Performance Analyzer (Intel GPA)
    7. System Debug of Android OS Running on an Intel Atom Processor
    8. Cross-Debug: Intel Atom Processor and ARM Architecture
    9. Considerations for Intel Hyper-Threading Technology
    10. SoC and Interaction of Heterogeneous Multi-Core
    11. Overview
  17. CHAPTER 9: Performance Optimizations for Android Applications on x86
    1. Basic Concepts of Performance Optimization
    2. Methodology of Performance Optimizations
    3. Performance Optimization Approaches
    4. Performance Tuning with Intel VTune
    5. Intel Graphics Performance Analyzers
    6. Android Multithreaded Design
    7. Case Study: Intel GPA–Assisted Multithreaded Optimization for an Android Application
    8. Overview
  18. CHAPTER 10: x86 NDK and C/C++ Optimizations
    1. Vectorization
    2. Optimization with Intel IPP
    3. NDK Integrated Optimization Examples
    4. Multiple Situations Comparison of Compiler Optimization Extensions
    5. Overview
  19. CHAPTER 11: Using Intel Hardware Accelerated Execution Manager on Windows, Mac OS, and Linux to Speed Up Android on x86 Emulation
    1. Introduction
    2. Downloading Intel HAXM
    3. Downloading Through Android SDK Manager
    4. Downloading Manually
    5. Installing Intel HAXM on Windows
    6. Adjusting Intel HAXM Memory Allocation
    7. Intel Virtualization Technology (Intel VT-x) Capability
    8. Tips and Tricks
    9. Mac OS
    10. Adjusting Intel HAXM Memory Allocation
    11. Removing Intel HAXM
    12. Troubleshooting
    13. Intel Execute Disable (XD) Bit Capability Error
    14. Intel Virtualization Technology (VT-x) Capability
    15. Tips and Tricks
    16. Linux
    17. KVM Installation
    18. Start the AVD from Android SDK Directly from Terminal
    19. Start the AVD by AVD Manager in Eclipse
    20. Overview
  20. CHAPTER 12: Performance Testing and Profiling Apps with Platform Tuning
    1. Start with Your First x86 Full Format Video Player
    2. How to Determine CPU Usage and Find Hotspots
    3. Use Yasm to Get the Best-Performing x86 Library
    4. Use SSE (Intel’s Streaming SIMD Extensions) to Optimize Color Space Transformation
    5. How to Display an Image Using the Android 4.0 NDK
    6. The Common Cross-Compile Script
    7. Testing and Profiling with Hardware Acceleration
    8. Using the Integration Layer (IL) for Hardware Encoding
    9. Use OpenMAX AL on Android 4.0
    10. Use a Powerful Media API: MediaCodec on Android 4.1
    11. Overview
  21. APPENDIX A: References
    1. CHAPTER 1: History and Evolution of the Android OS
    2. CHAPTER 2: The Mobile Device and Operating System Landscape
    3. CHAPTER 3: Beyond the Mobile App—A Technology Foundation
    4. CHAPTER 4: Android Development—Business Overview and Considerations
    5. CHAPTER 5: The Intel Mobile Processor
    6. CHAPTER 6: Installing the Android SDK for Intel Application Development
    7. CHAPTER 7: Creating and Porting NDK-Based Android Applications
    8. CHAPTER 8: Debugging Android
    9. CHAPTER 9: Performance Optimizations for Android Applications on x86
    10. CHAPTER 10: x86 NDK and C/C++ Optimizations
    11. CHAPTER 11: Using Intel Hardware Accelerated Execution Manager on Windows, Mac OS, and Linux to Speed Up Android on x86 Emulation
    12. CHAPTER 12: Performance Testing and Profiling Apps with Platform Tuning
  22. Index