What is the capacity required for developers
in mobile settings?
There could be various accounts. However, it is
essential to understand the framework applied to the target device. It
is evident that programmers who comprehend well the working principles
of OS as MS Window or Linux or web programmers with a deep understanding
of the operating principles of web browsers get great respect as high
rank developers.
In this sense, it would be necessary to gain the knowledge of operating
principles of the framework to advance to the high-rank developers. Similarly,
it also applies for the Android developers. However, you would find it
difficult to get sufficient resources of operating rules employed by the
Android framework from the Internet or bookstores. Google does not yet
provide comprehensive explanations, excepting some of the materials issued
at the yearly Google I/O, an event of developers.
At present, the only way to grasp the operating principles of the Android
framework is to closely examine the actual source codes of the Android.
Accordingly, we are determined to analyze the source codes of the Android
since there was not enough data to research this project. We had difficulty,
not knowing where to start amongst a considerable amount of source codes.
We have had the fortune to get a direction from the presentation titled,
'Anatomy & Physiology of an Android' at a session of the Google I/O
in 2008. (http://sites.google.com/site/io/anatomy--physiology-of-an-android)
We have come to grasp a better picture of their analysis of the Android
framework from the presentation which detailed information including the
initialization process of the Android framework. (http://sites.google.com/site/io/anatomy--physiology-of-an-android)
As we started writing this book, the analytical focus was on the 1.5 version
of the Android. Shortly after, the 2.2 version of the Android (code name,
Froyo) was launched as the writing was being finalized. The book, of course,
is written based on the 2.2 version of the Android. In addition, the fact
of how late the version itself is should not be a concern since there
has not been many changes in the source codes of the Android. Even if
the newest 3. 0 version of the Android (code name, Gingerbread) is expected
to launch in the second half of the year 2010, what this book delivers
would still be much effective and practical.
Lastly, the book is a good guide to understand
the operating principles of the inside of the framework rather than a
full insight into the overwhelming amount of details associated with the
Android framework. Equipped with the content of this book, the readers
would achieve what they initially planned once they get started on analyzing
the source codes of the Android required in an actual job setting.
The first reference for analysis of the Android
Framework in Korea
This book is a breakthrough for developers with
a great curiosity of the framework of the Android. It is comparatively
easy to find resources regarding application development using SDK. Nonetheless,
it is hard to find a good reference dealing with the architect and the
operating principles of the Android framework. Even its service developer,
Google, has not yet opened the concrete reference which gives rich information
of the framework of the Android.
The book "Inside Android" mainly covers the initialization process of
the framework through the booting procedure of the Android and operating
principles of major components. The authors have analyzed and organized
the main source codes of the Android Framework In addition, they have
elaborated on the fundamentals needed to understand activities of the
framework and service framework underlying the actual Android platform.
This book is the result of a journal timely recorded by some of the pioneers
who are eager to deepen their understanding of the Android framework.
They were willing to explore the Android framework that has not been much
revealed. They took the trouble to learn the source codes by open lectures
hall, looking at projectors in a dark room. The authors would like to
share the exhilarating moment of joy felt upon discovering their findings
regarding source codes that Google has concealed from the public.
It is possible to develop Android applications without a genuine understanding
of the framework. However, it would be much confident in designing the
optimized software for the Android framework, if developers knew the architect
of the framework and its employed operating rules. Accordingly, they would
end up being very competitive developers under any circumstance.
Further, each hardware vendor strives to be distinguished among competitors
with the customized products for the Android framework since the Android
is an open source platform. Thus, it is imperative that each handset manufacture
precisely examine the Android framework in depth in an attempt to establish
an outstanding solution based on the Android framework which differentiates
it from other vendors.
『Inside Android 』addresses the framework of the Android in depth through
examining the source codes of the Android system. It is strongly recommended
for those developers hoping to have insights into the Android and for
those hoping to create an optimized solution specifically for the Android.
Contents
- "An outline of the Android framework by looking
into the booting process"
- "Fundamentals for developing programs suitable
to the features of each mobile handset and for Android porting"
- "The basics of the analysis of the Android framework
?JNI (Java Native Interface) and Binder"
- "Analysis of the core components of Android
as Zygote, service manager and service server"
- "Understanding the service framework of Android
and its structure"
- "Analysis of the actual Android service by exemplifying
camera service and activity manager service...etc"
Virtue of this book
- This is about the Android platform which has
gained great attention these days.
- It's already been validated as one of the bestselling
IT publications in Korea.
- Up to date, it has not been published under
the same category in Japan, China or the United States.
About the authors
Edward T. Kim
He was Software Engineer at LG Electronics, where he was a member of the
team that built Android devices which are LU-2300 and SU-950. Edward received
the BS and MS degrees in software engineering from the Pusan National
University, Korea, in 2007 and 2009, respectively.
He is currently working toward the PhD degree in Object Oriented System
lab. at the same university. His research interests include Android, object
oriented systems, compatibility testing, relational database.
Table of Contents
Chapter 1. An overview
of the Android Framework
1.1 Architect of the source codes
of the Android Framework
1.2 The framework of the Android through the booting procedure.
Chapter 2. Structuring
Android development Environment
2.1 Configuration of Host Environment
- 2.1.1 Installing Virtualbox- 2.1.2 Installing Ubuntu
2.2 Structuring Android system build environment
- 2.2.1 Build utility
- 2.2.2 Installing Repository
- 2.2.3 Download source codes of the Android System
- 2.2.4 Android System build
2.3 Creating Android SDK development environment
- 2.3.1 Structuring Eclipse development environment
- 2.3.2 Download SDK starter package of the Android
- 2.3.3 Installing ADT plug-in for Eclipse
- 2.3.4 Routing SDK of the Android
- 2.3.5 Adding Platforms and Sample Program in the Android
SDK
2.4 Developing the Android application
- 2.4.1 Making Hello Application
2.5 Source level Debugging of the Android system
- 2.5.1 Source loading of application framework
- 2.5.2 Source level Debbuging of HelloWorld Framework
Chapter 3. Init Process
3.1 Process of init Execution
3.2 Analyzing source codes of init Process
3.3 Analysis and Execution of init.rc File
- 3.3.1 Action list
- 3.3.2 Service list
- 3.3.3 Analysis of init.rc farcing code
- 3.3.4 Executing action list and service list
3.4 Creating Device Nod file
- 3.4.1 Creating Static Device Nod
- 3.4.2 HOT PLUG of Dynamic Device
3.5 Process Exit/Reboot
- 3.5.1 Analyzing codes of process rebooting
3.6 Property Service
- 3.6.1 Initializing property
- 3.6.2 Activating change request of property
3.7. Summary
Chapter 4. JNI and
NDK
4.1 The Android and JNI
- 4.1.1 Why is it necessary to know JNI in the Android?
4.2 Understanding of initial principles of JNI
- 4.2.1 Calling C library in Java
- 4.2.2 Summary
4.3 Using Function
- 4.3.1 Structure of sample program employed JNI function
- 4.3.2 Examining Java Code
- 4.3.3 Examining native codes of JNI
- 4.3.4 Compile and execution result
- 4.3.5 Examples in the Android
4.4 Executing Java class in C program
- 4.4.1 Calling API sample problems
- 4.4.2 Compile execution
- 4.4.3 Zygote process used in the Android
4.5 Register JNI Native Function
- 4.5.1 Register JNI native function upon library load
- 4.5.2 app_process in the Android
4.6 Developing with the Android NDK (Native Development
Kit)
- 4.6.1 Creating the Android NDK Environment
- 4.6.2 Emulation of the Android NDK
Chapter.5 Zygote
5.1 What is Zygote?
- 5.1.1 Constructing Process by Zygote
5.2 Execution ZygoteInit class from app_process
- 5.2.1 Construct AppRuntime Object
- 5.2.2 Execution AppRuntime Object
- 5.2.3 Construct Dalvik Virtual Machine
- 5.2.4 Execution of ZygoteInit Class
5.3 Features of ZygoteInit Class
- 5.3.1 /dev/socket/zygote Socket binding
- 5.3.2 Loading of class belong to Application Framework
and Platform resources
- 5.3.3 Executing SystemServer
- 5.3.4 Executing of new Android application
Chapter. 6 An Outline
of the Android Service
6.1 Example Program: Understanding
activities of the Android service
6.2 Classification of the Android Service
6.3 The Android Application Service
- 6.3.1 Classification of Application service
- 6.3.1.1 Local Service
- 6.3.1.2 Remote Service
6.4 The Android System Service
- 6.4.1 Types of System Service
- 6.4.1.1 Native System Service
- 6.4.1.2 Java System Service
6.5 System Service Execution
- 6.5.1 Analyzing execution code of Media Server
- 6.5.2 Analyzing execution code of System Server
6.6 The Android Service Framework, Summary of Binder driver,
and terminology
|
Chapter 7. The Android
Binder IPC
7.1 Linux memory space and Binder
driver
7.2 The Android Binder Model
- 7.2.1 Data transfer via Binder IPC
- 7.2.2 Data flow via Binder IPC
- 7.2.3 Binder Protocol
- 7.2.4 RPC Code and RPC Data
- 7.2.5 Binder Addressing
7.3 Analysis of the Android Binder Driver
- 7.3.1 Service use from a Process perspective
- 7.3.2 Service Use from a Binder Driver Perspective
- 7.3.3 Analysis of Binder Driver
7.4 Context Servicemanager
- 7.4.1 Activity of Context Servicemanager
7.5 Summary
Chapter 8. Service
Framework of the Android
8.1 Service Framework
8.2 Structure of Service Framework
- 8.2.1 Arrangement of Components by Class
- 8.2.2 Interaction of Components by Class
- 8.2.3 Class Structure
8.3 Activity Mechanism
- 8.3.1 Service Interface
- 8.3.2 Service
- 8.3.3 Service Proxy
8.4 Native Service Manager
- 8.4.1 Overview of Service Manager
- 8.4.2 Class of Service Manager
- 8.4.3 Activity of Service Manager
8.5 Building Native Service
- 8.5.1 Design System Service of HelloWorld
- 8.5.2 Service Interface of HelloWorld
- 8.5.3 Service of HelloWorld
- 8.5.4 Service Proxy of HelloWorld
- 8.5.5 Service Execution of HelloWorld
Chapter 9. Analysis
of Native System
9.1 Camera Service
9.2 Camera Application
9.3 Camera Service Framework
- 9.3.1 Class Structure of Camera Service Framework
- 9.3.2 Class of Camera Service Framework
9.4 Activity of Camera Service Framework
- 9.4.1 Initialization of Camera Service
- 9.4.2 Connection of Camera Service
- 9.4.3 Analysis of connection source of Camera Service
- 9.4.4 Setting Up Camera and Control Process
- 9.4.5 Analysis of Camera Set up and control Process
- 9.4.6 Activating Process of Camera Event
- 9.4.7 Examining Activation Process of Camera Event
Chapter 10. Java
Service Framework
10.1 Java Service Framework
- 10.1.1 Class Components of Java Service Framework
- 10.1.2 Interaction of Class Components of Java Service
Framework
10.2 Activity Mechanism
- 10.2.1 Initialization of Java Service Framework
- 10.2.2 Binder
- 10.2.3 BinderProxy
- 10.2.4 Parcel
10.3 Realization of Java System Service
- 10.3.1 Analysis of structure of Alarm Manager Service
- 10.3.2 Realizing System of HelloWorldService
- 10.3.3 Utilizing System of HelloWorldService
- 10.3.4 Building System of HelloWorldService
10.4 Java Service Manager
- 10.4.1 Introduction of Java Service Manager
- 10.4.2 BinderInternal
- 10.4.3 Activity of Java Service Manager
10.5 Realization of Service Proxy and Stub using AIDL
Chapter 11. Analysis
of Java System Service Activity
11.1 Activity Manager Service
11.2 Analyzing Service Creation code by Activity Manager
Service
- 11.2.1 Controller Activity - startService() Calling
Method
- 11.2.2 Process of Calling startService() Method of Activity
Manager Service (using Binder RPC)
- 11.2.3 Activity Manager Service - startService() Stub
Method Execution
- 11.2.4 Execution of main() Method of ActivityThread
Class
- 11.2.5 Activity Manager Service - attachApplication()
Stub Handling Method
|
|
|
to publish our books about the android platform.
Isn't there anybody who has connections in the publisher?