Android on X86 : An Introduction to Optimizing for Intel Architecture.
- 1 online resource (375 pages)
Intro -- Contents at a Glance -- Contents -- About the Authors -- Acknowledgments -- Introduction -- Chapter 1: History and Evolution of the Android OS -- Origins -- The First Distribution of Android -- Open Source Apache License -- What Is Android? -- Applications -- Application Frameworks -- Native Libraries -- Surface Manager -- SQLite -- WebKit -- OpenGL/ES -- Android Runtime -- Linux Kernel -- The Open Handset Alliance -- Android Open Source Project -- Astro (1.0) -- Cupcake (1.5) -- Donut (1.6) -- �Eclair (2.0/2.1) -- Froyo (2.2.x) -- Gingerbread (2.3.x) -- Honeycomb (3.x) -- Ice Cream Sandwich (4.0.x) -- Jelly Bean (4.1.x) -- KitKat (4.4.x) -- Overview -- Chapter 2: The Mobile Device and Operating System Landscape -- Competition in the Mobile Space -- iOS -- Overview -- Applications -- Platforms -- BlackBerry -- Windows Phone -- Symbian -- MeeGo -- Before Android -- Smartphone History -- Simon Personal Communicator -- Nokia 9000 (Nokia Communicator) -- Kyocera 6035 -- BlackBerry 5810 -- The Mobile Market: Success and Failure -- Motorola i1 -- Droid X -- BlackBerry Torch -- iPhone -- The Mobile Market: Trends -- Location -- Current Mobile Uses -- Commerce -- Overview -- Chapter 3: Beyond the Mobile App-A Technology Foundation -- Connected Devices -- Home Computing -- Automotive -- Digital Entertainment -- Special Requirements -- Ruggedization -- Ingress Protection Rating -- Medical -- Virtualized -- Secure Communications -- Type 1 -- Federal Information Processing Standard -- The Cyber Fiber of Our Connected World -- Cellular Networks -- Open Mobile Alliance -- Wireless Communications -- Wi-Fi -- Bluetooth -- Mobile Interfaces -- Touch Screens -- Capacitive -- Resistive -- Vibration Motors -- LED Lights -- Accelerometer -- Tilt Sensor -- Hardware Buttons -- Overview -- Chapter 4: Android Development- Business Overview and Considerations. The Android Market Share -- How Android Makes Money -- Why Android Is Successful -- Free -- Open Source -- Customization -- Application Base -- Hardware Choices -- Device Price -- Legacy and Future Platform Support -- Legacy Support -- Future Support -- Why x86 and Android Are Right for You -- Cross Compatibility -- Barrier to Entry -- Security of Android -- Application Security -- Platform Security -- Licensing -- Android Licensing Cost -- Application Licensing Cost -- Physical Development Costs -- Software Development Systems -- Android Testing Systems -- Overview -- Chapter 5: The Intel Mobile Processor -- Intel's x86 Line -- History -- Strengths and Weaknesses -- Business Model -- Clash of the Mobile Titans: ARM versus Intel -- ARM -- History -- Strengths and Weaknesses -- Business Model -- Future -- Intel's Atom Line of Microprocessors -- Intel Atom Evolution -- Intel Atom Security -- Intel Atom Features -- Android and the Atom -- Inside the Medfield System-on-Chip -- Zooming In on the Saltwell CPU Architecture -- Architecture Differences between Intel's Saltwell and ARM's Cortex A15 -- Architecture -- Integer Pipelines -- Instruction Sets -- Multi-Core/Thread Support -- Security Technology -- Intel Hyper-Threading Technology -- Application Compatibility: Native Development Kit and Binary Translator -- Overview -- Chapter 6: Installing the Android SDK for Intel Application Development -- Preparing for the SDK Installation -- Supported Operating Systems -- Hardware Requirements -- Installing the JDK -- Installing Eclipse -- Installing Apache Ant (Optional) -- Downloading the SDK Starter Package and Adding SDK Components -- Setting Up Eclipse to work with the SDK -- Installing the ADT Plug-in for Eclipse -- Configuring the ADT Plug-in -- Overview of Android Virtual Device Emulation -- Which Emulator Should You Use -- Why Use the Emulator. Building an Emulator Image -- Setting Up the SDK to Use x86 Emulator Images -- Key Gingerbread Features -- Battery Usage Stats -- Task Manager -- Cut and Paste Text -- Ice Cream Sandwich Emulation -- Prerequisites -- Downloading Through the Android SDK Manager -- Using the System Image -- Downloading Manually -- CPU Acceleration -- GPU Acceleration -- Overview -- Chapter 7: Creating and Porting NDK-Based Android Applications -- JNI and NDK Introduction -- JNI Introduction -- Java Methods and Their Corresponding Relationship with the C Function Prototype Java -- Java and C Data Type Mapping -- NDK Introduction -- NDK Installation -- Android NDK Installation -- Install Cygwin -- Install CDT -- NDK Examples -- Using the Command-Line Method to Generate a Library File -- Create an Android App Project -- Modify the Java Files -- Generate the Project in Eclipse -- Create a Subdirectory in the Project Root Directory -- Create a C Interface File -- Compile the Corresponding. C File -- Create the NDK Makefile File in the jni Directory -- Generating a Library File in the IDE -- Workflow Analysis for NDK Application Development -- NDK Compiler Optimization -- Machine-Independent Compiler Switch Options -- -0 or -01 -- -02 -- -03 -- -00 -- Intel Processor-Related Compiler Switch Options -- Overview -- Chapter 8: Debugging Android -- Prerequisites -- Intel USB Driver for Android Devices -- Installing the Intel Atom x86 System Image for Android Emulator -- Application Debugging Using the Android Debug Bridge -- Setting Up ADB -- ADB on Windows -- ADB Host-Client Communication -- Starting ADB -- Key ADB Device Commands -- Using the Android Debug Tools Plug-in for Eclipse -- The Debug Perspective in Eclipse -- The DDMS Perspective -- Application Runtime Environment for Debugging -- Intel Hardware Accelerated Execution Manager -- KVM Installation. Using a 64-Bit Kernel -- Install KVM -- Starting the Android Virtual Device -- Using AVD Manager in Eclipse to Launch a Virtual Device -- Running Android Within Oracle VirtualBox -- Google x86 VirtualBox Build Targets for Android 4.x -- Downloading the Source Tree and Installing the Repository -- Building a Custom Kernel with Mouse Support -- Add Patched Kernel -- Reduce Compile Time Using CCACHE -- Build Android 4.0.x with New Kernel -- Build the VirtualBox Disk and Android Installer -- Using an Android Installer Disk to Create a Large Virtual Partition -- Serial Port -- Ethernet -- Final Notes -- Debugging with GDB, the GNU Project Debugger -- The Intel Graphics Performance Analyzer (Intel GPA) -- System Debug of Android OS Running on an Intel Atom Processor -- JTAG Debugging -- Android OS Debugging, -- Device Driver Debugging -- Hardware Breakpoints -- Cross-Debug: Intel Atom Processor and ARM Architecture -- Variable Length Instructions -- Hardware Interrupts -- Single Step -- Virtual Memory Mapping -- Considerations for Intel Hyper-Threading Technology -- SoC and Interaction of Heterogeneous Multi-Core -- SVEN (System Visible Event Nexus) -- Signal Encode/Decode Debug -- SVEN Benefits -- Overview -- Chapter 9: Performance Optimizations for Android Applications on x86 -- Basic Concepts of Performance Optimization -- Selection of a Faster Instruction -- Improve the Degree of Parallelism -- Effective Use of the Register Cache -- Methodology of Performance Optimizations -- Performance Optimization Approaches -- Performance Optimizations Automatically Done by a Compiler -- Performance Optimizations Assisted by Development Tools -- Use of High-Performance Libraries -- Performance Optimizations Done Manually -- Performance Tuning with Intel VTune -- System Tuning -- Tuning Based on the Microarchitecture of the Processor -- VTune's two modes. Intel Graphics Performance Analyzers -- Introduction -- Installation -- Sample Usage of Intel GPA on Android -- Android Multithreaded Design -- Android Framework or a Thread -- Java Thread Programming Interface -- Threaded Programming Extensions and Support -- Message -- Handler -- Message Queue -- Looper -- AsyncTask -- Thread Example -- Thread Synchronization -- Thread Communication -- Principles of Multithreaded Optimization for Intel Atom Processors -- Case Study: Intel GPA-Assisted Multithreaded Optimization for an Android Application -- Original Application and Intel GPA Analysis -- Optimized Application and Intel GPA Analysis -- Overview -- Chapter 10: x86 NDK and C/C++ Optimizations -- Vectorization -- Vectorization Report -- Pragmas -- Auto-Vectorization and Limits -- Interprocedural Optimizations -- Optimization with Intel IPP -- NDK Integrated Optimization Examples -- C/C++: The Original Application Acceleration -- Step 1: Create a New Android Application Project -- Step 2: Write the C Implementation Code of the cCodeTask Function -- Compiler Optimization Extension Application -- Step 1: Modify the Android Part of the Application -- Step 2: Modify the Makefile File of mycomputetask.c and Rebuild the Library Files -- Step 2: Write the C Implementation Code for the anotherCCodeTask Function -- Multiple Situations Comparison of Compiler Optimization Extensions -- Example: Compare the Optimization Results by Using SSE Instructions -- Overview -- Chapter 11: Using Intel Hardware Accelerated Execution Manager on Windows, Mac OS, and Linux to Speed Up Android on x86 Emu... -- Introduction -- Downloading Intel HAXM -- Downloading Through Android SDK Manager -- Downloading Manually -- Installing Intel HAXM on Windows -- Adjusting Intel HAXM Memory Allocation -- Intel Virtualization Technology (Intel VT-x) Capability -- Intel VT-x Is Not Supported. Intel VT-x Is Not Enabled.