Если инфорация оказалась интересна и/или полезна, не побрезгуйте, оставьте комментарий ;)

воскресенье, 26 июня 2022 г.

YouTube Vanced больше нет. Но есть ReVanced

Статья навеяна этой новостью на Хабре

Печальные новости о проекте YouTube Vanced. Гугл потребовал закрытия проекта и удаления готовых дистрибутивов. Разработчики подчинились. Поэтому больше YouTube Vanced с официального сайта не скачать. Возможно есть где-нибудь на зеркалах, но надо быть осторожным. В дистрибутиве могут быть вредные присадки.

Напомню, чем был хорош YouTube Vanced (здесь писал, как его установить):

  1. Проигрывание видео в фоне, в том числе с погашенным экраном
  2. Проигрывание видео "картинка в картинке" на фоне другого приложения
  3. Отстутсвие рекламы от Ютуба
  4. Отстутсвие рекламных интеграций от авторов роликов (SponsorBlock)
  5. Подмена кодеков
  6. Расширенная настройка видеопараметров и много чего по мелочи

Но дело освобождения от рекламы живет и побеждает... ну почти. Теперь есть проект ReVanced. Позволяет самостоятельно пропатчить установочный файл YouTube. Для тех, кто хочет себя почувствовать кулхацкером. Надеюсь, мне блог не удалят за рассказ, как пропатчить Ютуб

Документация у них зачаточном состоянии. Но испытать проект на себе можно. Официальные требования для того, чтобы попробовать:

  • ADB. Скачать можно с официального сайта. Распакуйте содержимое архива в директорию, из которой будете работать. У меня это C:\Soft\platform-tools
  • x64 or x86 architecture for now. То есть компьютер на Интеле или АМД. Думаю, с этим проблем нет. ADB и Zulu JDK (см. ниже) есть даже под Mак
  • The apk you want to patch (e.g. YouTube v17.24.34 or YouTube Music v5.03.50). Make sure the same version of the app is installed on the device. Пакет Ютуба (apk) можно взят тут. Важно брать не последнюю версию, а ту, что рекомендуют разработчики ReVanced. Она указана на странице с требованиями. На момент написания стать это 17.24.34. Если возьмете не ту версию, будут такие ошибки:
    WARNING: Skipping seekbar-tapping: Incompatible with version 17.24.35. This patch is only compatible with version com.google.android.youtube: 17.17.34, 17.19.36, 17.20.37, 17.22.36, 17.23.35, 17.23.36, 17.24.34
  • Zulu JDK 17. Брать тут. На всякий случай, полное название "Azul Zulu Build of OpenJDK"
  • Android SDK if you plan to build the integrations from source. Это нам не пригодится
  • Добавлю от себя. У вас должен стоять microG. У меня он уже стоит, так как он используется YouTube Vanced.

Вначале я попытался пойти по этой инструкции. Но она устарела. Ключи запуска изменились. Ссылки на пакеты устарели.

