Когда я пытаюсь отправить приложение iOS, которое включает пакет SPM, который использует новый двоичный файл target отправка не выполняется из-за следующих двух ошибок:
Invalid Swift Support. The file MyApp.app/Frameworks/libHello.a doesn’t have the correct file type for this location. Ensure you’re using the correct file, rebuild your app using the current public (GM) version of Xcode, and resubmit it.
Invalid Bundle Structure - The binary file 'MyApp.app/Frameworks/libHello.a' is not permitted. Your app can’t contain standalone executables or libraries, other than a valid CFBundleExecutable of supported bundles. Refer to the Bundle Programming Guide at https://developer.apple.com/go/?id=bundle-structure for information on the iOS app bundle structure.
Я считаю, что это связано с SPM, поскольку когда я вручную перетаскиваю пакет Hello.xcframework
в проект, он позволяет мне успешно отправить.
Попытки сделать другие вещи, такие как изменение настроек сборки Xcode, настройка package.swift и использование липо, чтобы убедиться, что срезы архитектуры действительны, ни к чему не приводят.
Я смотрел фреймворк встраивания на этапах сборки, он не был включен только в этап фреймворка ссылок. Я заметил одну вещь: когда я архивировал приложение, статическая библиотека libHello.a находилась в папке фреймворка приложения, что странно, поскольку ее там не должно быть, поскольку они интегрированы с двоичным файлом приложения. Когда я удалю этот файл, я могу продолжить отправку приложения без каких-либо проблем. Но я не думаю, что это временное решение было бы идеальным в долгосрочной перспективе.
Чтобы упростить задачу, я создал простую статическую библиотеку с одним классом и методом. Затем я использую Xcode, архивирую полученную статическую библиотеку в XCFramework, используя xcodebuild -create-xcframework
. См. Github Repo: https://github.com/shams-ahmed/Hello
Действия по воспроизведению:
- Создать новый проект Xcode
- Добавьте пакет Hello SPM с помощью интерфейса SPM с URL: https://github.com/shams-ahmed/Hello
- Архивировать проект
- Проверить приложение
- Вы можете отменить выбор всех опций
- Сбой с указанным выше сообщением об ошибке
Что мне нужно сделать, чтобы SPM работал со статической библиотекой? Теперь предполагается, что это будет поддерживаться в Xcode 12 и Swift 5.3.
Информация:
- Xcode 12.0
- Swift 5.3
- Использование нового проекта Xcode
- P.S должен использовать статическую библиотеку