Уникальный путь поиска фреймворка для устройства и симулятора - PullRequest
0 голосов
/ 06 февраля 2020

Я изо всех сил пытаюсь настроить Xcode на использование немного разных фреймворков, когда приложение запускается на Simulator и Device. Чтобы быть точным c Я пытаюсь встроить модуль Flutter в уже установленный массовый проект на родном Swift и Obj C.

Flutter создает следующий набор структур:

Debug/Flutter.framework
Debug/App.framework
Release/Flutter.framework
Release/App.framework
...

Существует также набор для профилирования (и некоторых других фреймворков). Мне нужна Debug для разработки на симуляторе и устройстве, а Release только для окончательного тестирования на устройстве. У нас есть несколько конфигураций - не только Debug и Release, но также App Store и Test Flight. Это конфигурация, которая должна удовлетворить меня, которую я добавил к нескольким файлам xcconfig:

FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*] = $(PROJECT_DIR)/Flutter/Debug $(inherited)
FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*] = $(PROJECT_DIR)/Flutter/Release $(inherited)

Очевидно, у меня есть рамки Flutter по всему файлу project.pbxproj:

5B85908B23C8343300674BA4 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B85908723C833F000674BA4 /* Flutter.framework */; };

5B85908C23C8343300674BA4 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5B85908723C833F000674BA4 /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };

5B85908C23C8343300674BA4 /* Flutter.framework in Embed Frameworks */,

5B85908723C833F000674BA4 /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = >>>>Flutter<<<</Debug/Flutter.framework; sourceTree = "<group>"; };

Вышеприведенные 4 строки аналогичны для App.framework и всех других фреймворков, которые строит Flutter. Как вы видите в последней строке этого вывода, индекс проекта видит файл в папке Debug (выделено >>>> <<<<) <code>Flutter/Debug/Flutter.framework.

Вопросы / Замечания:

  • Всякий раз, когда я работаю как на физическом устройстве, так и на симуляторе, используется отладочная версия фреймворка.
  • Я пытался изменить мои файлы xcconfig, чтобы они всегда указывали на версию выпуска - все еще использовалась Debug
  • Когда я изменил упомянутую запись в файле project.pbxproj, чтобы использовать выпуск - теперь и симулятор, и устройство использовало Release, но симулятор не загружается, так как не может найти архитектуру для себя (Release не работает на симуляторе по дизайну)
  • Интересно, какой смысл FRAMEWORK_SEARCH_PATHS в первую очередь после изменения этого путь в индексе проекта влияет на проект? Когда я удалил Framework из индекса проекта (оставляя пути поиска в рамках), я получил dyld: Library not loaded: @rpath/Flutter.framework/Flutter Reason: image not found
  • Я просто хочу отладочную версию на Simulator, Release на устройстве, просто так.

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...