Migrating to AndroidX / Переход на AndroidX
Егор Долгов · 06.06.2019Если вы столкнулись с тем что новые пакеты 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:
- Автоматическими средствами IDE Android Studio (рекомендуемый способ) - рассмотрим его ниже;
- Ручной (не рекомендуется). Так же по ссылке есть дополнительная информация и рекомендации.
Источник по переходу к 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 приложения!