Взгляд из песочницы
Кирилл Филимонов
Mail.Ru Group
Slide 2
Slide 2 text
Структура ОС
Apps
Application framework
Native Userspace
Linux kernel
System apps User apps
API
Java core
Android Framework Libraries
System services
Binder
Dalvik/Android runtime/Zygote
JNI
Sandboxing
•Уникальные UID и GID
•Не изменяются
•Используется DAC
•Изолированное адресное пространство
Slide 14
Slide 14 text
IPC
•pipes
•shared memory
•message queue
Linux
Android
•binder
Slide 15
Slide 15 text
Binder
•Драйвер ядра для обеспечения IPC
•Легковесный RPC
•Пул потоков для обработки запросов
•Поддержка передачи файловых дескрипторов
•Синхронный и асинхронный вызов методов
•Синхронное взаимодействие между потоками
Slide 16
Slide 16 text
Package Manager
•Парсинг APK файлов
•Установка, обновление, удаление приложений
•Предоставляет информацию об установленных
приложениях и разрешениях
Slide 17
Slide 17 text
Взаимодействие со
службами
App proc system server
service manager
App
PackageManager PackageManagerService
package
Binder IPC
Slide 18
Slide 18 text
Взаимодействие со
службами
App proc system server
service manager
App
PackageManager PackageManagerService
package
Binder IPC
Binder IPC
Slide 19
Slide 19 text
Взаимодействие со
службами
App proc system server
service manager
App
PackageManager PackageManagerService
package
Binder IPC
Binder IPC
Binder IPC
Slide 20
Slide 20 text
Activity Manager
•Запуск activity и service
•Получение поставщиков данных
•Рассылка интентов
•Обслуживание OOM adj
•Управление жизненным циклом
•Управление тасками
•Обработка ANR
•Разрешения
Android Permissions
Реализованы на разных уровнях
•Kernel
•Native service
•Framework
Paranoid networking
Filesystem permissions
Проверки на уровне UID и GID
PackageManager
ActivityManager