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…mehr
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
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.
Inhaltsangabe
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
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
Es gelten unsere Allgemeinen Geschäftsbedingungen: www.buecher.de/agb
Impressum
www.buecher.de ist ein Internetauftritt der buecher.de internetstores GmbH
Geschäftsführung: Monica Sawhney | Roland Kölbl | Günter Hilger
Sitz der Gesellschaft: Batheyer Straße 115 - 117, 58099 Hagen
Postanschrift: Bürgermeister-Wegele-Str. 12, 86167 Augsburg
Amtsgericht Hagen HRB 13257
Steuernummer: 321/5800/1497