У меня последовательность действий получилась следующая:

  1. Скачиваем ADB и распаковываем. Рекомендую делать короткий путь, чтобы проще было переходить в каталог из командной строки. Мой путь C:\Soft\platform-tools
  2. Скачиваем и ставим Zulu JDK. При установке надо автивировать пункт добавления путей в переменные окружения, чтобы можно было просто написать java [options]
  3. Скачиваем файлы проекта: revanced-cli, revanced-patches, revanced-integrations. И конечно apk-файл Ютуба. Я рекомендую дать скаченным файла простые названия, чтобы ими было удобно пользоваться в командной строке. apk Ютуба я назвал "youtube1.apk", apk c revanced-integrations, соответственно, "revanced-integrations.apk". Скаченные файлы копируем в директорию ADB. То есть я скопировал в C:\Soft\platform-tools.
  4. Запускаем командную строку, переходим в каталог с ADB и нашими файлами. Тут такой момент. В контекстном меню каталога есть пункт "Открыть в терминале" (Windows 11). Но такой терминал у меня рабол некорректно, он не видел запускаемого файла JAVA. Видимо, не читал переменные окружения. И файлы внутри директории видел только с префексом ".\". В общем, не надо так делать. лучше открыть терминал в меню "Пуск/Start" и выполнить команду cd:
    PS C:\Users\Evgeniy> cd C:\Soft\platform-tools\
      PS C:\Soft\platform-tools> ls
    
        Каталог: C:\Soft\platform-tools
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    ------        01.01.2008      0:00        5989376 adb.exe
    ------        01.01.2008      0:00          97792 AdbWinApi.dll
    ------        01.01.2008      0:00          62976 AdbWinUsbApi.dll
    ------        01.01.2008      0:00         241664 dmtracedump.exe
    ------        01.01.2008      0:00         436224 etc1tool.exe
    ------        01.01.2008      0:00        1649152 fastboot.exe
    ------        01.01.2008      0:00          44032 hprof-conv.exe
    ------        01.01.2008      0:00         231594 libwinpthread-1.dll
    ------        01.01.2008      0:00         489984 make_f2fs.exe
    ------        01.01.2008      0:00         489984 make_f2fs_casefold.exe
    ------        01.01.2008      0:00           1157 mke2fs.conf
    ------        01.01.2008      0:00         752128 mke2fs.exe
    ------        01.01.2008      0:00        2834292 NOTICE.txt
    -a----        25.06.2022     22:22       45397186 revanced-cli-1.11.1-all.jar
    -a----        25.06.2022     22:20        1816001 revanced-integrations.apk
    -a----        25.06.2022     23:22           2040 revanced-integrations.keystore
    -a----        25.06.2022     22:10         114924 revanced-patches-1.10.5.dex
    -a----        25.06.2022     22:10         251013 revanced-patches-1.10.5.jar
    -a----        26.06.2022      0:08           2040 revanced.keystore
    ------        01.01.2008      0:00             37 source.properties
    ------        01.01.2008      0:00        1162752 sqlite3.exe
    -a----        25.06.2022     22:21      137603855 youtube.apk
    -a----        25.06.2022     23:35      137603855 youtube1.apk
    попробуйте запустить команду java. Должен быть вывод примерно такой:
    PS C:\Soft\platform-tools> java
    Usage: java [options] <mainclass> [args...]
               (to execute a class)
       or  java [options] -jar <jarfile> [args...]
               (to execute a jar file)
       or  java [options] -m <module>[/<mainclass>] [args...]
           java [options] --module <module>[/<mainclass>] [args...]
               (to execute the main class in a module)
       or  java [options] <sourcefile> [args]
               (to execute a single source-file program)
    
     Arguments following the main class, source file, -jar <jarfile>,
     -m or --module <module>/<mainclass> are passed as the arguments to
     main class.
    ..........
  5. Включаем на телефоне отладку по USB. На моем телефоне для этого надо 10 раз пошлепать по номеру сборки в "Информации о телефоне" для получения доступа к "Меню разработчика". Затем выбрать соответствющий пункт. Способ может быть свой каждой модели телефона.
  6. Нужно узнать идентификатор телефона. Для этого подключаем телефон к комптютеру по USB и вводим команду:
    PS C:\Soft\platform-tools> adb devices
    * daemon not running; starting now at tcp:5037
    * daemon started successfully
    List of devices attached
    12345678        unauthorized  
    На экране смартфона появится окно с предложением авторизовать подключение. Соглашаемся. Еще раз выполняем команду для проверки:
    PS C:\Soft\platform-tools> ./adb devices
    List of devices attached
    12345678        device
    Теперь всё хорошо. Нам нужен это идентификатор - в моем примере 12345678.
  7. Надо определиться с теми патчами, которые вы НЕ хотите накладывать. Полный список можно вывести следующей командой. Рекомендую это сделать на своем компьютере, разработчики бодро вносят изменения:
    PS C:\Soft\platform-tools> java.exe -jar .\revanced-cli-1.11.1-all.jar -b .\revanced-patches-1.10.5.jar -l
    INFO: seekbar-tapping: Enable tapping on the seekbar of the YouTube player.
    INFO: general-ads: Patch to remove general ads in bytecode.
    INFO: video-ads: Patch to remove ads in the YouTube video player.
    INFO: custom-branding: Change the branding of YouTube.
    INFO: premium-heading: Show the premium branding on the the YouTube home screen.
    INFO: minimized-playback: Enable minimized and background playback.
    INFO: disable-fullscreen-panels: Disable comments panel in fullscreen view.
    INFO: old-quality-layout: Enable the original quality flyout menu.
    INFO: disable-create-button: Disable the create button.
    INFO: amoled: Enables pure black theme.
    INFO: disable-shorts-button: Hide the shorts button.
    INFO: hide-cast-button: Patch to hide the cast button.
    INFO: microg-support: Patch to allow YouTube ReVanced to run without root and under a different package name.
    INFO: background-play: Enable playing music in the background.
    INFO: exclusive-audio-playback: Add the option to play music without video.
    INFO: codecs-unlock: Enables more audio codecs. Usually results in better audio quality but may depend on song and device.
    INFO: upgrade-button-remover: Remove the upgrade tab from the pivot bar in YouTube music.
    INFO: tasteBuilder-remover: Removes the "Tell us which artists you like" card from the Home screen. The same functionality can be triggered from the settings anyway
    Приведу список ключей, доступный на момент написания статьи. Тоже рекомендую проверить список на момент вашей работы:
    PS C:\Soft\platform-tools> java.exe -jar .\revanced-cli-1.11.1-all.jar -h
    Usage: ReVanced-CLI [-hV] (-b=<patchBundles> [-b=<patchBundles>]... [-l]
                        [-a=<inputFile> -o=<outputPath> [-e=<excludedPatches>]...
                        [-r] [--experimental] [-m=<mergeFiles>]... [--mount]
                        [--cn=<cn>] [--keystore=<keystorePath>] [-p=<password>]
                        [-d=<deploy>] [-t=<cacheDirectory>] [-c]])
      -a, --apk=<inputFile>      Input file to be patched
      -b, --bundles=<patchBundles>
                                 One or more bundles of patches
      -c, --clean                Clean the temporal resource cache directory. This
                                   will be done anyways when running the patcher
          --cn=<cn>              Overwrite the default CN for the signed file
      -d, --deploy-on=<deploy>   If specified, deploy to adb device with given name
      -e, --exclude=<excludedPatches>
                                 Explicitly exclude patches
          --experimental         Disable patch version compatibility patch
      -h, --help                 Show this help message and exit.
          --keystore=<keystorePath>
                                 File path to your keystore
      -l, --list                 List patches only
      -m, --merge=<mergeFiles>   One or more dex file containers to merge
          --mount                If specified, instead of installing, mount
      -o, --out=<outputPath>     Output file path
      -p, --password=<password>  Overwrite the default password for the signed file
      -r, --resource-patcher     Disable patching resources
      -t, --temp-dir=<cacheDirectory>
                                 Temporal resource cache directory
      -V, --version              Print version information and exit.
    Например, в статье, на которую я ссылался выше использовался ключ "-i", позволявший активировать патч. Надо было перечислить все патчи, которые нужно применить. А вот в текущей версии такого ключа нет, но есть ключ "-e", который исключает применение тех или иных патчей. То есть оказывает обратное действие в сравнении со старым ключом "-i".
  8. Проверяем, что телефон подключен к компьютеру и выполняем команду:
    PS C:\Soft\platform-tools> java.exe -jar .\revanced-cli-1.11.1-all.jar -a .\youtube1.apk -c -d 12345678 -o .\revanced.apk -b .\revanced-patches-1.10.5.jar -m .\revanced-integrations.apk
    INFO: Decoding resources
    INFO: Reading dex files
    INFO: Merging .\revanced-integrations.apk
    WARNING: Skipping background-play: Incompatible with com.google.android.youtube. This patch is only compatible with com.google.android.apps.youtube.music
    WARNING: Skipping exclusive-audio-playback: Incompatible with com.google.android.youtube. This patch is only compatible with com.google.android.apps.youtube.music
    WARNING: Skipping codecs-unlock: Incompatible with com.google.android.youtube. This patch is only compatible with com.google.android.apps.youtube.music
    WARNING: Skipping upgrade-button-remover: Incompatible with com.google.android.youtube. This patch is only compatible with com.google.android.apps.youtube.music
    WARNING: Skipping tasteBuilder-remover: Incompatible with com.google.android.youtube. This patch is only compatible with com.google.android.apps.youtube.music
    INFO: seekbar-tapping succeeded
    INFO: general-ads succeeded
    INFO: video-ads succeeded
    INFO: custom-branding succeeded
    INFO: premium-heading succeeded
    INFO: minimized-playback succeeded
    INFO: disable-fullscreen-panels succeeded
    INFO: old-quality-layout succeeded
    INFO: disable-create-button succeeded
    INFO: amoled succeeded
    INFO: disable-shorts-button succeeded
    INFO: hide-cast-button succeeded
    INFO: microg-support succeeded
    INFO: Compiling resources
    INFO: Writing modified dex files
    INFO: Writing dex file classes.dex
    INFO: Writing dex file classes3.dex
    INFO: Writing dex file classes2.dex
    INFO: Writing dex file classes4.dex
    INFO: Writing dex file classes6.dex
    INFO: Writing dex file classes5.dex
    INFO: Writing dex file classes7.dex
    INFO: Writing dex file classes8.dex
    INFO: Writing resources
    INFO: Aligning revanced_raw.apk
    INFO: Signing revanced_aligned.apk
    INFO: Found existing keystore: revanced
    INFO: Copying revanced_signed.apk to revanced.apk
    INFO: Installing without mounting
    INFO: Finished
    Пакет будет подготовлен и установлен на телефон. Важно. Имя пакета в ключе"-o .\revanced.apk" - это выходное имя создаваемого пакета. Его на момент запуска команды еще не существует. Имя можно выбрать любое. Идентификатор устройства в ключе "-d 12345678" мы узнали на шаге 6.

    Пример команды, если мы хотим исключить некоторые патчи:
    java.exe -jar .\revanced-cli-1.11.1-all.jar -a .\youtube1.apk -c -d 6535d72f -o .\revanced.apk -b .\revanced-patches-1.10.5.jar -m .\revanced-integrations.apk -e custom-branding -e premium-heading -e amoled
  9. Остается проверить, что прижение появилось на телефоне и работает.

Из замеченных минусов - нет тонкой настройки видео, как было в YouTube Vanced. И нет фильтра на ремкламную интеграцию авторов видео. И явный минус - всю эту операцию надо делать регулярно с выходом новых версий Ютуба и патчей ReVanced к нему

Комментариев нет: