Переключатель конфигураций медиакодеков для Android-головных устройств с root-доступом
Atlas Codec Fix подключается к локальному adbd, проверяет совместимость устройства и через
su root временно перекрывает выбранные файлы конфигурации в /vendor/etc точечными bind mount.
Приложение предназначено прежде всего для устройств на платформе Qualcomm msmnile с ожидаемым
набором vendor-файлов.
Приложение выполняет команды с root-правами. Неподходящая конфигурация может нарушить работу видео, звука или камеры до возврата профиля
Defaultлибо перезагрузки устройства.
Основной экран показывает состояние ADB, параметры подключения, активный и выбранный профили. Экспериментальные варианты отделены от основных, а применение и повторная проверка профиля запускаются раздельно.
Встроенный просмотрщик выводит обнаруженные Android-кодеки и позволяет отфильтровать их по аппаратной или программной реализации, типу медиа и назначению.
- подключение к ADB по настраиваемым адресу и TCP-порту; доступны режимы Atlas (
5555), Preface (7777) и Custom; - совместимый с GInputBridge Telnet-режим с автоматическим обнаружением локального shell,
приоритетной проверкой последнего рабочего порта и ограниченным ожиданием позднего запуска
shell после загрузки; при закрытом прошивкой
/proc/net/tcp*порт можно указать вручную; - сохранение ADB-ключа в приватном no-backup хранилище приложения;
- отдельные preflight-проверка и диагностика устройства без изменения конфигурации;
- выгрузка текущих codec-конфигов из стандартных
/vendor/etc,/product/etcи/system/etcвместе с отдельнымparams.txtвDownloads/ACF/<timestamp>/; - ручное применение профиля с подтверждением риска для экспериментальных вариантов;
- проверка каждого bind mount и автоматический возврат к штатной конфигурации при ошибке или несовпадении определённого профиля;
- безопасная операция
Default, которая не зависит от preflight и файлов других профилей; - отложенное автоприменение после загрузки Android с ограниченным числом повторов;
- просмотр доступных Android-кодеков с фильтрами по типу, назначению и аппаратному ускорению;
- опциональные уведомления об ошибках ADB, preflight и применения.
| Профиль | Назначение | Статус |
|---|---|---|
Default |
Снимает активные bind mount и возвращает штатную конфигурацию msmnile. |
Восстановление |
Min |
Подменяет только media_codecs_msmnile.xml вариантом с активными объявлениями кодеков C2/QTI HEVC. |
Основной |
Direwolf |
Накладывает присутствующие на устройстве штатные Direwolf-конфиги на цели msmnile. |
Экспериментальный |
Max |
Применяет агрегированный набор codec, performance, media profile и video specs из нескольких платформ. | Экспериментальный |
Ultra |
Применяет агрегированный C2/QTI-first набор codec, performance, media profile и video specs. | Экспериментальный |
Для ручного применения экспериментального профиля приложение всегда запрашивает явное
подтверждение. Его автоприменение доступно только при включённом Небезопасном режиме, который
также отключает preflight-защиту.
- Android 8.0 или новее (API 26+);
- root-доступ с рабочей командой
su root; - локальный демон ADB, доступный по TCP, обычно на
localhost:5555илиlocalhost:7777; - для Telnet-режима — локальный telnet shell, который приложение обнаруживает среди локальных listening-портов;
- подтверждение ADB-ключа приложения при первом подключении, если его запрашивает устройство;
- для подтверждённого preflight — платформа
msmnile, объявление кодека Qualcomm HEVC и файлы:/vendor/etc/media_codecs_msmnile.xml;/vendor/etc/media_codecs_performance_msmnile.xml;/vendor/etc/media_profiles_msmnile.xml;/vendor/etc/video_system_specs.json;/vendor/etc/media_msmnile/video_system_specs.json.
Если необходимые файлы или объявление кодека HEVC отсутствуют, preflight помечает устройство как
неподдерживаемое. Другая платформа при наличии всех файлов получает статус risky: ручное
применение можно подтвердить явно, но безопасное автоприменение не разрешается.
Прошивки автомобильных ГУ различаются составом vendor-конфигурации, реализацией su, политиками
SELinux и поведением медиасервисов. Поэтому совместимость с конкретной моделью и версией прошивки
нужно проверять на реальном устройстве. Профили Direwolf, Max и Ultra намеренно считаются
экспериментальными.
- Установите подписанный APK Atlas Codec Fix на головное устройство.
- Убедитесь, что локальный
adbdпринимает TCP-подключения и устройству доступенsu root. - Откройте приложение и включите
ADB helper. - Выберите режим подключения:
Atlas,Preface,CustomилиTelnet; для первых трёх укажите адрес и порт, затем нажмитеПодключить. - Запустите
preflightили откройтеДиагностика, не изменяющую конфигурацию. Для выгрузки данных нажмитеВыгрузить файлы для анализа: вDownloads/ACF/<timestamp>/default/будут сохранены найденные codec XML/JSON-файлы, а параметры и настройки — вparams.txt. - Выберите профиль и нажмите
Применить. Для экспериментального профиля подтвердите риск. - Нажмите
Проверить, чтобы заново определить активный профиль, и при необходимости откройте список доступных кодеков. - Для повторного применения после перезагрузки включите
Codecfix после загрузкии задайте задержку от 0 до 3600 секунд.
Bind mount существуют только до перезагрузки. Чтобы вернуть штатное состояние без перезагрузки,
примените Default. Медиасервисы перезапускаются только после проверки полного набора mount'ов или
после явного восстановления.
- Приложение подготавливает root-скрипты и, если нужны, встроенные файлы выбранного профиля во временном каталоге.
- Через ADB выполняется цепочка
su root sh -c. - Для профиля, отличного от
Default, запускается preflight, если пользователь явно не отключил его в небезопасном режиме. - Подготовленный каталог атомарно размещается в
/dev/hevc. ДляMin,MaxиUltraнакладываются только файлы, перечисленные вprofile.manifest;Direwolfиспользует отдельный фиксированный набор штатных vendor-файлов устройства. - Каждый mount проверяется по таблице mount'ов и содержимому файла.
- Итоговый профиль определяется повторно. Любая ошибка или несовпадение запускает откат к штатному состоянию.
Требуются JDK 17 и Android SDK 36. Используйте Gradle Wrapper из репозитория:
ANDROID_HOME=/path/to/android-sdk sh gradlew verify :app:assembleDebugЗадача verify запускает JVM unit tests, Android lint, тест root-транзакции с имитацией mount и
проверку XML, JSONC, манифестов и инвариантов профилей. Debug APK создаётся в
app/build/outputs/apk/debug/.
Для release-сборки скопируйте пример app/_secure.signing.gradle в игнорируемый Git файл
secure.signing.gradle, заполните параметры ключа и выполните:
ANDROID_HOME=/path/to/android-sdk sh gradlew :app:assembleReleaseБез настроенной приватной подписи сборка release-варианта завершается ошибкой; проект не
подменяет release-ключ стандартным debug-ключом. Итоговый APK создаётся в
app/build/outputs/apk/release/ с именем вида
<versionName>[<versionCode>]AtlasCodecFix-release.apk.
Проверьте подпись собранного release APK:
apksigner verify --verbose --print-certs app/build/outputs/apk/release/*.apkhevc/preflight.sh— проверка root, vendor-файлов, объявления HEVC и платформы;hevc/codecfix.sh— restore/apply-транзакция, проверка mount и откат;hevc/detect.sh— определение активного профиля;NOTICE.md— условия и уведомления для включённых Qualcomm/vendor-конфигураций.
Проект пока не предоставляет общую open-source лицензию. Перед распространением APK или
vendor-конфигураций ознакомьтесь с NOTICE.md.