Published by Addison-Wesley Professional (September 10, 2021) © 2022

G. Meike | Lawrence Schiefer
    VitalSource eTextbook (Lifetime access)
    €37,99
    Adding to cart… The item has been added
    ISBN-13: 9780134096414

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

    Language: English

    The Complete Guide to Customizing Android for New IoT and Embedded Devices


    Inside the Android OS is a comprehensive guide and reference for technical professionals who want to customize and integrate Android into embedded devices, and construct or maintain successful Android-based products. Replete with code examples, it encourages you to create your own working code as you read--whether for personal insight or a professional project in the fast-growing marketplace for smart IoT devices.


    Expert Android developers G. Blake Meike and Larry Schiefer respond to the real-world needs of embedded and IoT developers moving to Android. After presenting an accessible introduction to the Android environment, they guide you through boot, subsystem startup, hardware interfaces, and application support--offering essential knowledge without ever becoming obscure or overly specialized.


    Reflecting Android's continuing evolution, Meike and Schiefer help you take advantage of relevant innovations, from the ART application runtime environment to Project Treble. Throughout, a book-length project covers all you need to start implementing your own custom Android devices, one step at a time.


    You will:
    • Assess advantages and tradeoffs using Android in smart IoT devices
    • Master practical processes for customizing Android
    • Set up a build platform, download the AOSP source, and build an Android image
    • Explore Android's components, architecture, source code, and development tools
    • Understand essential kernel modules that are unique to Android
    • Use Android's extensive security infrastructure to protect devices and users
    • Walk through Android boot, from power-on through system initialization
    • Explore subsystem startup, and use Zygote containers to control application processes
    • Interface with hardware through Android's Hardware Abstraction Layer (HAL)
    • Provide access to Java programs via Java Native Interface (JNI)
    • Gain new flexibility by using binderized HAL (Project Treble)
    • Implement native C/C++ or Java client apps without bundling vendor libraries

    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