Невозможно заставить Flutter Add to App работать с плагинами - PullRequest
1 голос
/ 28 мая 2020

У меня есть модуль Flutter, и я пытаюсь добавить его в свое родное приложение Android. Я пробовал как подход AAR, так и подход исходного кода.

Когда я пытаюсь создать AAR, я запускаю команду flutter build aar. Я получаю длинный вывод, но это похоже на сообщение об ошибке:

Plugin project :moor_ffi not found. Please update settings.gradle.
Plugin project :connectivity_macos not found. Please update settings.gradle.
Plugin project :url_launcher_web not found. Please update settings.gradle.

Однако на самом деле создается отладочный файл aar, но не выпуск.

Когда я пытаюсь собрать свой app с исходным кодом, я получаю эту ошибку:

> Configure project :flutter
Plugin project :moor_ffi not found. Please update settings.gradle.
Plugin project :connectivity_macos not found. Please update settings.gradle.
Plugin project :url_launcher_web not found. Please update settings.gradle.

FAILURE: Build failed with an exception.

* Where:
Script '/Users/me/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 738

* What went wrong:
A problem occurred configuring project ':app'.
> Failed to notify project evaluation listener.
   > Could not get unknown property 'android' for project ':app' of type org.gradle.api.Project.
   > Could not get unknown property 'android' for project ':app' of type org.gradle.api.Project.
   > Could not get unknown property 'android' for project ':app' of type org.gradle.api.Project.

Мне удалось передать это сообщение об ошибке, обновив свой settings.gradle до следующего:

def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()

def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
    pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}

plugins.each { name, path ->
    def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
    include ":$name"
    project(":$name").projectDir = pluginDirectory
}

, прочитав этот выпуск https://github.com/flutter/flutter/issues/55077. На этот раз я получаю сообщение об ошибке, что он не может найти классы Flutter. Я попытался добавить flutter.jar в свой проект, но это не имело значения.

Любая помощь будет принята с благодарностью. Я работал над этим весь день, и у меня почти кончились идеи.

Вот мой вывод доктора трепетания:

[✓] Flutter (Channel beta, 1.18.0-11.1.pre, on Mac OS X 10.15.4 19E287, locale en-US)
    • Flutter version 1.18.0-11.1.pre at /Users/me/flutter
    • Framework revision 2738a1148b (2 weeks ago), 2020-05-13 15:24:36 -0700
    • Engine revision ef9215ceb2
    • Dart version 2.9.0 (build 2.9.0-8.2.beta)


[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/me/Library/Android/sdk
    • Platform android-29, build-tools 29.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_212-release-1586-b4-5784211)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.5, Build version 11E608c
    • CocoaPods version 1.8.4

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 45.1.1
    • Dart plugin version 192.8052
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

[✓] VS Code (version 1.45.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.10.2

Ответы [ 2 ]

2 голосов
/ 24 июня 2020

Попробуйте добавить это в свое приложение flutter -> android -> settings.gradle

def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()

def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
    pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}

plugins.each { name, path ->
    def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
    include ":$name"
    project(":$name").projectDir = pluginDirectory
}

Чтобы узнать больше, проверьте this .

0 голосов
/ 26 июня 2020

Замените все файлы app -> android -> settings.gradle на это:

    include ':app'

    def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()

    def plugins = new Properties()
    def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
    if (pluginsFile.exists()) {
    pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
    }

    plugins.each { name, path ->
    def pluginDirectory = 
    flutterProjectRoot.resolve(path).resolve('android').toFile()
    include ":$name"
    project(":$name").projectDir = pluginDirectory
    }
...