Источники приложений
Способ добавления приложения, проверки обновлений и установок зависит от источника и настроек, заданных пользователем для этого приложения.
Следующие параметры доступны для всех приложений независимо от источника:
- Только отслеживать: Включив этот параметр, вы будете получать уведомления об обновлениях приложений без загрузки их APK. Это полезно для отслеживания обновлений приложений, для которых APK недоступны, или их невозможно легко извлечь с помощью Obtainium. Некоторые источники доступны только для отслеживания, например, ApkMirror. Обратите внимание, что обнаружение версий не будет работать для приложений «только для отслеживания».
- Обнаружение версий: Смотрите раздел обнаружение версий.
- Фильтровать APK-файлы по регулярному выражению: Когда для выпуска приложения доступно несколько APK, пользователю предлагается выбрать один из них вручную. Помимо неудобства, приложение не будет обновляться автоматически в фоновом режиме, даже если это было бы возможно. Этот параметр позволяет указать регулярное выражение, которое может быть использовано для отсеивания лишних APK (в идеале - до одного варианта).
- Пытаться фильтровать APK по архитектуре процессора: Этот параметр позволит Obtainium автоматически отфильтровывать APK, которые не совместимы с устройством. Логика очень проста и основана на имени файла APK, поэтому она не всегда надёжна, и во многих случаях пользователю придётся выполнять фильтрацию самостоятельно.
- Название приложения: Позволяет пользователю задать своё название для приложения вместо того, что извлекает Obtainium.
- Исключить из фоновых обновлений: Этот параметр предотвратит автоматическое обновление приложения в фоне, даже если фоновые обновления включены, и соблюдаются все критерии для обновления в фоне.
- Не оповещать об обновлениях: Этот параметр отключает уведомления о том, что для этого приложения доступно обновление, или что оно было обновлено в фоновом режиме.
Кроме того, каждое приложение имеет дополнительные параметры, зависящие от источника. Большинство из них не требуют пояснений и могут часто изменяться, поэтому они не рассматриваются в этой вики. Однако некоторые источники имеют более уникальное поведение, требующее дополнительных пояснений, и о них рассказывается ниже.
Текущие поддерживаемые источники приложений
- С открытым исходным кодом - Общие:
- Другие - Общие:
- APKPure
- Aptoide
- Uptodown
- itch.io
- Huawei AppGallery
- Tencent App Store
- Vivo App Store
- RuStore
- Apk4Free
- CoolAPK
- Farsroid
- LiteAPKs
- Jenkins Jobs
- APKMirror (Только отслеживание)
- RockMods (Только отслеживание)
- Конкретные приложения:
- Прямая ссылка на APK
- "HTML" (Запасной вариант): Любой другой URL-адрес, который возвращает HTML-страницу со ссылками на APK-файлы
GitHub
GitHub устанавливает ограничение на количество запросов к API, которые вы можете сделать за определённый период времени. Поскольку Obtainium использует API GitHub для получения информации о релизах, вы можете столкнуться с ошибкой "ограничения запросов" ("rate limit"), если у вас больше нескольких десятков приложений из GitHub. Вы можете обойти эту проблему, получив персональный токен доступа (Personal Access Token).
GitHub также позволяет разработчикам размещать несколько релизов своего приложения. Обычно это прошлые версии одного и того же приложения, но могут включать и предварительные релизы, варианты и т. д. - поэтому Obtainium предоставляет различные фильтры, позволяющие ориентироваться в этом и отбирать именно те релизы, которые вас интересуют.
Некоторые дополнительные параметры с менее очевидным поведением:
- Проверять метку «latest»: Когда включено, Obtainium будет выбирать релиз, который разработчик отметил как "последний", а не тот, который хронологически является самым последним. Обычно они совпадают, но в некоторых случаях могут отличаться. Из-за этого приходится делать дополнительный запрос к API GitHub (что быстрее приводит к ограничению).
- Метод сортировки: Управляет сортировкой релизов, если их несколько. По умолчанию релизы сортируются по дате, но "имя (умное)" пытается вывести порядок версий из названий релизов, а "имя" использует строгий алфавитно-цифровой порядок. Опция "Имя (умное) x Дата выпуска" использует сортировку по имени, но возвращается к сортировке по дате, когда имена невозможно сравнить.
- Использовать последнюю загрузку объекта в качестве даты выпуска: Когда включено, отображаемой датой релиза будет считаться дата последнего загруженного файла, а не дата публикации самого релиза.
- Проверять перемещение репозитория: Если включено, Obtainium будет обнаруживать, когда репозиторий был перемещён, и предлагать изменить URL-адрес приложения соответствующим образом.
Вы также можете предоставить Префикс прокси GitHub (например, gh-proxy.com) в настройках источников. Когда задано, все запросы к API GitHub будут направлены через этот прокси, который может помочь обойти ограничения запросов или доступа в некоторых регионах.
Источник GitHub поддерживает поиск и позволяет фильтровать результаты по минимальному количеству звёзд.
Создание персонального токена доступа (Personal Access Token) на GitHub
-
Войдите в свой аккаунт на GitHub.
-
Перейдите в раздел Fine-grained tokens в настройках для разработчиков.
-
Нажмите Сгенерировать новый токен (Generate new token).
-
Задайте название и срок действия (Expiration) своему токену.
-
Прокрутите вниз и нажмите Сгенерировать токен (Generate token).
-
Скопируйте токен сейчас (он показывается только один раз) и вставьте его в настройки Obtainium.
GitLab
Релизы GitLab иногда содержат APK, которые прикреплены нестандартным образом, так что Obtainium не может легко добраться до них. API GitLab предоставляет гораздо более надёжный способ извлечения APK, но его нельзя использовать без ключа API. Хотя это не должно быть проблемой для большинства репозиториев GitLab, вы можете добавить свой собственный персональный токен доступа (Personal Access Token) в настройках Obtainium для более надёжного извлечения APK в крайних случаях, когда это окажется проблемой.
Как и GitHub, GitLab также позволяет разработчикам размещать более ранние версии одного и того же приложения, поэтому при необходимости предоставляются дополнительные параметры.
Создание персонального токена доступа (Personal Access Token) на GitLab
-
Войдите в свой аккаунт на GitLab.
-
Перейдите в раздел персональные токены доступа (personal access tokens) в настройках.
-
Нажмите Добавить новый токен (Add new token).
-
Задайте название и срок действия (Expiration) своему токену.
-
Отметьте флажок
read_api. -
Прокрутите вниз и нажмите Создать персональный токен доступа (Create personal access token).
-
Скопируйте токен сейчас (он показывается только один раз) и вставьте его в настройки Obtainium.
Когда это необходимо?
Читайте это объяснение о нестандартных вложениях APK в релизах GitLab
Сторонние репозитории F-Droid
В отличие от большинства других источников, репозитории F-Droid содержат информацию о нескольких приложениях под одним и тем же URL. Это означает, что в дополнение к URL-адресу репозитория вы должны указать название или идентификатор нужного вам приложения в поле "ID или название приложения". Если вы не уверены, какие приложения доступны в данном репозитории, вы можете воспользоваться кнопкой "Поиск источника" на странице Данные, чтобы найти их.
Обратите внимание, что Obtainium не может автоматически определить, что данный URL указывает на сторонний репозиторий F-Droid. Это означает, что по умолчанию добавление стороннего репозитория F-Droid в Obtainium приведёт к некорректному использованию источника HTML (запасной источник, который Obtainium использует для любого неопознанного URL). Необходимо вручную выбрать "Сторонние репозитории F-Droid" в выпадающем списке "Переопределить источник".
Дополнительные параметры выбора версии имеют разное поведение:
- Пробовать выбрать предложенный код версии APK: Obtainium попытается использовать код версии, который репозиторий F-Droid отметил как предложенную/текущую версию. Это значение используется по умолчанию и хорошо работает для большинства репозиториев.
- Автовыбор актуального кода версии APK: Вместо предложенной версии Obtainium выберет релиз с наибольшим номером кода версии из репозитория. Это может быть полезно, если репозиторий не помечает предлагаемую версию должным образом, или если вы хотите всегда получать самую свежую версию из доступных.
APKMirror
APKMirror является источником "только для отслеживания". Это означает, что вы можете добавить URL-адрес APKMirror в Obtainium для получения уведомлений об обновлениях, но вы не сможете загрузить и установить приложение. Это связано с тем, что владельцы APKMirror не разрешают этого (см. issue #44).
HTML
Источник 'HTML' - это запасной вариант для любых источников приложений, которые не поддерживаются Obtainium напрямую. Благодаря своей гибкости он также позволяет поддерживать менее популярные источники, не расширяя код Obtainium.
Источник HTML работает следующим образом:
- Отправляется запрос на URL источника, предоставленный пользователем, и ответ обрабатывается как HTML-страница. Затем ищутся ссылки на странице.
- Отсеиваются некоторые ссылки. По умолчанию это любая ссылка, не оканчивающаяся на
.apk, но вы можете использовать "Пользовательский фильтр ссылок APK", чтобы задать свой собственный фильтр. - Сортируются оставшиеся ссылки. Сортировка происходит по всей ссылке в алфавитно-цифровом порядке, но вы можете выбрать сортировку только по последнему сегменту ссылки. Последний сегмент обычно является именем файла, но может и не являться им, если вы использовали собственный фильтр на шаге 2.
- Применяется ещё один опциональный пользовательский фильтр ко всем оставшимся ссылкам. Разница между этим фильтром и фильтром из шага 2 в том, что этот фильтр является более общим, который есть у всех источников - он наследуется от родительского класса
AppSource(вариант фильтра APK, описанный в разделе «Источники приложений»). Вероятно, в некоторых ситуациях проще использовать его, чем одно сложное регулярное выражение на шаге 2 (смотрите пример в этом комментарии). Он также полезен при использовании в сочетании с параметром промежуточной ссылки. - Из оставшихся ссылок выбирается первая (или последняя, если включён соответствующий параметр).
- Теперь, когда у нас есть окончательная ссылка на APK, нам нужен уникальный идентификатор релиза, чтобы при изменении идентификатора мы знали, что приложение получило обновление. Для других источников уникальным идентификатором релиза является версия приложения, но для HTML-источника извлечь строку версии может быть невозможно. По умолчанию это просто хеш ссылки. Существует три метода псевдоверсии:
- Частичный хеш APK (по умолчанию): Хеш части самого файла APK. Это более надежный хеш, чем URL, поскольку он зависит от содержимого файла, а не от URL, но для его вычисления требуется загрузить часть APK.
- Хеш ссылки APK: Хеш URL-адреса загрузки APK. Изменяется тогда, когда изменяется URL.
- ETag: Использует заголовок HTTP ETag из ответа на загрузку APK. Это может быть полезно, когда сервер предоставляет стабильные ETag, но сам URL загрузки не меняется между версиями.
- Кроме того, ссылки часто содержат строки версий, встроенные в них. Obtainium не может знать, как извлечь их самостоятельно (на разных сайтах это делается по-разному), поэтому пользователь может указать регулярное выражение, которое может быть применено к ссылке для извлечения версии - для этого и предназначено поле "Извлечение версии".
- Но часто бывает сложно придумать регулярное выражение, которое точно соответствует версии и при этом исключает лишние символы. Для этого у нас есть параметр "Выбрать группу соответствия", который позволяет указать, какую группу в регулярном выражении следует использовать в качестве версии.
- Также есть переключатель "Применить регулярное выражение версии ко всей странице". Когда он включен, Obtainium будет пытаться найти строку версии в любом месте HTML-страницы, а не только в URL-адресе ссылки. Это полезно, когда версия отображается на странице, но не встроена в ссылку на скачивание.
- Функция извлечения версии на самом деле не обязательна - использование хешей ссылок проще и надёжнее. Некоторым пользователям она может понадобиться, поскольку наличие реальной версии выглядит красивее/точнее и позволяет Obtainium, в большинстве случаев, использовать обнаружение версии.
Вы также можете установить заголовки запроса для HTML-источника. Это позволит вам переопределить заголовки по умолчанию (например, User-Agent), если целевой сайт требует определённых заголовков для корректного предоставления APK.
Что касается фильтра промежуточной ссылки, то при его использовании (см. issue #820 о ситуации, когда он полезен) в HTML-источник добавляется предварительный шаг перед обычным процессом:
- Ищутся ссылки на исходной HTML-странице.
- Отфильтровываются все ссылки, которые не соответствуют фильтру промежуточных ссылок.
- Берётся первая оставшаяся ссылка и затем она передаётся в качестве входных данных для обычного процесса HTML-источника, описанного выше.
Шаг промежуточных ссылок имеет свои параметры для управления фильтрацией и сортировкой ссылок:
- Фильтр ссылок по архитектуре: Автоматически фильтрует промежуточные ссылки по архитектуре процессора, если это можно определить по ссылке.
- Фильтровать по тексту ссылки: Если эта опция включена, регулярное выражение фильтра промежуточных ссылок применяется к тексту видимой ссылки, а не к самому URL.
- Сопоставлять ссылки вне тегов
<a>: Также соответствует ссылкам, которые появляются вне стандартных элементов ссылок (например, в структурах данных JavaScript, встроенных в страницу). - Пропустить сортировку / Обратная сортировка / Сортировать по последнему сегменту ссылки: Определяют порядок промежуточных ссылок перед выбором одной.
Примечания для других источников
- HTML: Включает стандартные заголовки запроса, которые должны подходить для большинства сайтов. В некоторых случаях (например, на SourceForge), вам придётся удалить их (и, возможно, указать свои собственные).
- Codeberg: Дополнительные параметры почти идентичны GitHub, и также поддерживается поиск.
- F-Droid: Любое приложение из F-Droid, скорее всего, будет подписано другим ключом, чем релизы того же приложения из других источников. Это означает, что попытка обновить установленное приложение с F-Droid из другого источника (например, GitHub), скорее всего, будет неудачной.
- Tencent App Store: APK из этого источника могут иметь чисто 32-битную архитектуру (armeabi-v7a) и не могут быть установлены на некоторые устройства, использующие более новые SoC архитектуры Arm.
- Любой источник, не связанный с определённым хостом (например, сторонние репозитории F-Droid, серверы Jenkins и SourceHut), не будет автоматически распознан Obtainium. Вы должны вручную выбрать нужный источник из выпадающего списка "Переопределить источник".
- Некоторые источники (такие как APKPure) могут предоставлять файлы XAPK вместо APK. Поддержка XAPK в Obtainium неполная и может работать ненадёжно.