Импорт библиотек IOS SDK в плагин Flutter

Резюме: я создаю плагин Flutter, который будет использоваться для нескольких проектов, которые я разрабатываю. У меня нет опыта написания специального кода для платформы.

У меня проблемы с импортом библиотеки SDK для IOS *.Framework и *-Resources.bundle в мой плагин.

Я попытался решение для в https://github.com/flutter/flutter/issues/17978

Кроме того, я попытался очистить и пересобрать приложение, но безуспешно и попытался очистить и пересобрать пример приложения, но безуспешно, и я получаю следующую ошибку:

*.Podspec:

Pod::Spec.new do |s|
  s.name             = 'plugin_name'
  s.version          = '0.0.1'
  s.summary          = 'A new flutter plugin project.'
  s.description      = <<-DESC
A new flutter plugin project.
                       DESC
  s.homepage         = 'http://example.com'
  s.license          = { :file => '../LICENSE' }
  s.author           = { 'Your Company' => 'email@example.com' }
  s.source           = { :path => '.' }
  s.source_files = 'Classes/**/*'
  s.public_header_files = 'Classes/**/*.h'
  s.dependency 'Flutter'

  s.ios.deployment_target = '9.0'
end


Pod::Spec.new do |spec|
  spec.name         = "plugin_name"
  spec.version      = "2.3.7"
  spec.summary      = "SDK"
  spec.homepage     = "https://hkhars.com"
  spec.author       = "Hussain Alkhars"
  spec.license          = { :file => '../LICENSE' }
  spec.source           = { :path => '.' }
  spec.ios.deployment_target  = '9.0'
  spec.preserve_paths = 'IOSFLUTTERSDK.framework'
  spec.xcconfig = { 'OTHER_LDFLAGS' => '-framework IOSFLUTTERSDK' }
  spec.vendored_frameworks = 'IOSFLUTTERSDK.framework'
  spec.public_header_files = "IOSFLUTTERSDK.framework/Headers/*.h"
  spec.resource_bundle = { 'IOSFLUTTERSDK-Resources' => './*' }
end

Ошибка при попытке построить с flutter build ios --no-codesign

fatal error: 'plugin_name/PluginNamePlugin.h' file not found
    #import <plugin_name/PluginNamePlugin.h>```

1 ответ

Вы испортили свой файл Podspec. Должен быть только один раздел, начиная Pod::Spec.new do |s|..., Если вы хотите попробовать подход в связанной проблеме Github, ваш файл Podspec должен выглядеть следующим образом:

Pod::Spec.new do |s|
  s.name             = 'plugin_name'
  s.version          = '0.0.1'
  s.summary          = 'A new flutter plugin project.'
  s.description      = <<-DESC
A new flutter plugin project.
                       DESC
  s.homepage         = 'http://example.com'
  s.license          = { :file => '../LICENSE' }
  s.author           = { 'Your Company' => 'email@example.com' }
  s.source           = { :path => '.' }
  s.source_files = 'Classes/**/*'
  s.public_header_files = 'Classes/**/*.h'
  s.dependency 'Flutter'
  s.ios.deployment_target = '9.0'
  s.preserve_paths = 'IOSFLUTTERSDK.framework'
  s.xcconfig = { 'OTHER_LDFLAGS' => '-framework IOSFLUTTERSDK' }
  s.vendored_frameworks = 'IOSFLUTTERSDK.framework'
  s.resource_bundle = { 'IOSFLUTTERSDK-Resources' => './*' }
end

Тем не менее, я пробовал это раньше безуспешно - мне нужно было связать все вручную через Xcode, открыв проект:

open example/ios/Runner.xcworksapce

Нажмите на проект "Runner" вверху и нажмите на элемент "Build Phases" с правой стороны (если "Build Phases" не отображается, убедитесь, что выбран значок папки слева, и вы мы кликнули на Runner Target в средней панели, а не на Runner Project).

Найдите панель "Связать двоичные файлы с библиотеками" и нажмите кнопку "+":

Выберите файл.framework и нажмите "Готово". Повторите то же самое под "Вставить рамки".

Я не уверен на 100%, но я думаю, что вы можете сделать то же самое в разделе "Копировать ресурсы".

Другие вопросы по тегам