Inside the Android OS: Building, Customizing, Managing and Operating Android System Services, 1st edition

Published by Addison-Wesley Professional (August 4, 2021) © 2022

  • G Blake Meike
  • Lawrence Schiefer

eTextbook

$47.99

  • Available for purchase from all major ebook resellers, including InformIT.com.
  • To request a review copy, click on the "Request a Review Copy" button.
$39.99

  • A print text (hardcover or paperback) 
  • Free shipping
  • Also available for purchase as an ebook from all major ebook resellers, including InformIT.com
Inside the Android OS is the first comprehensive guide and reference for developers who want to customise and integrate Android into their own embedded devices. Replete with code examples, it encourages you to create your own working code versions as you read -- whether for your own personal insight or for a workplace project in the fast-growing marketplace for non-phone Android devices.

G. Blake Meike responds to the real-world needs of embedded and IoT developers moving to Android, providing indispensable information without becoming obscure or too specialised. Meike teaches through a book-length project that covers everything developers need to know to create their own custom Android service. You will find approachable yet precise coverage of:

  • Why Android is becoming a pervasive embedded platform
  • Using the Android four-tier architectural model in embedded devices
  • Setting up a build platform, downloading the AOSP source, and building an Android image
  • Walking through system startup on a running Android system
  • Running native services on embedded systems
  • Using the Android Native Development Kit (NDK) and HAL to link interpreted Java with native C/C++ code
  • Taking a deep dive into the seminal Zygote application and its Dalvik interpreter
  • Quickly building Java system services
  • Working with Binder, the heart and the root of the Android security and access control models
  • Establishing permissions and access control
  • Enabling apps to use the services you have created
  • A well-thought-out, start-to-finish approach to building Android into other products -- the first guide to serve the fast-growing market of engineers and software developers doing just that 
  • Unprecedented coverage of remote procedure calls, AIDL, and related security issues: crucial information for embedded Android 
  • Illuminates the underexploited Services capabilities from Android, including both architecture and implementation 
  • All code downloadable from companion GitHub site 
  • By one of the most respected experts in the field, G. Blake Meike 

The full text downloaded to your computer

With eBooks you can:

  • search for key concepts, words and phrases
  • make highlights and notes as you study
  • share your notes with friends

eBooks are downloaded to your computer and accessible either offline through the Bookshelf (available as a free download), available online and also via the iPad and Android apps.

Upon purchase, you'll gain instant access to this eBook.

Preface      xiii

Chapter 1  Why Android?      1

Adopting Android      1

    Full Stack      2

    Broad Acceptance      2

    Beautiful UI      2

    Linux Based      2

    Powerful Development Environment      3

    Open Source      3

AOSP and Google      5

Other Choices      6

    Micro-Controllers      6

    Other RTOSs      7

Summary      8

Chapter 2  Booting Acme      9

Setting Up a Build Machine      10

Downloading the Code      11

Repo      11

Forking the Source      15

    Android Version Selection      16

    Local Mirror      17

    Hosted Git Repositories      18

    Tree Snapshot      19

Repository Commit Pinning      19

Example: Local Mirror of Forked Repositories      19

Building an Image      24

Device Tools      27

    fastboot      28

    adb      29

Flashing the Device      30

Summary      33

Chapter 3  Getting Started      35

Putting Android in Its Place      35

    Hardware      36

    The Linux Kernel      36

    System Libraries      37

    Applications      38

    The Android Framework      39

The Android Service Model      40

Exploring the Source      43

    Other Sources      44

    What's in the Box?      44

Summary      48

Chapter 4  The Kernel      49

The Linux Kernel      49

    Kernel Process Management      50

    Kernel Memory Management      51

The Android Kernel      53

    Android Kernel Features      54

Building a Kernel      62

    The Build System      63

    Downloading the Source      63

Summary      66

Chapter 5  Platform Security      67

Types of Security      67

Verified Boot      68

Operational Security      69

    Android Software Layers      70

    The Process Sandbox      70

    SE Linux for Android      72

    SE Policy Definition      73

    Android Permissions      76

    File Systems      79

User Protections      82

Customizing Permissions      83

    Sample Custom Permission-Protected App      83

    Sample Custom Permission Client App      88

Summary      92

Chapter 6  System Startup: Installing and Booting the System      93

The Boot Process      93

    Bootloader      95

    Fastboot      99

    Kernel      100

    The File System      102

    init      104

Recovery      106

Building a Daemon      107

Creating the Acme Device      107

Repo Again      110

Starting the Daemon      111

Summary      114

Chapter 7  Android Startup: Dalvik and Zygote      115

Dalvik      116

    ART      120

    ART Basics      120

Hybrid ART      122

Zygote      123

    Zygote Memory Management      123

    Zygote Startup      127

    Runtime Initialization      128

    System Service Startup      129

Summary      131

Citations      131

Chapter 8  Getting to Android: The HAL      133

Why a HAL?      133

Is a HAL Necessary?      135

Designing the HAL      136

Building a HAL      137

    Code Structure      138

    Implementing the HAL      140

Summary      151

Chapter 9  Getting to Java: The JNI      153

Code Structure      154

Using the Device      155

Using the HAL      157

Using the Java Native Interface      159

    Executing Native Code      160

    JNI: The Java Side      161

    JNI: The Native Side      162

    A Java Proximity Application      165

    JNI: Some Hints      176

Summary      182

Chapter 10  Project Treble: Binderized HAL      183

HIDL Architecture      183

    hwservicemanager      185

    HIDL Services      185

    HIDL Client Applications      186

Hardware Interface Definition Language (HIDL)      186

    HIDL Types      191

HIDL Services      194

HIDL Clients      197

Summary      198

Chapter 11  Creating a Custom Binderized HAL      199

Acme Custom HIDL      199

Summary      217

Chapter 12  Clients for a Custom Binderized HAL      219

Native C++ Aproximity Client      219

    SE Linux for Android Changes for aproximitycl      224

    Build aproximitycl into Acme      225

Java/Kotlin Aproximity Client      226

    SE Linux for Android Changes for AproximityClient      229

    Build AproximityClient into Acme      229

Summary      231

Index      233

Blake Meike is a passionate engineer, code poet, and veteran of more than 10 years of Android development at organizations including D2, Realm, Twitter, and Cyanogen. As a teacher, he has trained hundreds of new Android developers. He is author of several books on Android development, including O'Reilly's bestselling Programming Android and Addison-Wesley's Android Concurrency. He holds a degree in Mathematics and Computer Science from Dartmouth College and lives in the Pacific Northwest.

Larry Schiefer is the CTO and co-founder of HIQES, LLC, a mobile platform and app engineering services company. He has made a career out of creating software solutions for mobile, embedded, and desktop systems. He started his career at Motorola working on large area telecommunications systems then moved to startups in the telecommunications, networking, and embedded spaces. Digging into Android's internals was a natural progression with his background in telecommunications, embedded systems, and Linux kernel work. He has traveled around the world training engineers at Intel, Qualcomm, Bose, and others about the internal workings of Android. In addition to being an entrepreneur and technical leader, he continues to stay involved with the development of new software and platform solutions.

Need help? Get in touch

Video
Play
Privacy and cookies
By watching, you agree Pearson can share your viewership data for marketing and analytics for one year, revocable by deleting your cookies.

Pearson eTextbook: What’s on the inside just might surprise you

They say you can’t judge a book by its cover. It’s the same with your students. Meet each one right where they are with an engaging, interactive, personalized learning experience that goes beyond the textbook to fit any schedule, any budget, and any lifestyle.Â