Я изо всех сил пытаюсь настроить 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 на устройстве, просто так.
С уважением