Что такое формат файла ARSC?
Файл .arsc представляет собой скомпилированную таблицу ресурсов Android. Файлы .arsc используются разработчиками для хранения ресурсов приложения в компактной двоичной форме, которую ОС может эффективно читать во время выполнения. Файлы ресурсов .arsc содержат статические данные - строки, размеры, цвета, стили и значения конфигурации макета - которые не меняются в процессе работы приложения. В отличие от необработанных исходных ресурсов, файл .arsc не содержит изображения напрямую; двоичные графические объекты (drawables) хранятся как отдельные записи в других частях пакета. Исходный код и файлы ресурсов компилируются инструментом aapt2 в единый установочный пакет .apk. Полученный файл затем можно использовать для установки данного приложения на устройство Android.
Внутри .apk (или .aab) скомпилированная таблица всегда называется resources.arsc и хранится без сжатия - начиная с Android 11, среда выполнения отображает её напрямую в память (memory-map), а не распаковывает, поэтому она должна быть выровнена по 4-байтовой границе. Все среды разработки программного обеспечения используют те или иные файлы ресурсов, но только Android использует формат таблицы ресурсов .arsc. Файлы ресурсов спроектированы так, чтобы к ним можно было получить доступ из любого места проекта - на ресурсы можно ссылаться во всем исходном коде через константы R.*, такие как R.string.app_name. Такой подход позволяет изменять кодовую базу без правки каждой строки, где упоминается данный ресурс. Скомпилированную таблицу также можно декодировать из упакованного приложения с помощью таких инструментов, как apktool или встроенный в Android Studio APK Analyzer.
Безопасность и защита
РИСК: LOWresources.arsc содержит инертные данные - без кода и макросов - поэтому сам файл безопасен для изучения. Единственную реальную проблему может представлять APK, из которого он извлечен: декомпиляция приложения может нарушать его лицензию, а ручное редактирование таблицы с последующей переподписью APK - это способ переупаковки вредоносного ПО, поэтому относитесь к модифицированным APK из ненадежных источников с подозрением.
Детали формата
в двух словахПрограммы, открывающие файлы ARSC
Технические подробности
глубокая спецификация| Кодировка файла | Двоичная (Binary), little-endian |
| Сигнатура файла | 02 00 0C 00 по смещению 0 (ResChunk_header: type=0x0002 RES_TABLE_TYPE, размер заголовка=0x000C) |
| MIME-тип | application/octet-stream |
| Контейнер | Хранится без сжатия (метод ZIP STORED, а не DEFLATE) внутри архива APK или AAB |
| Типичный размер файла | от 10 КБ до 5 МБ, в зависимости от количества локалей, плотности экранов и размера пула строк |
| Внутреннее имя файла | resources.arsc (фиксированное имя внутри ZIP-архива APK/AAB) |
| Формат ID ресурса | 32-битное значение 0xPPTTEEEE: 8-битный пакет, 8-битный тип, 16-битная запись; поддерживает до 255 типов и 65 535 записей на тип |
| Структура верхнего уровня | Чанк RES_TABLE, содержащий глобальный пул строк и по одному чанку пакета на приложение, каждый из которых содержит подчанки спецификации типов и самих типов |
| Измерения конфигурации | Сопоставляет каждый ID ресурса со значениями для различных конфигураций устройства: язык/локаль, плотность экрана, ориентация, минимальная ширина, уровень API и др. |
| Разреженное кодирование | По умолчанию используется классическая плотная таблица записей типов; опциональное разреженное кодирование доступно начиная с Android 14 (SDK 34, 2023) для уменьшения размера |
| Доступ во время выполнения | Отображается в память (mmap) при работе начиная с Android 11; должен быть выровнен по 4-байтовой границе и храниться без сжатия для доступа с нулевым копированием |
| Защита целостности | Встроенная контрольная сумма отсутствует; блок подписи APK v2/v3 охватывает весь архив, включая resources.arsc |
| Инструментарий компиляции | Генерируется aapt (устаревший) или aapt2 (текущие инструменты сборки Android) из исходных XML-файлов в res/values |
| Связанная платформа | Только Android; не используется в iOS, Windows или других мобильных платформах |
| Разработчик | Google / Android Open Source Project (AOSP) |
| Выпущен | 2008 (Android 1.0, part of the APK/aapt toolchain) |
| Последняя версия | AAPT2 binary table (current with the Android build tools); sparse-encoding option added Android 14 / SDK 34, 2023 |
| Открыть стандартное | Да · без роялти |
| Спецификация | android.googlesource.com |
Конвертации ARSC
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах ARSC.