Не удается опубликовать приложение с помощью xcframework, содержащего модули

#ios #xcode #cocoapods #xcframework

#iOS #xcode #cocoapods #xcframework

Вопрос:

Контекст

Я разработал фреймворк, содержащий следующие модули: CryptoSwift, SwiftyRSA и PromiseKit. Я распространяю его как xcframework в cocoapods. Вот как я сгенерировал xcframework:

 xcodebuild archive -workspace MySDK.xcworkspace -scheme MySDK -destination="iOS" -archivePath ./ios.xcarchive -derivedDataPath /tmp/iphoneos -sdk iphoneos SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
    
xcodebuild archive -workspace MySDK.xcworkspace -scheme MySDK -destination="iOS Simulator" -archivePath ./iossimulator.xcarchive -derivedDataPath /tmp/iphoneos -sdk iphonesimulator SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
xcodebuild -create-xcframework -framework ./ios.xcarchive/Products/Library/Frameworks/MySDK.framework -framework ./iossimulator.xcarchive/Products/Library/Frameworks/MySDK.framework -output ./MySDK.xcframework
  

Проблема

Когда я проверяю приложение перед распространением в App Store Connect, оно завершается с ошибкой, показывая следующие сообщения об ошибках:

Ошибка операции подключения к App Store Недопустимая структура пакета — двоичный файл ‘MySDKTest.app/Frameworks/MySDK.framework /Frameworks/Pods_MySDK.framework /Pods_MySDK’ не разрешен. Ваше приложение не может содержать автономные исполняемые файлы или библиотеки, кроме допустимого CFBundleExecutable из поддерживаемых пакетов. Обратитесь к руководству по программированию пакета по адресу https://developer.apple.com/go/?id=bundle-structure для получения информации о структуре пакета приложений iOS.

Ошибка при подключении к App Store Недопустимый пакет. Пакет в ‘MySDKTest.app / Frameworks/ MySDK.framework’ содержит запрещенные вложенные пакеты.

Ошибка при подключении к App Store Недопустимый пакет. Пакет в ‘MySDKTest.app / Frameworks/MySDK.framework’ содержит запрещенный файл ‘Frameworks’.

Комментарии:

1. Здравствуйте, я разработал библиотеку, похожую на эту. Но когда я пытаюсь протестировать приложение, используя библиотеку на устройстве, я получаю следующую ошибку. Как вы решили эту проблему? dyld: библиотека не загружена: ссылка на @rpath/CryptoSwift.framework/CryptoSwift from:….5D748-586C-43AC-99C8-4CE86DD1D34F/Trackly.app/Frameworks/InstalibSDKFramework.framework/Frameworks/CryptoSwift.framework/CryptoSwift ) недопустимо для использования в процессе с использованием проверки библиотеки: сопоставленофайл не имеет cdhash, полностью неподписан? Код должен быть подписан как минимум ad-hoc.

2. В итоге я удалил модули из проекта и добавил исходный код вручную.

3. : D, также я добавил источник вручную, я не могу найти решение.

Ответ №1:

В настройках сборки вашего изменения фреймворка всегда вставляйте стандартные библиотеки Swift -> Нет