Я делаю Flutter-приложение для садоводов «Сад». Оно опубликовано в RuStore, и через него я познакомился с SDK RuStore и VK.

Если у вас в зависимостях есть SDK RuStore или VK — промотайте сразу к ночи сотой: 30 сентября и 1 октября отключаются старые Maven-репозитории, и часть библиотек всё ещё ведёт на них.

Последний месяц вышел самым насыщенным: Flutter 3.47 приехал с AGP 9 и встроенным Kotlin. Проект собирается, но с предупреждениями, а при android.builtInKotlin=true конфигурация падает на плагинах VK и RuStore. Рано или поздно этот режим станет единственным, так что чинить лучше сейчас — патчем, а не issue из одной строки.

Ночь первая. VK ID: репозиторий, которого нет

vkid_flutter_sdk 1.0.3 — последняя версия на pub.dev — в новом режиме сборки не собирается: пакет по-старому подключает Kotlin, а AGP 9 этого уже не позволяет. Завёл VKCOM/vkid-android-sdk#120 — с логом, номерами строк и готовым решением.

А патч отправить оказалось некуда. github.com/VKCOM/vkid-flutter-sdk из CONTRIBUTING.md самого пакета отдаёт 404, в vkid-android-sdk Flutter-пакета нет, на pub.dev поле repository пустое. Сезам, откройся — и в ответ 404.

Чтобы правку можно было просто взять, я выложил исходники 1.0.3 как есть в KonstantenKomkov/vkid-flutter-sdk и сделал ветку с правкой; патч (git apply проверен) и вопрос «куда слать изменения?» — комментарием в #120. Чат VK Бизнес ID подсказал devsupport@corp.vk.com, письмо ушло туда же.

Ночь вторая. RuStore Review: MR на GitFlic

Та же история у flutter_rustore_review 10.5.2. Сначала issue #4, затем готовая правка — MR !19. Проверил на чистом приложении и на своём: собирается в обоих режимах, поведение SDK не изменилось.

Ночь третья. myTracker: два PR и одна находка

  • issue #17 и PR #19 — поддержка Swift Package Manager. На iOS Flutter переходит на новый менеджер зависимостей, старый в декабре 2026 закрывается на запись, нативный SDK myTracker в новом уже есть, а Flutter-плагин — нет.

  • PR #18 — та же правка под AGP 9, что и в двух предыдущих ночах. По дороге нашлось, что версия с pub.dev не собирается вообще, независимо от AGP: в main это уже поправлено, но на pub.dev пакет не обновлялся с октября 2024.

Всё проверено на отдельных тестовых приложениях — и на Android, и на iOS, в обоих режимах сборки.

Ночь четвёртая — та, где отвечают сразу. Tracer

Нативные SDK Tracer не видят ошибок Dart: для них такого падения как будто не было. А для Flutter-приложения это большинство ошибок. Так появилась обёртка apptracer_flutter (pub.dev, Android/iOS/web).

Вопросы я задавал в телеграм-группе [Tracer] Feedback, и это лучший опыт общения с вендором за всё время. Ответы приходили в тот же день, по существу и от людей, которые читают собственный код: объяснили механику, которую по документации было не восстановить, честно сказали, что стектрейсы Dart продукт сейчас не понимает, — и пообещали добавить поддержку символов Dart.

И обёртку над своим SDK команда восприняла как помощь, а не как посягательство: это не так очевидно, как кажется.

Ночь пятая. VK Карты

Пишу vk_maps_mapkit — открытую обёртку над SDK карт. Сложности начались до кода, и обе процессные.

Процесс получения ключа не сходится сам с собой. Заявку подаёшь по почте: две формы — об организации и о себе. Ответа ждёшь там же, куда написал. А выдают ключ в кабинете RuStore и письмом об этом не предупреждают — канал связи меняется на середине процесса, и заявитель об этом не знает. Я продолжал писать туда, куда отправлял формы, и ждал письма, которого в этом процессе не предусмотрено; ответили в итоге, но потребовался отдельный запрос.

Android-артефакты. Страница dev.vk.ru/ru/vkmaps/maps-mobile-sdk/android и сегодня предлагает artifactory-external.vkpartner.ru/artifactory/maps-sdk-android/ и ru.mail.maps:mapkit. Адрес отдаёт 404: раздача переехала на Nexus, а карт в публичной части нового репозитория нет — ни ru.mail.maps, ни com.vk.maps, ни зеркала на Maven Central. Подключить Android SDK карт по официальной инструкции сейчас нельзя; на iOS всё в порядке — CocoaPods, SPM, DocC-архив. Письмо с вопросами ушло 8 сентября: по ключам отвечают, а по Android-артефактам жду ответа больше недели.

Ночь сотая. Переезд на Nexus, ATTENTION!!!

