Проекты Flutter и проблемы с миграцией Android X

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


person marvin ralph    schedule 24.02.2019    source источник
comment
На дату этого комментария flutter create по умолчанию используется androidx. Если вы хотите, вы можете указать аргумент командной строки с flutter create как --androidx.   -  person Blasanka    schedule 26.09.2019


Ответы (9)


Когда вы создаете новый проект, просто следуйте ответу @harsh, и все готово.

Однако, поскольку я недавно обновил свое существующее приложение, чтобы использовать новые плагины, мне также пришлось перейти на AndroidX ... и процедуру по умолчанию в официальные инструкции не работают, поскольку для переноса проекта используется Android Studio - сказано:« Использование не найдено! ».

Итак, я сделал следующее:

  1. обновил Android Studio до 3.3
  2. попробовал меню Refactor> Migrate to AndroidX
  3. получил "Никаких использований не найдено" (если вам удастся сделать это здесь, остановитесь! все готово! ... на самом деле, вы можете дать этот ответ попробуйте, прежде чем продолжить)
  4. открыл android/gradle.properties и добавил
android.useAndroidX=true
android.enableJetifier=true
  1. открыл android/build.gradle и изменил

    • com.android.tools.build:gradle to version 3.3.0
    • com.google.gms:google-services до версии 4.2.0
  2. открыл android/app/build.gradle и

    • changed compileSdkVersion to 28
    • заменен android.support.test.runner.AndroidJUnitRunner на androidx.test.runner.AndroidJUnitRunner
    • заменен com.android.support.test:runner на androidx.test:runner:1.1.0
    • заменен com.android.support.test.espresso:espresso-core на androidx.test.espresso:espresso-core:3.1.0
    • в моем случае это было так, но вот полный список необходимых замен
  3. открыл android/gradle/wrapper/gradle-wrapper.properties и изменил distributionUrl на https\://services.gradle.org/distributions/gradle-4.10.2-all.zip (возможно, вам придется использовать версию 5.4.1, см. обновление ниже)

  4. выполнено flutter clean

И вопреки тому, что я ожидал, ЭТО Сработало! :)

ОБНОВЛЕНИЕ (27 октября 2019 г.)

При обновлении моего приложения до флаттера v1.9.1+hotfix.5, поскольку я использую подписывание приложений, я застрял с ошибкой SigningConfig "release" is missing required property "storePassword", и в конце концов это была версия Gradle из шага 7 выше. Итак, теперь я использую 5.4.1, как предлагается в этом вики.

[android/gradle/wrapper/gradle-wrapper.properties]

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
person Feu    schedule 24.02.2019
comment
где именно находится gradle.properties? это тот, что в корневой папке? /Users/(user)/.gradle или где конкретно? - person Malcolm Salvador; 27.06.2019
comment
Это сработало и для меня. @MalcolmSalvador, gradle.properties, упомянутые в инструкциях, находится в android / gradle.properties. - person SamIAmHarris; 01.07.2019
comment
@MalcolmSalvador C: \ Users \ имя пользователя \ AndroidStudioProjects \ имя проекта \ android \ gradle.properties - person Developer; 30.09.2019
comment
'com.android.support.test.espresso: espresso-core' Я не нашел этого в моем 'app / build.gradle' - person Developer; 30.09.2019
comment
Я выполнил остальные шаги, но все еще получаю эту ошибку. stackoverflow.com/questions/58115011/, и я не могу создать apk. - person Developer; 30.09.2019
comment
После внесения этих изменений мне пришлось запустить flutter clean, который исправил сбой приложения при запуске. - person rolznz; 11.10.2019
comment
Он работал для apk сборки flutter, но для appbundle сборки flutter он не работал. Выдает мне ошибку, в которой говорится, что сбой Gradle мог быть из-за несовместимости AndroidX в этом приложении Flutter. - person atereshkov; 26.10.2019
comment
Единственное, что мне помогло, - это установить minifyEnabled из true в false. Но отключение обфускации - не лучшая идея. - person atereshkov; 26.10.2019
comment
ты легенда - person TheDevWay; 10.01.2020

Я успешно выполнил миграцию, используя Sam ответ!

