В моем приложении Flutter я использую много плагинов.
Однако есть некоторые из них, которые просто не будут работать под Android (то есть под iOS они отлично работают).
Внутри pubspec.yaml
Файл У меня есть следующий список пакетов, которые я собираюсь использовать в своем приложении Flutter.
Закомментированные не работают под Android!
dependencies:
flutter:
sdk: flutter
shared_preferences: ^0.5.2+1
sqflite: ^1.1.5
intl: ^0.15.8
tuple: ^1.0.2
material_design_icons_flutter: ^3.2.3695
launch_review: ^2.0.0
fit_image: ^0.1.2
datetime_picker_formfield: ^0.1.8
flutter_screenutil: ^0.5.2
path_provider: ^1.1.0
# image_picker: ^0.6.0+8
# url_launcher: ^5.0.2
# permission_handler: ^3.1.0
# flutter_downloader: ^1.1.7
large_file_copy: ^0.0.1
flutter_localizations:
sdk: flutter
cupertino_icons: ^0.1.2
Я работаю с Android SDK 28
Мой проект Flutter, который я создаю с помощью:
flutter create --org ch.myorg -i swift -a kotlin <my_app_name>
Как заставить эти пакеты работать под Android ????
image_picker: ^0.6.0+8
url_launcher: ^5.0.2
permission_handler: ^3.1.0
flutter_downloader: ^1.1.7
Я провел следующие испытания:
- набрано
flutter clean
- набрано
flutter packages get
- открыл Android Studio, чтобы посмотреть, удаляет ли он ошибки - но нет шансов
- мигрировал на AndroidX (но это самый большой беспорядок, который вы можете себе представить, поскольку испортили другие пакеты, которые работали до миграции)
- Я создал совершенно новый проект Flutter и не добавил никакого кода (т.е. работаю с приложением hello-world) и продолжаю добавлять пакеты в файл pubspec.yaml, чтобы увидеть, какие пакеты приводят к сбою версии Android. Затем, для первого сбоя, я пытаюсь сделать шаг назад, чтобы найти любую версию пакета, которая может не потерпеть крах. Но это все равно, что найти иголку в стоге сена ... Нет никаких шансов ...
- Я пошел за проектом GitHub создателя пакета и попробовал их пример приложения (то есть каждый пакет имеет пример) - но та же проблема: Android не работает!
- Я создал совершенно новое приложение Flutter и взял содержимое main.dart кода main.dart примера поставщика пакетов (для того, чтобы все android \ local.properties и т. Д. Находились в правильном состоянии, заданном флаттером). создать), а затем я добавил содержимое pubspec.yaml из пакета также в новое приложение флаттера, чтобы получить необходимую зависимость. Но то же самое, вещь: Android не работает !! (iOS работает всегда ..)
- Я удалил Android Studio и переустановил его. Я удалил Flutter и Dart и переустановил его. Нет эффекта ...
Я более чем отчаянно пытаюсь заставить это работать, так как потерял 6 дней, пытаясь заставить эти пакеты Flutter работать под Android ...: (
Любая помощь высоко ценится.
Вот мой flutter doctor -v
вывод:
flutter doctor -v
[✓] Flutter (Channel stable, v1.5.4-hotfix.2, on Mac OS X 10.14.5 18F132, locale
en-CH)
• Flutter version 1.5.4-hotfix.2 at /Users/user/Documents/flutter
• Framework revision 7a4c33425d (4 weeks ago), 2019-04-29 11:05:24 -0700
• Engine revision 52c7a1e849
• Dart version 2.3.0 (build 2.3.0-dev.0.5 a1668566e5)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at /Users/user/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling
support)
• Platform android-28, build-tools 28.0.3
• Java binary at: /Applications/Android
Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build
1.8.0_152-release-1343-b01)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 10.2.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 10.2.1, Build version 10E1001
• ios-deploy 1.9.4
• CocoaPods version 1.6.1
[✓] Android Studio (version 3.4)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 35.3.1
• Dart plugin version 183.6270
• Java version OpenJDK Runtime Environment (build
1.8.0_152-release-1343-b01)
[✓] VS Code (version 1.34.0)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.0.2
[✓] Connected device (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 9 (API
28) (emulator)
• No issues found!
Вот пример получения одного отдельного пакета для работы под Android - у меня пробная версия с file_downloader
( Ссылка на определение пакета ):
Ниже вы найдете загадочный журнал ошибок, когда я пытаюсь использовать пакет file_downloader
:
Шаг 1: создать совершенно новый проект Flutter с flutter create --org com.myorg -i swift -a kotlin testy
Шаг 2: заполнить зависимости пакета внутри файла pubsep.yaml
(т.е. взят из примера пакета). Вот зависимости для этого примера пакета:
dependencies:
flutter:
sdk: flutter
path_provider: ^0.4.0
permission_handler: ^3.0.0
flutter_downloader: ^1.1.7
cupertino_icons: ^0.1.2
Шаг 3: Сохранить main.dart в качестве стандартного приложения "hello world" (т. Е. Что там после создания флаттера ...)
Поэтому мы изменили только несколько зависимостей pubspec.yaml по сравнению со свежим новым приложением Flutter create. А зависимости - это то, что предлагает провайдер пакетов в своем примере!
Приложение "Hello World" прекрасно работает под Android и iOS. Однако добавление нескольких зависимостей pubspec.yaml приводит к сбою Android (iOS работает нормально) ...
Вот журнал ошибок при запуске Android:
* Error running Gradle:
ProcessException: Process "/Users/user/Flutter_applications/01_MyOwn_Flutter_apps/testy/android/gradlew" exited abnormally:
Starting a Gradle Daemon, 5 stopped Daemons could not be reused, use --status for details
FAILURE: Build failed with an exception.
* Where:
Script '/Users/user/Documents/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 200
* What went wrong:
A problem occurred configuring project ':flutter_downloader'.
> Failed to notify project evaluation listener.
> Could not get unknown property 'android' for project ':flutter_downloader' of type org.gradle.api.Project.
> Could not find method debugProvided() for arguments [file collection] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 7s
Command: /Users/user/Flutter_applications/01_MyOwn_Flutter_apps/testy/android/gradlew app:properties
Exited (sigterm)
Другие пакеты доставляют немного другие ошибки. Но это всегда что-то с проблемой gradle или несовместимостью с android. Какую версию Android мне нужно установить? Разве новейшая стабильная версия не является лучшим вариантом? Как узнать, какие версии пакетов подходят для какой версии Android? Как я могу сопоставить два ??? (и все мои другие пакеты продолжают работать).
Интересно, после моей одиссеи, Флаттер - не беспорядок, если речь идет о зависимостях Android ???
Любые предложения о том, как решать такие проблемы, очень ценятся.Как вы обычно поступаете с пакетами Flutter и совместимостью с Android ???
Или вот еще один пример с пакетом image_picker
( от Flutter Team здесь ):
Шаги 1-3 такие же, как указано выше.Все, что я делаю, это создаю приложение hello-world Flutter и добавляем зависимости, как указано в примере пакета:
Здесь зависимости image_picker:
dependencies:
flutter:
sdk: flutter
video_player: 0.5.2
image_picker: ^0.6.0+8
cupertino_icons: ^0.1.2
А здесь ошибка Android:
* Error running Gradle:
ProcessException: Process "/Users/user/Flutter_applications/01_MyOwn_Flutter_apps/testy/android/gradlew" exited abnormally:
FAILURE: Build failed with an exception.
* Where:
Script '/Users/user/Documents/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 200
* What went wrong:
A problem occurred configuring project ':image_picker'.
> Failed to notify project evaluation listener.
> Could not get unknown property 'android' for project ':image_picker' of type org.gradle.api.Project.
> Could not find method debugProvided() for arguments [file collection] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 0s
Command: /Users/user/Flutter_applications/01_MyOwn_Flutter_apps/testy/android/gradlew app:properties
Please review your Gradle project setup in the android/ folder.
Exited (sigterm)