Migrating to AndroidX / Переход на AndroidX

Егор Долгов · 06.06.2019
Архивный материал: он описывает Flutter на момент публикации и не обновляется.

Если вы столкнулись с тем что новые пакеты Flutter требуют поддержки AndroidX , например geolocator ^5.0.0 , то для их использования придется совершить этот переход.

Показанием к переходу может быть то, что вы установили новую версию пакета, и во время запуска или работы Flutter приложения случился его сбой, после которого оно закрылось.

E/flutter ( 2535): [ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(40)] java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArraySet;
E/flutter ( 2535):  at com.google.android.gms.common.api.internal.GoogleApiManager.(Unknown Source:29)
F/flutter ( 2535): [FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(77)] Check failed: CheckException(env).
и т.п.

Источник https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility , здесь описано два подхода по переходу к AndroidX:

  1. Автоматическими средствами IDE Android Studio (рекомендуемый способ) - рассмотрим его ниже;
  2. Ручной (не рекомендуется). Так же по ссылке есть дополнительная информация и рекомендации.

Источник по переходу к AndroidX в Android Studio и другая информация... https://developer.android.com/jetpack/androidx/migrate

Перевод Flutter приложения на AndroidX в автоматическом режиме с помощью Android Studio

Необходима версия Android Studio 3.2 или более новая. Нужно открыть Android проект внутри Flutter проекта. На скриншоте ниже - директория android во Flutter проекте.

Если вы работаете в Android Studio с Flutter проектом, то можете это сделать - нажатием правой кнопки на директорию android и в контекстном меню выбрать: Flutter > Open Android module in Android Studio .

Откроем в новом окне (New Window), чтобы потом вернуться к нашему Flutter проекту.

После того как откроется новое окно, Android Studio произведет все процессы по инициализации проекта, в основном контекстном меню выбираем Refactor > Migrate to AndroidX...

Для восстановления, в случае если вам не подойдет AndroidX, IDE предлагает сделать резервную копию изменяемых файлов. Нажимаем Migrate .

IDE проверяет какие ссылки должны быть изменены, соглашаемся и нажимаем Do Refactor .

Ждем пока IDE завершит все процессы.

Можно проверить что изменился файл android/gradle.properties , в нем должны появится строки:

android.enableJetifier=true
android.useAndroidX=true

При переходе к AndroidX может измениться версия gradle, что приведет к долгой сборке вашего приложения. Но такая задержка разовая - в это время происходит загрузка нужной версии gradle из интернета.

Все готово, теперь можно запустить сборку Flutter приложения!