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

Я написал плагин Flutter для использования SDK, который требует включения некоторых модулей .aar. Он строится и отлично работает в примере приложения для плагина, но когда я импортирую плагин в другое приложение и пытаюсь его построить, сборка немедленно завершается с ошибкой с сообщением о том, что один из модулей .aar не может быть найден в плагин. Это не имеет смысла, потому что модуль определенно присутствует - каналы платформы для использования SDK не работают в примере приложения, если модуля там нет.

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

Любой совет или помощь здесь будут оценены. TIA!


person GroovinChip    schedule 01.12.2020    source источник
comment
Ссылаясь на ошибку, которую вы упомянули, вероятно, IDE не может найти путь для модуля. Убедитесь, что вы правильно импортируете модуль aar, а также проверьте, помогает ли это проверка пути stackoverflow.com/a/23326397/8253662   -  person Mahesh Jamdade    schedule 02.12.2020
comment
Также этот вопрос требует дополнительной информации для других, чтобы помочь вам, если бы вы могли прикрепить несколько снимков экрана с ошибкой, и где именно размещен модуль aar и как он включается, люди могли бы вам лучше помочь.   -  person Mahesh Jamdade    schedule 02.12.2020
comment
@maheshmnj Спасибо за ответ. При импорте модулей aar я особо удостоверился в том, что точно следую инструкциям, предоставленным SDK. И, как я уже сказал, поскольку пример приложения работает без проблем, ясно, что я все сделал правильно. Проблема возникает при импорте плагина из пути в другое приложение. Конкретное сообщение: Project with path ':module' could not be found in project ':plugin'. (не настоящие имена). Я тоже выполнил инструкции из ответа, на который вы указали ссылку, и это ничего не изменило.   -  person GroovinChip    schedule 02.12.2020
comment
@maheshmnj Для импорта модулей aar я предпринял следующие шаги: 1) Файл ›Новый модуль› Импортировать пакет .aar ›выбрать .aar из файлов› Готово 2) Структура проекта ›модули› + только что выбранный мной модуль .aar 3) Проект структура ›зависимости› мой проект ›+ модуль, который я только что добавил 4) Убедитесь, что зависимости указаны в build.gradle   -  person GroovinChip    schedule 02.12.2020
comment
Что-то, что мне приходит в голову, это использование api вместо implementation для добавления зависимостей в build.gradle, поскольку разработчик .android.com / studio / build / dependencies говорит, что implementation предотвращает доступ к модулям для других модулей, тогда как api разрешает доступ другим модулям. Однако это не принесет никаких изменений.   -  person GroovinChip    schedule 02.12.2020


Ответы (1)


Я понял!!!!

Ответ здесь: Как добавить зависимость .aar в библиотечный модуль ?

Это адаптируется к плагину Flutter следующим образом:

  1. Добавьте папку libs в корень проекта android в подключаемом модуле. Добавьте туда .aar файлы.
  2. В build.gradle файле плагина обновите rootProject.allProjects, чтобы он выглядел следующим образом:
    repositories {
        google()
        jcenter()
        flatDir {
            dirs 'libs'
            dirs project(':your_plugin_name_here').file('libs')
        }
    }
}
  1. По-прежнему в том же build.gradle добавьте свои .aar файлы в качестве зависимостей следующим образом:
implementation(name:'aar_name_here', ext:'aar')
  1. В приложении Flutter, для которого вы хотите использовать плагин, откройте build.gradle файл уровня приложения и добавьте сам плагин в качестве зависимости, например:
android {
  ...
  
    dependencies {
        implementation project(':your_flutter_plugin');
    }
}
  1. В settings.gradle файле приложения, которое использует плагин, измените
include ':app'

to

include ':app', ':your_flutter_plugin'

И это должно сработать !!

person GroovinChip    schedule 02.12.2020
comment
Для меня это не сработало. Вместо настройки settings.gradle я добавил implementation(name:'aar_name_here', ext:'aar') в build.gradle проекта-потребителя. - person SEG.Veenstra; 16.07.2021