Переездов два, и их легко перепутать: VK — artifactory-external.vkpartner.runexus-external.vkteam.ru, старый домен может замолчать после 30 сентября 2026; RuStore — → nexus-external.rustore.ru/repository/maven-rustore-exposed, старый отключается 1 октября 2026.

У себя я перевёл всё за полчаса. Проблема не в объёме работы, а в очерёдности: приложение не может обновиться раньше библиотек, адрес репозитория прописан внутри самих SDK. Значит, порядок обязан быть такой — вендор правит свой код и документацию → авторы приложений обновляют зависимости → релиз → модерация в RuStore, а она может занимать более трёх дней. Уведомить разработчиков необходимо, но недостаточно: без первого шага уведомление нечего применять.

Хорошая новость: RuStore эту работу делает — 8–10 сентября переведены Review, App Update, Pay, Remote Config, Game Center и Install Referrer сразу во Flutter-, React Native-, Unity-, Unreal- и Kotlin/Java-обвязках.

А вот пещера, в которой пока не сорок разбойников, а сорок build.gradle. На 18 сентября, за 12 дней до отключения, старый адрес всё ещё прописан внутри пакетов (обошёл публичные репозитории rustore-dev на GitHub, проекты RuStore на GitFlic и архивы пакетов с pub.dev):

Пакет

Где лежит старый адрес

Что нужно, чтобы правка доехала

flutter_rustore_push 7.2.0

android/build.gradle:20

новая версия на pub.dev

flutter_rustore_billing 10.3.1

android/build.gradle:20

новая версия на pub.dev

Unity Push

PushClientDependencies.xml:5, android_libraries/build.gradle:27 и settingsTemplate.gradle примера

новый архив в релизах

Unity Billing

BillingClientDependencies.xml:5 и ещё 4 файла

новый архив в релизах

react-native-rustore-push 6.9.1

android/build.gradle, строка 92

коммит: пакета нет в npm, ставится из репозитория

react-native-rustore-billing

android/build.gradle:68

коммит

Godot Billing

godot_plugin_libraries/build.gradle:31 и RuStoreGodotCore.gdap

коммит: плагин копируют папкой из репозитория

Defold Push

manifests/android/build.gradle:4

коммит: подключают ссылкой на архив master

Defold Billing

extension_libraries/build.gradle:28

коммит

ReactiveSDK

reactive/build.gradle.kts:62, reactive-test и README

коммит

Плюс примеры, с которых начинают интеграцию, — их копируют к себе целиком, так что релиз не нужен и здесь:

Пример

Где лежит старый адрес

Push, Kotlin

settings.gradle.kts:14

Push, Java

settings.gradle.kts:20

Universal Push

settings.gradle:20

Billing, Kotlin

settings.gradle.kts:14

Billing, Java

settings.gradle.kts:14

Unreal, Push

RuStoreCore_UPL_Android.xml:45 и unreal_plugin_libraries/build.gradle:27

Unreal, Billing

RuStoreCore_UPL_Android.xml:45 и unreal_plugin_libraries/build.gradle:27

Итого: восьми пакетам из десяти достаточно коммита, релиз нужен только двум Unity-плагинам и двум пакетам на pub.dev. А тем, кто уже скопировал плагин к себе, всё равно править у себя — ещё один довод сделать правку и объявить о ней пораньше.

У VK ID документация уже обновлена: страница подключения Android SDK ведёт на новый адрес. А вот в коде до него пока не дошли: на 18 сентября старый домен остаётся в settings.gradle.kts и README репозитория vkid-android-sdk, и в gradle-файлах Flutter-пакета vkid_flutter_sdk 1.0.3. Про пакет я написал в том же issue #120.

Стоит иметь в виду: адрес репозитория не приезжает вместе с зависимостью — он объявляется в сборке, и обновление нативного SDK или документации строку в пакете не заменит.

Поэтому совет читателям: пропишите новый адрес у себя в проекте, не дожидаясь релизов, — тогда 1 октября сборка не встанет.

Что помогло бы всем: сначала код и документация вендора, потом письмо разработчикам; и редирект со старого домена вместо выключения хотя бы на квартал.

И одна ночь. Про работу

В сказках после тысячи и одной ночи рассказчик получал не гонорар, а место при дворе. Ночей у меня пока в десять раз меньше, но момент сказать это вслух наступает и здесь.

Всё перечисленное я делал попутно, пока строил свой продукт: не собралось — разобрался, свёл к воспроизводимому примеру, прислал патч с проверкой на нескольких конфигурациях, а не issue из одной строки. Мне эта работа нравится.

Я Flutter-разработчик, работаю с российским стеком — RuStore, VK ID, Tracer, myTracker, VK Карты — и ищу работу. Если в VK или в командах вокруг нужен человек, который так относится к чужому коду, буду рад поговорить. Контакты в профиле, код и переписка — по ссылкам выше.

И просьба к сопровождающим: MR и PR выше открыты, они маленькие и проверенные. Возьмите их, пожалуйста.

Комментарии (0)