You are previewing Introduction to Android™ Application Development: Android Essentials, Fifth Edition.
O'Reilly logo
Introduction to Android™ Application Development: Android Essentials, Fifth Edition

Book Description

What Every Android App Developer Should Know Today: Android 6 Tools, App/UI Design, Testing, Publishing, and More

Introduction to AndroidApplication Development, Fifth Edition, is the most useful real-world guide to building robust, commercial-grade Android apps with the new Android 6 SDK, Android Studio, and latest development best practices. Bigger, better, and more comprehensive than ever, this book covers everything you need to start developing professional apps for modern Android devices. If you’re serious about Android development, this guide will prepare you to build virtually any app you can imagine!

Three well-respected experts guide you through setting up your development environment, designing user interfaces, developing for diverse devices, and optimizing your entire app-development process. Up-to-date code listings support in-depth explanations of key API features, and many chapters contain multiple sample apps.

This fifth edition adds brand-new chapters on material design, styling applications, design patterns, and querying with SQLite. You’ll find a treasure trove of Android Studio tips, plus a brand-new appendix on the Gradle build system. This edition also offers

  • Updated coverage of the latest Android 5.1 and 6 APIs, tools, utilities, and best practices

  • New coverage of the Android 6.0 permission model

  • Powerful techniques for integrating material design into your apps

  • An all-new chapter on using styles and reusing common UI components

  • Extensive new coverage of app design, architecture, and backward compatibility

  • A full chapter on using SQLite with persistent database-backed app data

  • Revised quiz questions and exercises to test your knowledge 

  • Download this book’s source code at or

    Table of Contents

    1. About This E-Book
    2. Title Page
    3. Copyright Page
    4. Praise for Introduction to Android™ Application Development, Fifth Edition
    5. Dedication Page
    6. Contents at a Glance
    7. Contents
    8. Acknowledgments
    9. About the Authors
    10. Introduction
      1. Who Should Read This Book
      2. Key Questions Answered in This Book
      3. How This Book Is Structured
      4. An Overview of Changes in This Edition
      5. Development Environments Used in This Book
      6. Supplementary Materials for This Book
      7. Conventions Used in This Book
      8. Where to Find More Information
      9. Contacting the Authors
    11. I: Platform Overview
      1. 1. Presenting Android
        1. The Android Open Source Project (AOSP)
        2. The Open Handset Alliance
          1. Google Goes Mobile First
          2. Introducing the Open Handset Alliance
          3. Joining the Open Handset Alliance
          4. Manufacturers: Designing Android Devices
          5. Mobile Operators: Delivering the Android Experience
          6. Apps Drive Device Sales: Developing Android Applications
          7. Taking Advantage of All Android Has to Offer
          8. Android: Where We Are Now
        3. Android Platform Uniqueness
          1. Android: The Code Names
          2. Free and Open Source
          3. Familiar and Inexpensive Development Tools
          4. Reasonable Learning Curve for Developers
          5. Enabling Development of Powerful Applications
          6. Rich, Secure Application Integration
          7. No Costly Obstacles for Development
          8. A “Free Market” for Applications
          9. A Growing Platform
        4. The Android Platform
          1. Android’s Underlying Architecture
          2. Security and Permissions
          3. Exploring Android Applications
        5. Android beyond the OHA and GMS
          1. Amazon Fire OS
          2. Cyanogen OS and CyanogenMod
          3. Maker Movement and Open-Source Hardware
          4. Maintaining Awareness
        6. Summary
        7. Quiz Questions
        8. Exercises
        9. References and More Information
      2. 2. Setting Up for Development
        1. Configuring Your Development Environment
          1. Configuring Your Operating System for Device Debugging
          2. Configuring Your Android Hardware for Debugging
          3. Upgrading Android Studio
          4. Upgrading the Android SDK
          5. Problems with Android Studio
          6. Problems with the Android SDK
          7. IntelliJ IDEA as an Android Studio Alternative
        2. Exploring the Android SDK
          1. Understanding the Android SDK License Agreement
          2. Reading the Android SDK Documentation
          3. Exploring the Core Android Application Framework
          4. Exploring the Core Android Tools
          5. Exploring the Android Sample Applications
        3. Summary
        4. Quiz Questions
        5. Exercises
        6. References and More Information
      3. 3. Creating Your First Application
        1. Testing Your Development Environment
          1. Importing the BorderlessButtons Sample into Android Studio
          2. Using the Preinstalled AVD for Running Your BorderlessButtons Project
          3. Running the BorderlessButtons Application in the Android Emulator
        2. Building Your First Android Application
          1. Creating and Configuring a New Android Project
          2. Understanding the Android Symbolic View and the Traditional Project View
          3. Core Files and Directories of the Android Application
          4. Running Your Android Application in the Emulator
          5. Debugging Your Android Application in the Emulator
          6. Adding Logging Support to Your Android Application
          7. Debugging Your Application on Hardware
        3. Summary
        4. Quiz Questions
        5. Exercises
        6. References and More Information
    12. II: Application Basics
      1. 4. Understanding Application Components
        1. Mastering Important Android Terminology
        2. The Application Context
          1. Retrieving the Application Context
          2. Using the Application Context
        3. Performing Application Tasks with Activities
          1. The Lifecycle of an Android Activity
        4. Organizing Activity Components with Fragments
        5. Managing Activity Transitions with Intents
          1. Transitioning between Activities with Intents
          2. Organizing Application Navigation with Activities, Fragments, and Intents
        6. Working with Services
        7. Receiving and Broadcasting Intents
        8. Summary
        9. Quiz Questions
        10. Exercises
        11. References and More Information
      2. 5. Defining the Manifest
        1. Configuring Android Applications Using the Android Manifest File
          1. Editing the Android Manifest File
        2. Managing Your Application’s Identity
          1. Setting the Application Name and Icon
        3. Enforcing Application System Requirements
          1. Enforcing Application Platform Requirements
          2. Other Application-Configuration Settings and Filters
        4. Registering Activities in the Android Manifest
          1. Designating a Primary Entry-Point Activity for Your Application Using an Intent Filter
          2. Configuring Other Intent Filters
          3. Registering Other Application Components
        5. Working with Permissions
          1. Registering Permissions Your Application Requires
          2. Registering Permissions Your Application Enforces
        6. Exploring Other Manifest File Settings
        7. Summary
        8. Quiz Questions
        9. Exercises
        10. References and More Information
      3. 6. Managing Application Resources
        1. What Are Resources?
          1. Storing Application Resources
          2. Resource Value Types
          3. Accessing Resources Programmatically
        2. Adding Simple Resource Values in Android Studio
        3. Working with Different Types of Resources
          1. Working with String Resources
          2. Using String Resources as Format Strings
          3. Working with Quantity Strings
          4. Working with String Arrays
          5. Working with Boolean Resources
          6. Working with Integer Resources
          7. Working with Colors
          8. Working with Dimensions
          9. Using Dimension Resources Programmatically
          10. Drawable Resources
          11. Working with Images
          12. Working with Color State Lists
          13. Working with Animation
          14. Working with Menus
          15. Working with XML Files
          16. Working with Raw Files
          17. References to Resources
        4. Working with Layouts
          1. Designing Layouts in Android Studio
          2. Using Layout Resources Programmatically
        5. Referencing System Resources
        6. Summary
        7. Quiz Questions
        8. Exercises
        9. References and More Information
      4. 7. Exploring Building Blocks
        1. Introducing Android Views and Layouts
          1. The Android View
          2. The Android Controls
          3. The Android Layout
        2. Displaying Text to Users with TextView
          1. Configuring Layout and Sizing
          2. Creating Contextual Links in Text
        3. Retrieving Data from Users with Text Fields
          1. Retrieving Text Input Using EditText Controls
          2. Constraining User Input with Input Filters
          3. Helping the User with Autocompletion
        4. Giving Users Choices Using Spinner Controls
        5. Allowing Simple User Selections with Buttons and Switches
          1. Using Basic Buttons
          2. Using CheckBox and ToggleButton Controls
          3. Using RadioGroup and RadioButton
        6. Retrieving Dates, Times, and Numbers from Users with Pickers
        7. Using Indicators to Display Progress and Activity to Users
          1. Indicating Progress with ProgressBar
          2. Adding Progress Indicators to the ActionBar
          3. Indicating Activity with Activity Bars and Activity Circles
        8. Adjusting Progress with Seek Bars
        9. Other Valuable User Interface Controls
          1. Displaying Rating Data with RatingBar
          2. Showing Time Passage with the Chronometer
          3. Displaying the Time
          4. Playing Video with VideoView
        10. Summary
        11. Quiz Questions
        12. Exercises
        13. References and More Information
      5. 8. Positioning with Layouts
        1. Creating User Interfaces in Android
          1. Creating Layouts Using XML Resources
          2. Creating Layouts Programmatically
        2. Organizing Your User Interface
          1. Using ViewGroup Subclasses for Layout Design
          2. Using ViewGroup Subclasses as View Containers
        3. Using Built-in Layout Classes
          1. Using LinearLayout
          2. Using RelativeLayout
          3. Using FrameLayout
          4. Using TableLayout
          5. Using GridLayout
          6. Using Multiple Layouts on a Screen
        4. Using Container Control Classes
          1. Using Data-Driven Containers
          2. Adding Scrolling Support
          3. Exploring Other View Containers
        5. Summary
        6. Quiz Questions
        7. Exercises
        8. References and More Information
      6. 9. Partitioning with Fragments
        1. Understanding Fragments
          1. Understanding the Fragment Lifecycle
          2. Managing Fragment Modifications
          3. Working with Special Types of Fragments
          4. Designing Fragment-Based Applications
        2. Using the Android Support Library Package
          1. Adding Fragment Support to Legacy Applications
          2. Using Fragments in New Applications Targeting Older Platforms
          3. Linking the Android Support Package to Your Project
        3. Additional Ways to Use Fragments
          1. Behavior Fragments without a User Interface
          2. Exploring Nested Fragments
        4. Summary
        5. Quiz Questions
        6. Exercises
        7. References and More Information
    13. III: Application Design Essentials
      1. 10. Architecting with Patterns
        1. Architecting Your Application’s Navigation
          1. Android Application Navigation Scenarios
          2. Launching Tasks and Navigating the Back Stack
          3. Navigating with Fragments
          4. Relationships between Screens
          5. Android Navigation Design Patterns
        2. Encouraging Action
          1. Menus
          2. Action Bars
          3. Floating Action Button
          4. Actions Originating from Your Application’s Content
          5. Dialogs
        3. Summary
        4. Quiz Questions
        5. Exercises
        6. References and More Information
      2. 11. Appealing with Style
        1. Styling with Support
        2. Themes and Styles
          1. Defining the Default Application Themes
          2. Theme and Style Inheritance
        3. Colors
        4. Layout
          1. Merge and Include
          2. TextInputLayout
          3. FloatingActionButton
          4. Toolbar as Bottom Bar
        5. Application Branding
          1. Dividers and Gaps
          2. Menu
        6. The Results Applied
        7. Typography
        8. Summary
        9. Quiz Questions
        10. Exercises
        11. References and More Information
      3. 12. Embracing Material Design
        1. Understanding Material
        2. The Default Material Theme
        3. The SampleMaterial Application
        4. Implementing the SampleMaterial Application
          1. Dependencies
          2. Material Support Styles
          3. Showing the Dataset in the List
        5. Summary
        6. Quiz Questions
        7. Exercises
        8. References and More Information
      4. 13. Designing Compatible Applications
        1. Maximizing Application Compatibility
        2. Designing User Interfaces for Compatibility
          1. Working with Fragments
          2. Leveraging the Various Android Support Library APIs
          3. Supporting Specific Screen Types
          4. Working with Nine-Patch Stretchable Graphics
        3. Providing Alternative Application Resources
          1. Understanding How Resources Are Resolved
          2. Organizing Alternative Resources with Qualifiers
          3. Providing Resources for Different Orientations
          4. Using Alternative Resources Programmatically
          5. Organizing Application Resources Efficiently
        4. Targeting Tablets and TVs
          1. Targeting Tablet Devices
          2. Targeting TV Devices
        5. Extending Your Application to Watches and Cars
        6. Ensuring Compatibility with SafetyNet
        7. Summary
        8. Quiz Questions
        9. Exercises
        10. References and More Information
    14. IV: Application Development Essentials
      1. 14. Using Android Preferences
        1. Working with Application Preferences
          1. Determining When Preferences Are Appropriate
          2. Storing Different Types of Preference Values
          3. Creating Private Preferences for Use by a Single Activity
          4. Creating Shared Preferences for Use by Multiple Activities
          5. Searching and Reading Preferences
          6. Adding, Updating, and Deleting Preferences
          7. Reacting to Preference Changes
        2. Finding Preferences Data on the File System
        3. Creating Manageable User Preferences
          1. Creating a Preference Resource File
          2. Using the PreferenceActivity Class
          3. Organizing Preferences with Headers
        4. Auto Backup for Android Applications
        5. Summary
        6. Quiz Questions
        7. Exercises
        8. References and More Information
      2. 15. Accessing Files and Directories
        1. Working with Application Data on a Device
        2. Practicing Good File Management
        3. Understanding Android File Permissions
        4. Working with Files and Directories
          1. Exploring the Android Application Directories
          2. Working with Other Directories and Files on the Android File System
        5. Summary
        6. Quiz Questions
        7. Exercises
        8. References and More Information
      3. 16. Saving with SQLite
        1. SampleMaterial Upgraded with SQLite
        2. Working with Databases
          1. Providing Data Access
          2. Updating the SampleMaterialActivity Class
          3. Updating the SampleMaterialAdapter Constructor
          4. Database Operations Off the Main UI Thread
          5. Creating a Card in the Database
          6. Getting All Cards
          7. Adding a New Card
          8. Updating a Card
          9. Deleting a Card
        3. Summary
        4. Quiz Questions
        5. Exercises
        6. References and More Information
      4. 17. Leveraging Content Providers
        1. Exploring Android’s Content Providers
          1. Using the MediaStore Content Provider
          2. Using the CallLog Content Provider
          3. Using the CalendarContract Content Provider
          4. Using the UserDictionary Content Provider
          5. Using the VoicemailContract Content Provider
          6. Using the Settings Content Provider
          7. Introducing the ContactsContract Content Providers
        2. Modifying Content Provider Data
          1. Adding Records
          2. Updating Records
          3. Deleting Records
        3. Using Third-Party Content Providers
        4. Summary
        5. Quiz Questions
        6. Exercises
        7. References and More Information
    15. V: Application Delivery Essentials
      1. 18. Learning the Development Workflow
        1. An Overview of the Android Development Process
        2. Choosing a Software Methodology
          1. Understanding the Dangers of Waterfall Approaches
          2. Understanding the Value of Iteration
        3. Gathering Application Requirements
          1. Determining Project Requirements
          2. Developing Use Cases for Android Applications
          3. Incorporating Third-Party Requirements and Recommendations
          4. Managing a Device Database
        4. Assessing Project Risks
          1. Identifying Target Devices
          2. Acquiring Target Devices
          3. Determining the Feasibility of Application Requirements
          4. Understanding Quality Assurance Risks
        5. Writing Essential Project Documentation
          1. Developing Test Plans for Quality Assurance Purposes
          2. Providing Documentation Required by Third Parties
          3. Providing Documentation for Maintenance and Porting
        6. Leveraging Configuration Management Systems
          1. Choosing a Source Control System
          2. Implementing an Application Version System That Works
        7. Designing Android Applications
          1. Understanding Android Device Limitations
          2. Exploring Common Android Application Architectures
          3. Designing for Extensibility and Maintenance
          4. Designing for Application Interoperability
        8. Developing Android Applications
        9. Testing Android Applications
          1. Controlling the Test Release
        10. Deploying Android Applications
          1. Determining Target Markets
        11. Supporting and Maintaining Android Applications
          1. Track and Address Crashes Reported by Users
          2. Testing Firmware Upgrades
          3. Maintaining Adequate Application Documentation
          4. Managing Live Server Changes
          5. Identifying Low-Risk Porting Opportunities
          6. Application Feature Selection
        12. Summary
        13. Quiz Questions
        14. Exercises
        15. References and More Information
      2. 19. Planning the Experience
        1. Thinking about Objectives
          1. User Objectives
          2. Team Objectives
          3. Objectives of Other Stakeholders
        2. Techniques for Focusing Your Product Efforts
          1. Personas
          2. User Story Mapping
          3. Entity Discovery and Organization
          4. Planning User Interactions
        3. Communicating Your Application’s Identity
        4. Designing Screen Layouts
          1. Sketches
          2. Wireframes
          3. Design Comps
        5. Reacting Properly with Visual Feedback
        6. Observing Target Users for Usability
          1. Mocking Up the Application
          2. Testing the Release Build
        7. Summary
        8. Quiz Questions
        9. Exercises
        10. References and More Information
      3. 20. Delivering Quality Applications
        1. Best Practices in Delivering Quality Applications
          1. Meeting Android Users’ Demands
          2. Designing User Interfaces for Android Devices
          3. Designing Stable and Responsive Android Applications
          4. Designing Secure Android Applications
          5. Designing Android Applications for Maximum Profit
          6. Following the Android Application Quality Guidelines
          7. Leveraging Third-Party Quality Standards
          8. Designing Android Applications for Ease of Maintenance and Upgrades
          9. Leveraging Android Tools for Application Design
        2. Avoiding Silly Mistakes in Android Application Design
        3. Best Practices in Delivering Quality Android Applications
          1. Designing a Development Process That Works for Android Development
          2. Testing the Feasibility of Your Application Early and Often
          3. Using Coding Standards, Reviews, and Unit Tests to Improve Code Quality
          4. Handling Defects Occurring on a Single Device
          5. Leveraging Android Tools for Development
          6. Avoiding Silly Mistakes in Android Application Development
        4. Summary
        5. Quiz Questions
        6. Exercises
        7. References and More Information
      4. 21. Testing Your Applications
        1. Best Practices in Testing Mobile Applications
          1. Designing a Mobile Application Defect-Tracking System
          2. Managing the Testing Environment
          3. Maximizing Testing Coverage
          4. Leveraging Android SDK Tools for Android Application Testing
          5. Avoiding Silly Mistakes in Android Application Testing
        2. Android Application Testing Essentials
          1. Unit Testing with JUnit
          2. Introducing the PasswordMatcher Application
          3. Determining What Our Tests Should Prove
          4. Creating a Run Configuration for Test Code
          5. Writing the Tests
          6. Running Your First Test Using Android Studio
          7. Analyzing the Test Results
          8. Adding Additional Tests
        3. More Android Automated Testing Programs and APIs
        4. Summary
        5. Quiz Questions
        6. Exercises
        7. References and More Information
      5. 22. Distributing Your Applications
        1. Choosing the Right Distribution Model
          1. Protecting Your Intellectual Property
          2. Following the Policies of Google Play
          3. Billing the User
        2. Packaging Your Application for Publication
          1. Preparing Your Code for Packaging
          2. Packing and Signing Your Application
          3. Testing the Release Version of Your Application Package
          4. Including All Required Resources
          5. Readying Your Servers or Services
          6. Distributing Your Application
        3. Publishing to Google Play
          1. Signing Up for Publishing to Google Play
          2. Uploading Your Application to Google Play
          3. Uploading Application Marketing Assets
          4. Configuring Pricing and Distribution Details
          5. Configuring Additional Application Options
          6. Managing Other Developer Console Options
          7. Publishing Your Application to Google Play
          8. Managing Your Application on Google Play
        4. Google Play Staged Rollouts
        5. Publishing to the Google Play Private Channel
        6. Translating Your Application
        7. Publishing Using Other Alternatives
        8. Self-Publishing Your Application
        9. Summary
        10. Quiz Questions
        11. Exercises
        12. References and More Information
    16. VI: Appendixes
      1. A. Tips and Tricks: Android Studio
        1. Organizing Your Android Studio Workspace
          1. Integrating with Source Control Services
          2. Repositioning Windows within Android Studio
          3. Resizing the Editor Window
          4. Resizing Tool Windows
          5. Viewing Editor Windows Side by Side
          6. Viewing Two Sections of the Same File
          7. Closing Unwanted Tabs
          8. Keeping Editor Windows under Control
          9. Creating Custom Log Filters
          10. Searching Your Project
          11. Organizing Android Studio Tasks
        2. Writing Code in Java
          1. Using Autocomplete
          2. Creating New Classes and Methods
          3. Organizing Imports
          4. Reformatting Code
          5. Renaming Almost Anything
          6. Refactoring Code
          7. Reorganizing Code
          8. Using Intention Actions
          9. Providing Javadoc-Style Documentation
        3. Resolving Mysterious Build Errors
        4. Summary
        5. Quiz Questions
        6. Exercises
        7. References and More Information
      2. B. Quick-Start: Android Emulator
        1. Simulating Reality: The Emulator’s Purpose
        2. Working with Android Virtual Devices
          1. Using the Android Virtual Device Manager
          2. Creating an AVD
          3. Creating AVDs with Custom Hardware Settings
        3. Launching the Emulator with a Specific AVD
          1. Maintaining Emulator Performance
          2. Launching an Emulator to Run an Application
          3. Launching an Emulator from the Android Virtual Device Manager
        4. Configuring the GPS Location of the Emulator
        5. Calling between Two Emulator Instances
        6. Messaging between Two Emulator Instances
        7. Interacting with the Emulator through the Console
          1. Using the Console to Simulate Incoming Calls
          2. Using the Console to Simulate SMS Messages
          3. Using the Console to Send GPS Coordinates
          4. Using the Console to Monitor Network Status
          5. Using the Console to Manipulate Power Settings
          6. Using Other Console Commands
        8. Personalizing the Emulator
        9. Understanding Emulator Limitations
        10. Summary
        11. Quiz Questions
        12. Exercises
        13. References and More Information
      3. C. Quick-Start: Android Device Monitor
        1. Using Device Monitor with Android Studio and as a Stand-Alone Application
        2. Getting Up to Speed Using Key Features of Device Monitor
        3. Working with Processes, Threads, and the Heap
          1. Attaching a Debugger to an Android Application
          2. Stopping a Process
          3. Monitoring Thread Activity of an Android Application
          4. Monitoring Heap Activity
          5. Prompting Garbage Collection
          6. Creating and Using an HPROF File
        4. Using the Allocation Tracker
        5. Viewing Network Statistics
        6. Working with the File Explorer
          1. Browsing the File System of an Emulator or Device
          2. Copying Files from the Emulator or Device
          3. Copying Files to the Emulator or Device
          4. Deleting Files on the Emulator or Device
        7. Working with the Emulator Control
          1. Changing Telephony Status
          2. Simulating Incoming Voice Calls
          3. Simulating Incoming SMS Messages
          4. Sending a Location Fix
        8. Working with the System Information Pane
        9. Taking Screen Captures of the Emulator and Device Screens
        10. Working with Application Logging
        11. Summary
        12. Quiz Questions
        13. Exercises
        14. References and More Information
      4. D. Mastery: Android SDK Tools
        1. Using the Android Documentation
        2. Leveraging the Android Emulator
        3. Viewing Application Log Data with logcat
        4. Debugging Applications with Device Monitor
        5. Using Android Debug Bridge (ADB)
        6. Using the Layout Editor
        7. Using the Android Hierarchy Viewer
          1. Launching the Hierarchy Viewer
          2. Working in Layout View Mode
          3. Optimizing Your User Interface
          4. Working in Pixel Perfect Mode
        8. Working with Nine-Patch Stretchable Graphics
        9. Working with Other Android Tools
        10. Summary
        11. Quiz Questions
        12. Exercises
        13. References and More Information
      5. E. Quick-Start: Gradle Build System
        1. Gradle Build Files
          1. Project Settings
          2. Module Settings
        2. Using Android Studio to Configure Your Builds
          1. Syncing Your Project
          2. Configuring the Android Properties
          3. Working with Signing Options
          4. Configuring Different Build Flavors
          5. Configuring Different Build Types
          6. Configuring Application Dependencies
          7. Adding Library Dependencies
          8. Building Different APK Variants
          9. Running Different Gradle Build Tasks
        3. Summary
        4. Quiz Questions
        5. Exercises
        6. References and More Information
      6. F. Answers to Quiz Questions
        1. Chapter 1: Presenting Android
        2. Chapter 2: Setting Up for Development
        3. Chapter 3: Creating Your First Application
        4. Chapter 4: Understanding Application Components
        5. Chapter 5: Defining the Manifest
        6. Chapter 6: Managing Application Resources
        7. Chapter 7: Exploring Building Blocks
        8. Chapter 8: Positioning with Layouts
        9. Chapter 9: Partitioning with Fragments
        10. Chapter 10: Architecting with Patterns
        11. Chapter 11: Appealing with Style
        12. Chapter 12: Embracing Material Design
        13. Chapter 13: Designing Compatible Applications
        14. Chapter 14: Using Android Preferences
        15. Chapter 15: Accessing Files and Directories
        16. Chapter 16: Saving with SQLite
        17. Chapter 17: Leveraging Content Providers
        18. Chapter 18: Learning the Development Workflow
        19. Chapter 19: Planning the Experience
        20. Chapter 20: Delivering Quality Applications
        21. Chapter 21: Testing Your Applications
        22. Chapter 22: Distributing Your Applications
        23. Appendix A: Tips and Tricks: Android Studio
        24. Appendix B: Quick-Start: Android Emulator
        25. Appendix C: Quick-Start: Android Device Monitor
        26. Appendix D: Mastery: Android SDK Tools
        27. Appendix E: Quick-Start: Gradle Build System
    17. Index
    18. Code Snippets