Presented at Android Builders Summit on February 14th in Redwood Shores, CA by Aleksandar (Saša) Gargenta, from Marakana Inc.
For the complete slides from this talk go to http://mrkn.co/munz7
"The most interesting part of Android stack are the Android System Services. The 60+ such services expose the low level functionality, such as Power Management, Wifi, Camera, Sensors, GPS, Display, Audio, Media, and so on, all the hardware all the way up to the application layer. While each one is different, the all have certain similarities, namely the way they rely on Binder (Android's IPC mechanism), use JNI to cross Java-C boundary, and use of shared libraries to abstract the Linux drivers. In this talk, we'll explore the common system services in Android and discuss their architecture. You will get to see the diagrams of the inner workings of some of the previously undocumented parts of the Android stack. By the end of the talk, you should have a better understanding of the underpinnings of the backbone of Android OS."
https://events.linuxfoundation.org/events/android-builders-summit/gargentaa
In order to understand HAL layers of Android Framework, having Linux device driver knowledge is important. Hence Day-2 of the workshop focuses on the same.
Android Things is the latest attempt from Google to connect the dots between the cloud and devices by introducing an OS that is exclusively built for IoT devices. Initially announced as project Brillo, Android Things helps developers to build devices faster and enable them integrate with cloud services. This presentation traces the architectural aspects of Android Things by connecting it back with Embedded Linux, Embedded Android and Brillo.
Binder is what differentiates Android from Linux, it is most important internal building block of Android, it is a subject every Android programmer should be familiar with
In order to understand HAL layers of Android Framework, having Linux device driver knowledge is important. Hence Day-2 of the workshop focuses on the same.
Android Things is the latest attempt from Google to connect the dots between the cloud and devices by introducing an OS that is exclusively built for IoT devices. Initially announced as project Brillo, Android Things helps developers to build devices faster and enable them integrate with cloud services. This presentation traces the architectural aspects of Android Things by connecting it back with Embedded Linux, Embedded Android and Brillo.
Binder is what differentiates Android from Linux, it is most important internal building block of Android, it is a subject every Android programmer should be familiar with
The second part of Linux Internals covers system calls, process subsystem and inter process communication mechanisms. Understanding these services provided by Linux are essential for embedded systems engineer.
There is a surge in number of sensors / devices that are getting connected under the umbrella of Internet-Of-Things (IoT). These devices need to be integrated into the Android system and accessed via applications, which is covered in the course. Our Android system development course curriculum over weekends with practicals ensures you learn all critical components to get started.
This course gets you started with writing device drivers in Linux by providing real time hardware exposure. Equip you with real-time tools, debugging techniques and industry usage in a hands-on manner. Dedicated hardware by Emertxe's device driver learning kit. Special focus on character and USB device drivers.
Embedded Android System Development - Part II talks about Hardware Abstraction Layer (HAL). HAL is an interfacing layer through which Android service can place a request to device. Uses functions provided by Linux system to service the request from android framework. A C/C++ layer with purely vendor specific implementation. Packaged into modules (.so) file & loaded by Android system at appropriate time
This is the latest version of the slides based on my book "Solaris Performance and Tuning" that has been extended to include Linux and many other more recent topics. It has been presented innumerable times, most recently at the CMG conference, Usenix 08 and LISA 08, and this version will be presented at Usenix 09, San Diego on June 16th, along with the Free Tools slides.
Course 102: Lecture 25: Devices and Device Drivers Ahmed El-Arabawy
This lecture discusses the concept of Linux device Drivers and Kernel Loadable Modules in general. It shows how to handle them such as loading/unloading ,and querying for their info. It also discusses the role of device files and how it binds to device drivers in the Linux Kernel
Video for this lecture on youtube:
http://www.youtube.com/watch?v=5qhgMyPyvVE
Check the other Lectures and courses in
http://Linux4EnbeddedSystems.com
or Follow our Facebook Group at
- Facebook: @LinuxforEmbeddedSystems
Lecturer Profile:
Ahmed ElArabawy
- https://www.linkedin.com/in/ahmedelarabawy
Slides from Android Builder's Summit 2014 in San Jose, CA
In this talk I describe the internal workings of the Android graphics stack from the Application layer down through the stack to pixels on the screen. It is a fairly complex journey, taking in two different 2D rendering engines, applications calling OpenGL ES directory, passing buffers on to the system compositor, SurfaceFlinger, and then down to the display controller or frame buffer.
The second part of Linux Internals covers system calls, process subsystem and inter process communication mechanisms. Understanding these services provided by Linux are essential for embedded systems engineer.
There is a surge in number of sensors / devices that are getting connected under the umbrella of Internet-Of-Things (IoT). These devices need to be integrated into the Android system and accessed via applications, which is covered in the course. Our Android system development course curriculum over weekends with practicals ensures you learn all critical components to get started.
This course gets you started with writing device drivers in Linux by providing real time hardware exposure. Equip you with real-time tools, debugging techniques and industry usage in a hands-on manner. Dedicated hardware by Emertxe's device driver learning kit. Special focus on character and USB device drivers.
Embedded Android System Development - Part II talks about Hardware Abstraction Layer (HAL). HAL is an interfacing layer through which Android service can place a request to device. Uses functions provided by Linux system to service the request from android framework. A C/C++ layer with purely vendor specific implementation. Packaged into modules (.so) file & loaded by Android system at appropriate time
This is the latest version of the slides based on my book "Solaris Performance and Tuning" that has been extended to include Linux and many other more recent topics. It has been presented innumerable times, most recently at the CMG conference, Usenix 08 and LISA 08, and this version will be presented at Usenix 09, San Diego on June 16th, along with the Free Tools slides.
Course 102: Lecture 25: Devices and Device Drivers Ahmed El-Arabawy
This lecture discusses the concept of Linux device Drivers and Kernel Loadable Modules in general. It shows how to handle them such as loading/unloading ,and querying for their info. It also discusses the role of device files and how it binds to device drivers in the Linux Kernel
Video for this lecture on youtube:
http://www.youtube.com/watch?v=5qhgMyPyvVE
Check the other Lectures and courses in
http://Linux4EnbeddedSystems.com
or Follow our Facebook Group at
- Facebook: @LinuxforEmbeddedSystems
Lecturer Profile:
Ahmed ElArabawy
- https://www.linkedin.com/in/ahmedelarabawy
Slides from Android Builder's Summit 2014 in San Jose, CA
In this talk I describe the internal workings of the Android graphics stack from the Application layer down through the stack to pixels on the screen. It is a fairly complex journey, taking in two different 2D rendering engines, applications calling OpenGL ES directory, passing buffers on to the system compositor, SurfaceFlinger, and then down to the display controller or frame buffer.
This is a lightning presentation given by Gorkey Vemulapalli to our team introducing the basics of Palm's new WebOS platform being used on the Palm Pre device.
WebOS, also known as Open WebOS or LG WebOS, (previously known as HP WebOS and Palm WebOS, stylized as webOS)[2] is a Linux kernel-based multitask operating system for smart devices like TVs and smartwatches. It was formerly a mobile operating system
TEDx Manchester: AI & The Future of WorkVolker Hirsch
TEDx Manchester talk on artificial intelligence (AI) and how the ascent of AI and robotics impacts our future work environments.
The video of the talk is now also available here: https://youtu.be/dRw4d2Si8LA
Video at http://mrkn.co/andsec
With Android activations reaching a million devices per day, it is no surprise that security threats against our favorite mobile platform have been on the rise.
In this session, you will learn all about Android's security model, including application isolation (sandboxing) and provenance (signing), its permission system and enforcement, data protection features and encryption, as well as enterprise device administration.
Together, we will dig into Android's own internals to see how its security model is applied through the entire Android stack - from the Linux kernel, to the native layers, to the Application Framework services, and to the applications themselves.
Finally, you’ll learn about some of the weaknesses in the Android's model (including rooting, tap-jacking, malware, social-engineering) as well as what can be done to mitigate those threats, such as SE-Linux, memory protection, anti-malware, firewall, and developer best practices.
By the end of this session you will have a better understanding of what it takes to make Android a more trusted component of our personal and professional lives.
An introduction to Rack and Action Dispatcher in Rails. It tracks all the way from a request to a call of an action controller, passing by middleware stack and much more.
In dieser Session werfen wir einen Blick auf die Android Platform jenseits der Dalvik VM. Wir entdecken den Android Source Code und erklären wo sich interessante Beispiele und Referenzen für App-Entwickler sowie nützliche Tools verbergen. Ein High-Level Überblick über die Platform-Architektur und das Platform-Build-System runden die Session ab.
Dev ops for cross platform mobile modeveast 12Sanjeev Sharma
Mobile Apps are not stand alone applications running on a mobile device anymore. Apps today are complex systems with back-ends hosted on clouds, with application servers, databases, API calls to external systems, and of course a powerful app running on a mobile device. Mobile App development and deployment is further complicated with todays need for supporting multiple mobile devices, with multiple OSes, multiple versions of the OSes, multiple form factors and varied network, CPU, GPU and memory specs.
DevOps - the new and growing movement addresses these development and deployment challenges. The goal of DevOps is to align Dev and Ops by introducing a set of principles and practices such as continuous integration and continuous delivery. Mobile apps take the need for these practices up a level due to their inherent distributed nature. Multi-platform mobile apps need even more care in applying DevOps principles as there are multiple platforms to be targeted, each with its own requirements, quirks, and nuanced needs.
This talk will introduce attendees to the basic practices of DevOps and then take a look at the DevOps challenges specific to cross-platform Mobile apps and present Best Practices to address them.
Modern Architectures with Spring and JavaScriptmartinlippert
JavaScript becomes more and more important for implementing full-featured rich client applications in the browser. Therefore our classical ideas and blueprints for Spring-based architectures have to change. This talks provides a high-level overview of these changes and talks about how to combine Spring on the server side to implement RESTful and HATEOAS APIs and JavaScript in the client side to realize full client side apps in your browser. The talk discusses the basic ideas and motivations behind this shift in architectures without going too deep into all the technical details.
Learn hot techniques for developing more effective user interfaces in your Android applications from Android UI Toolkit engineers Romain Guy and Chet Haase.
Romain and Chet will dive into some code examples, demo some handy tools, and show you how to optimize your UI for performance while making it look great.
Didn't make it to Devoxx 2K10? Well, find out what you might have missed, as this is the same presentation Romain and Chet delivered at Devoxx.
A few topics covered in this talk include:
- Trash Talk: avoiding garbage creation when necessary and possible
- Tools: Allocation Tracking, DDMS, Heap Analysis Tool (hat), etc.
- A few tips on avoiding memory leaks
- ViewStub, ListView and compound drawables
- Graphics optimization techniques
Efficient Rails Test-Driven Development - Week 6Marakana Inc.
Learn how to apply the test-first approach to all of your Rails projects. In this six class series, experienced Rails engineer and consultant, Wolfram Arnold applies his real-world perspective to teaching you effective patterns for testing.
In this sixth of six classes, Wolf discusses:
- Integration frameworks (Cucumber, Webrat, Capybara, and Selenium)
- Integration testing with Selenium (advantages and problems)
- Page Objects
- Locators (Selenium, CSS and XPath locators
- RSpec Custom Matchers
- Testing for Access Control
** You can get the slides and source code from this presentation at: http://marakana.com/f/215 **
Find more videos, tutorials, and code examples at http://marakana.com/techtv
What's this jQuery? Where it came from, and how it will drive innovationMarakana Inc.
In this talk jQuery Project Team member, Johnathan Sharp, sets out to answer four main questions: Where'd jQuery Come from?, Why is it so popular? How has it changed development? How will it drive innovation?
**see the video at http://marakana.com/f/211 **
In the scope of his talk Johnathan also touches on:
- What jQuery is not
- Core concepts to understand before jumping into jQuery (CSS & Selectors, DOM, Events, JavaScript patterns, etc)
- jQuery core, and jQuery project plugins
- The larger jQuery Project including the jQuery core, jQuery UI, and jQuery mobile
- jQuery going forward (HTML5, mobile browser support, official Plugins, growing corporate support services)
Finally, Johnathan will dig deep into a few code demos to illustrate some of the core concepts of jQuery, like events, JavaScript patterns, and making Ajax requests.
jQuery State of the Union - Yehuda KatzMarakana Inc.
What's the state of the most popular JavaScript library today? What's in-store for upcoming releases?
At an event hosted at Microsoft on November 9th, 2010, Yehuda Katz (a core member of the jQuery team) talked about updates planned for jQuery 1.4.3 and plans for jQuery 1.5, due next year.
He also covers:
- initiatives of the jQuery project
- jQuery mobile
- formalizing governance of the jQuery project
** See the video at: http://marakana.com/f/12312 **
Stay tuned for videos of these presentations from this event:
- jQuery jump start (15 min. session to get you productive with the JavaScript frameworks)
- jQuery with ASP.NET and Visual Studio Walk-through
- How jQuery continues to drive innovation with emerging technologies
In the meantime, check out more videos on open source development at: http://marakana.com/techtv
Pics from: "James Gosling on Apple, Apache, Google, Oracle and the Future of ...Marakana Inc.
Pictures from an event where James Gosling spoke on:
- His departure from Oracle
- Oracle's stewardship of Java
- Android's use of Java, and what he would've done
- Apple's "deprecation" of Java
- IBM and Oracle relationship
- Apache Software Foundation's recent worries
- What's he's been up to lately
- His other favorite programming languages and technologies
- The future of Java
** Check out the full video from his talk at: www.marakana.com/f/205 **
Efficient Rails Test Driven Development (class 4) by Wolfram ArnoldMarakana Inc.
Learn how to apply the test-first approach to all of your Rails projects. In this six class series, experienced Rails engineer and consultant, Wolfram Arnold applies his real-world perspective to teaching you effective patterns for testing.
In this fourth of six classes, Wolf covers:
- Refactoring code & tests, custom matchers
- API Testing
- Remote data setup
- Cucumber for API testing & documentation
** You can get the video and source code from this presentation at: http://marakana.com/f/204 **
All six classes will be available online, so stay tuned! And be sure to check out marakana.com/techtv for more videos on open source training.
Presented by: Wolfram Arnold, in collaboration with Sarah Allen, BlazingCloud.net
Produced by: Marakana
Efficient Rails Test Driven Development (class 3) by Wolfram ArnoldMarakana Inc.
Learn how to apply the test-first approach to all of your Rails projects. In this six class series, experienced Rails engineer and consultant, Wolfram Arnold applies his real-world perspective to teaching you effective patterns for testing.
In this third of six classes, Wolf covers:
- Controller testing
- View, Helper, Routes Testing
- How much is enough? How much is too much?
** You can get the video and source code from this presentation at: http://marakana.com/f/201 **
All six classes will be available online, so stay tuned! And be sure to check out marakana.com/techtv for more videos on open source training.
Presented by: Wolfram Arnold, in collaboration with Sarah Allen, BlazingCloud.net
Produced by: Marakana
Learn about JRuby Internals from one of the JRuby Lead Developers, Thomas EneboMarakana Inc.
At an event hosted at LinkedIn on November 2, 2010, "JRuby Guy", Thomas Enebo gave us an introduction to JRuby internals, and what about the intenals a new contributor might need to know to get started in contributing to the JRuby project.
** check out the slides from this presentation at: http://marakana.com/f/197 **
At an event hosted at LinkedIn on November 2, 2010, Noah Gibbs delivers a presentation on how On-Site.com is using JRuby to leverage its old Java codebase.
** Check out the video from this presentation at: http://marakana.com/f/198 **
Noah talks about:
- The advantages of using JRuby to leverage a legacy Java codebase
- Integration with JSP pages
- Java models and Active Record wrappers
- Call Java-to-Ruby
...And if you're looking for more educational videos on Ruby and open-source, head on over to: http://marakana.com/techtv
Learn to Build like you Code with Apache BuildrMarakana Inc.
At an event hosted at LinkedIn on November 2, 2010, Antoine Toulme of Intalio gave a brief introduction to open-source build system Apache Buildr.
Buildr is a build system for Java-based applications that is built on Ruby's build system Rake, and uses Ruby as a scripting language.
** Check out the video of this presentation at: http://marakana.com/f/199 **
Learn How to Unit Test Your Android Application (with Robolectric)Marakana Inc.
Robolectric is an open source Android unit testing framework that makes it possible to run unit tests against your Android application code outside of the emulator - in the IDE. Robolectric gives you the scaffolding to run your tests quickly so you can make fast iterations and refactor your code with confidence.
** Check out the video for this presentation at marakana.com: http://mrkn.co/f/192 **
This presentation was given at the San Francisco Android User Group on Oct. 26, 2010.
Learn Learn how to build your mobile back-end with MongoDBMarakana Inc.
Will Shulman, from MongoLab, shows us how to to persist our mobile app data in the cloud using a super-scalable and amazingly developer-friendly MongoDB back-end.
Read| The latest issue of The Challenger is here! We are thrilled to announce that our school paper has qualified for the NATIONAL SCHOOLS PRESS CONFERENCE (NSPC) 2024. Thank you for your unwavering support and trust. Dive into the stories that made us stand out!
Macroeconomics- Movie Location
This will be used as part of your Personal Professional Portfolio once graded.
Objective:
Prepare a presentation or a paper using research, basic comparative analysis, data organization and application of economic information. You will make an informed assessment of an economic climate outside of the United States to accomplish an entertainment industry objective.
Honest Reviews of Tim Han LMA Course Program.pptxtimhan337
Personal development courses are widely available today, with each one promising life-changing outcomes. Tim Han’s Life Mastery Achievers (LMA) Course has drawn a lot of interest. In addition to offering my frank assessment of Success Insider’s LMA Course, this piece examines the course’s effects via a variety of Tim Han LMA course reviews and Success Insider comments.
Model Attribute Check Company Auto PropertyCeline George
In Odoo, the multi-company feature allows you to manage multiple companies within a single Odoo database instance. Each company can have its own configurations while still sharing common resources such as products, customers, and suppliers.
Embracing GenAI - A Strategic ImperativePeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
Unit 8 - Information and Communication Technology (Paper I).pdfThiyagu K
This slides describes the basic concepts of ICT, basics of Email, Emerging Technology and Digital Initiatives in Education. This presentations aligns with the UGC Paper I syllabus.
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Chapter 3 - Islamic Banking Products and Services.pptx
Android Services Black Magic by Aleksandar Gargenta
1. Android Services Black Magic
by Aleksandar (Saša) Gargenta, Marakana Inc.
Android Builders Summit
February 14th, 2012
Redwood Shores, CA
Screencast @
http://mrkn.co/munz7
2. About
Aleksandar (Saša) Gargenta
• Developer and instructor of Android Internals and Security training at Marakana
• Founder and co-organizer of San Francisco Android User Group (sfandroid.org)
• Founder and co-organizer of San Francisco Java User Group (sfjava.org)
• Co-founder and co-organizer of San Francisco HTML5 User Group (sfhtml5.org)
• Speaker at AnDevCon, AndroidOpen, Android Builders Summit, etc.
• Server-side Java and Linux, since 1997
• Android/embedded Java and Linux, since 2009
• Worked on SMS, WAP Push, MMS, OTA provisioning in previous life
• @agargenta on Twitter
• aleksandar.gargenta@gmail.com on Google+
Marakana - Helping people get better at what they do
• Training on cutting edge open source software (like Android!)
• Rockstar team of experts, on staff
• Content is king
• http://marakana.com/
3. Android Stack
Applications
Content
Home Contacts Phone Browser
Providers
Application Framework
Activity Window Vibrator WiFi Battery
Service Service Service Service Service
Package Telephony Resource Location Notification
Service Service Manager Service Service
Native Layer
Surface Media Android Runtime
SQLite SSL
Flinger Framework
Core Libs
OpenGL vold netd WebKit
Dalvik
libwifi libcamera libgps libc VM
Display Camera Linux Kernel GPS Binder
Driver Driver Driver Driver
Keypad WiFi Audio Power
Driver Driver Driver Mgmt
4. Vibrator on Android
com.example.app (/data/app/ExampleApp.apk) system_server
DalvikVM DalvikVM
classes.dex /system/framework/framework.jar
com.example.app.ExampleActivity android.os.IVibratorService.Stub
extends
calls
/system/framework/framework.jar /system/framework/services.jar
registers "vibrator" service via ServiceManager
android.os.Vibrator com.android.server.SystemServer
creates
calls
android.os.IVibratorService.Stub.Proxy com.android.server.VibratorService
looks up "vibrator" service via SM
calls/links to
gets a reference to the ServiceManager (handle=0)
/system/lib/libandroid_servers.so
/system/lib/libandroid_runtime.so
references
uses (calls)
com_android_server_VibratorService.cpp
/system/lib/libbinder.so
calls
/system/lib/lib*.so /system/lib/libhardware_legacy.so
vibrator.c
invokes transaction
uses (io write)
/system/bin/servicemanager /system/lib/libandroid_runtime.so
service_manager.c /system/lib/libbinder.so
references
/system/lib/lib*.so /system/lib/lib*.so
/dev/binder /sys/class/timed_output/vibrator/enable
Kernel
registers as binder context manager
gets a reference to the ServiceManager (handle=0)
5. Power on Android
com.example.app (/data/app/ExampleApp.apk) system_server
DalvikVM DalvikVM
/system/framework/framework.jar
classes.dex
android.os.IPowerManager.Stub
com.example.app.ExampleActivity
android.os.Power
calls
calls
/system/framework/framework.jar /system/framework/services.jar
extends
creates
registers "power" service via ServiceManager
android.os.PowerManager com.android.server.SystemServer
creates
android.os.PowerManager.WakeLock com.android.server.PowerManagerService
looks up "power" service via SM
calls/links to
gets a reference to the ServiceManager (handle=0)
android.os.IPowerManager.Stub.Proxy calls
/system/lib/libandroid_runtime.so
/system/lib/libandroid_runtime.so
references
android_os_Power.cpp
/system/lib/libbinder.so
calls
/system/lib/lib*.so /system/lib/libhardware_legacy.so
uses (calls)
power.c
uses (io write)
/system/bin/servicemanager /system/lib/libandroid_runtime.so
service_manager.c /system/lib/libbinder.so
invokes
references
/system/lib/lib*.so /system/lib/lib*.so
/dev/binder /sys/power/wake_lock
Kernel
registers as binder context manager
gets a reference to the ServiceManager (handle=0)
6. Alarm on Android
com.android.deskclock system_server
(/system/app/DeskClock.apk)
DalvikVM
DalvikVM
/system/framework/framework.jar
classes.dex
android.app.IAlarmManager.Stub
calls
com.android.deskclock.AlarmClock
com.android.deskclock.Alarms
extends
/system/framework/services.jar
uses
calls
/system/framework/framework.jar
registers "alarm" service via ServiceManager
com.android.server.SystemServer
creates
android.app.ContextImpl
android.app.AlarmManager .AlarmManagerService
looks up "alarm" service via SM
calls
calls/links to
gets a reference to the ServiceManager (handle=0)
android.app.IAlarmManager.Stub.Proxy
/system/lib/libandroid_runtime.so
references
/system/lib/libandroid_servers.so
/system/lib/libbinder.so
uses (calls)
com_android_server_AlarmManagerService.cpp
/system/lib/lib*.so
/system/bin/servicemanager /system/lib/libandroid_runtime.so
uses (ioctl)
service_manager.c /system/lib/libbinder.so
invokes
references
/system/lib/lib*.so /system/lib/lib*.so
/dev/binder /dev/alarm
Kernel
registers as binder context manager
gets a reference to the ServiceManager (handle=0)
7. Package Manager on Android
com.android.packageinstaller system_server
(/system/app/PackageInstaller.apk)
DalvikVM
DalvikVM
classes.dex /system/framework/framework.jar
.PackageInstallerActivity android.content.pm.IPackageManager.Stub
calls
.InstallAppProgress
extends
extends
/system/framework/services.jar
/system/framework/framework.jar
calls
creates
android.content.pm.PackageManager com.android.server.SystemServer
android.app.ApplicationPackageManager com.android.server.pm.PackageManagerService
calls
calls
looks up "package" service via SM
registers "package" service via SM
gets a reference to the ServiceManager (handle=0)
android.content.pm.IPackageManager.Stub.Proxy
com.android.server.pm.Installer
/system/lib/libandroid_runtime.so
/system/lib/libandroid_runtime.so
references
/system/lib/libbinder.so
uses (calls)
/system/lib/libbinder.so
/system/lib/lib*.so
send messages
/system/lib/lib*.so
invokes transaction
/system/bin/servicemanager
service_manager.c installd
installd.c
references
/system/lib/lib*.so
get messages
/dev/binder /dev/socket/installd
Kernel
registers as binder context manager
gets a reference to the ServiceManager (handle=0)
8. WiFi Management on Android
com.example.app (/data/app/ExampleApp.apk) system_server
DalvikVM
DalvikVM
/system/framework/framework.jar
classes.dex
android.net.wifi.IWifiManager.Stub
com.example.app.ExampleActivity
android.net.wifi.WifiStateMachine
calls
calls
/system/framework/framework.jar android.net.wifi.WifiNative
extends
creates
calls
android.net.wifi.WifiManager /system/framework/services.jar
calls
com.android.server.SystemServer
android.net.wifi.IWifiManager.Stub.Proxy
calls/links to
gets a reference to the ServiceManager (handle=0)
looks up "wifi" service via SM
com.android.server.WifiService
registers "wifi" service via SM
/system/lib/libandroid_runtime.so /system/lib/libandroid_servers.so
android_net_wifi_Wifi.cpp
uses (calls)
/system/lib/libbinder.so
calls
references
/system/lib/libhardware_legacy.so
/system/lib/lib*.so wifi.c
calls
/system/lib/libwpa_client.so
/system/bin/servicemanager wpa_ctrl.c
sends commands
service_manager.c /system/lib/lib*.so
invokes
references
/system/lib/lib*.so
wpa_supplicant
/dev/binder bcmdhd /dev/socket/wpa_wlan0
Kernel
registers as binder context manager
calls (ioctl) read commands
as nl80211
9. Location on Android
com.example.app (/data/app/ExampleApp.apk) system_server
DalvikVM DalvikVM
/system/framework/framework.jar
classes.dex
.LocationManager.Stub
com.example.app.ExampleActivity
creates
extends
/system/framework/services.jar
calls
/system/framework/framework.jar com.android.server.SystemServer
calls
android.location.LocationManager .LocationManagerService
calls
.location.GpsLocationProvider
registers "location" service via SM
looks up "location" service via SM
gets a reference to the ServiceManager (handle=0)
.LocationManager.Stub.Proxy
links to
calls
/system/lib/libandroid_servers.so
/system/lib/libandroid_runtime.so _location_GpsLocationProvider.cpp
uses (calls)
references
/system/lib/libbinder.so
loads
calls
/vendor/lib/hw/gps.omap4.so
/system/lib/lib*.so impl of include/hardware/gps.h
/system/lib/libhardware.so
/system/bin/servicemanager
uses (io)
/system/lib/libandroid_runtime.so
service_manager.c /system/lib/libbinder.so
invokes
references
/system/lib/lib*.so /system/lib/lib*.so
/dev/binder /dev/ttyo0
Kernel
registers as binder context manager
10. Audio Policy on Android
com.example.app (/data/app/ExampleApp.apk) system_server
DalvikVM
DalvikVM /system/framework/framework.jar
extends
classes.dex android.media.IAudioService.Stub
com.example.app.ExampleActivity
android.media.AudioService
calls
calls
creates
/system/framework/framework.jar android.media.AudioSystem
links to/calls
android.media.AudioManager /system/framework/services.jar
calls
com.android.server.SystemServer
android.media.IAudioService.Stub.Proxy
looks up "audio" service via SM
gets a reference to the ServiceManager (handle=0)
/system/lib/libandroid_runtime.so
registers "audio" service via SM
android_media_AudioSystem.cpp
calls
/system/lib/libandroid_runtime.so
/system/lib/libmedia.so
android.AudioSystem
calls
/system/lib/libbinder.so android.BpAudioPolicyService
uses (calls)
/system/lib/lib*.so
references
mediaserver
calls
extends
/system/lib/libmedia.so
android.BnAudioPolicyService
/system/bin/servicemanager /system/lib/libaudioflinger.so
android.AudioPolicyService
calls
service_manager.c
invokes /system/lib/hw/audio_policy.default.so
android_audio_legacy.AudioPolicyManagerDefault
calls
/system/lib/lib*.so
/system/lib/hw/audio.primary.tuna.so
audio_hw.c
uses (ioctl) calls
references looks up "media.audio_policy"
/system/lib/libtinyalsa.so
registers as binder context manager mixer.c
/dev/binder /dev/snd/controlC0 (ALSA)
Kernel