1. Open the Flutter project into Android Studio
2. Right click on the android directory and Flutter -> Open Android module in Android Studio. It asked me to upgrade my gradle plugin.
3. Then I installed Google Play Services. Tools -> SDK Manager -> SDK Tools and chek the Goolge Play Services.
person Luan Almeida    schedule 12.03.2019
comment
что делать, если опция «Flutter» (после щелчка правой кнопкой мыши по каталогу Android) недоступна / неактивна? Что это вообще значит? - person Merv Merzoug; 18.03.2019
comment
Я считаю, что это означает, что плагин Android Studio Flutter не установлен. Вы можете это проверить? - person Luan Almeida; 25.03.2019
comment
github.com/flutter/flutter/wiki/ --> это помогает - person Llama; 19.11.2020

Добавьте это в конец вашего pubspec.yaml файла без родителя:

module:
  androidX: true

Затем в android / graddle.properties добавьте:

android.useAndroidX=true
android.enableJetifier=true

Запустите в своем CLI:

flutter clean

и перезапустите свой код

flutter run

Это может решить вашу проблему с AndroidX.

Что касается вашего SDK, я думаю, вы можете изменить внутри android/app/build.gradle

minSdkVersion 21
targetSdkVersion 28
multiDexEnabled true

multiDexEnabled не является обязательным (в случае связанной с ним ошибки).

Думаю, это поможет решить вашу проблему. Пожалуйста, поделитесь со мной своим мнением.

person Renaud    schedule 12.01.2020

Столкнулся с этой проблемой недавно. После многих часов поиска я наткнулся на эту среднюю страницу https://medium.com/@swhussain110/how-to-migrate-your-flutter-app-to-androidx-9a78eaaa924b

Следуй этим шагам

  1. На уровне проекта build.gradle измените путь к классам на com.android.tools.build:gradle:3.3.1.
  2. На уровне приложения build.gradle измените ваши compileSdkVersion и targetSdkVersion на 28.
  3. Теперь щелкните правой кнопкой мыши каталог Android в вашем проекте Flutter, перейдите во Flutter и нажмите Открыть модуль Android в Android Studio. Открыть проект в новом окне.
  4. Теперь перейдите в Refactor на панели инструментов и нажмите Migrate to AndroidX.
  5. Затем нажмите «Выполнить рефакторинг» и подождите, пока построится gradle.
person A Vyom    schedule 14.06.2019
comment
Это единственное решение, которое у меня сработало. Спасибо друг - person defemz; 14.12.2019

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

person Robert Apikyan    schedule 22.01.2020

При обновлении версии Android Studio с 3.2 до 3.3. Android Studio версии 3.3 и более поздних версий вы можете использовать либо библиотеки Android, либо библиотеки AndroidX, но

На платформе flutter flutter всегда будет использовать новейшую конфигурацию студии Android.

Это основная причина, по которой пользователи получают ошибку при использовании зависимости в соответствии с androidx.

Чтобы перенести проект flutter на AndroidX, перейдите по этой ссылке: https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility

person harsh    schedule 24.02.2019

Столкнулся с аналогичной проблемой.

Эта статья на Medium помогла мне найти 75% решение моей проблемы

Я выполнил шаги, упомянутые в этой статье. и я застрял в конце

Студия Android не позволяет мне напрямую открывать модуль (папку) Android из структуры проекта. Поэтому я открываю вручную в новом окне студии Android.

Android не подвергается рефакторингу. Gradle testRunner classpath androidTestImplementation он подсказывает, как это зависит. Итак, я вручную заменил все пути, подобные.

  • заменен android.support.test.runner.AndroidJUnitRunner на androidx.test.runner.AndroidJUnitRunner
  • заменен com.android.support.test:runner на androidx.test:runner:1.1.0
  • заменен com.android.support.test.espresso:espresso-core на androidx.test.espresso:espresso-core:3.1.0

и в конце добавил в android / gradle.properties

android.useAndroidX=true
android.enableJetifier=true

Затем запустил приложение. ;) после этого пропало предупреждение androidX.

person Rajath    schedule 12.02.2020

он все еще не работал после того, как я перешел на androidx

Я просто устанавливаю сервис Google Play на свой SDK, и он работает

person kojo justine    schedule 12.08.2019

Столкнулся с такой же проблемой.

В моем build.gradle compileSdkVersion и targetSdkVersion уже были установлены на 28. minSdkVersion было установлено на 23.

Уже добавил android.useAndroidX = true android.enableJetifier = true в мой android / graddle.properties.

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

Добавление следующего кода в мое приложение / build.gradle решило проблему.

android {

defaultConfig {
    ...
      minSdkVersion 23 
      targetSdkVersion 28
      multiDexEnabled true
}

}

dependencies {

implementation 'com.android.support:multidex:1.0.3'

}

person Sachitha Ilayperuma    schedule 07.08.2020