Android
Средний
Что находится внутри APK-файла?
Структура APK-файла
APK (Android Package) — это ZIP-архив с определённой структурой.
Основные компоненты:
myapp.apk
├── AndroidManifest.xml # Манифест (бинарный XML)
├── classes.dex # Скомпилированный код
├── classes2.dex # MultiDex (если нужно)
├── resources.arsc # Скомпилированные ресурсы
├── res/ # Ресурсы
│ ├── drawable/
│ ├── layout/
│ ├── values/
│ └── ...
├── assets/ # Raw файлы
├── lib/ # Native библиотеки
│ ├── armeabi-v7a/
│ ├── arm64-v8a/
│ ├── x86/
│ └── x86_64/
├── META-INF/ # Подписи и сертификаты
│ ├── MANIFEST.MF
│ ├── CERT.SF
│ └── CERT.RSA
└── kotlin/ # Kotlin metadata
Детали компонентов:
1. AndroidManifest.xml
- Бинарный XML (не читаемый)
- Декларация компонентов, permissions
- Минимальная/целевая версия SDK
2. classes.dex
- Dalvik Executable
- Байткод для ART/Dalvik VM
- Лимит: 65536 методов → MultiDex
3. resources.arsc
- Таблица ресурсов
- Маппинг R.id → значения
- Строки, цвета, размеры
4. res/
- Layouts (бинарный XML)
- Drawables
- Неиспользуемые удаляются shrinking
5. lib/
- .so файлы (C/C++ код)
- По архитектурам процессора
6. META-INF/
- MANIFEST.MF — хеши всех файлов
- CERT.SF — подписанный манифест
- CERT.RSA — сертификат разработчика
Анализ APK:
# Распаковка
unzip app.apk -d extracted/
# Через Android Studio
Build → Analyze APK
# apktool (декомпиляция)
apktool d app.apk
Оптимизация размера:
- ProGuard/R8 — минификация кода
- Resource shrinking — удаление неиспользуемых
- ABI splits — отдельные APK по архитектурам
- App Bundle — динамическая доставка
Готовитесь к собеседованию?
ENIGMA AI — невидимый ИИ-помощник для технических интервью
Попробовать бесплатно