Я написал следующие команды в файле скрипта для создания XCFrameworks как для iPhoneSimulator, так и для iPhoneOS, как показано ниже:
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive" -sdk 'iphonesimulator' SKIP_INSTALL=NO
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive" -sdk 'iphoneos' SKIP_INSTALL=NO
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive/Products/Library/Frameworks/ProjectDiphoneSimulator.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneSimulator.xcframework"
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive/Products/Library/Frameworks/ProjectDiphoneOS.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneOS.xcframework"
Я попытался использовать это в проекте после перетаскивания его на встроенные платформы и библиотеки.
Когда я запускаю проект с устройством в качестве цели, он работает нормально. Но когда я запускаю его на симуляторе, он выдает следующую ошибку:
При сборке для iOS Simulator библиотека не была найдена в /Users/Ron/XCFrameworks/ProjectD.xcframework.
Если я изменю порядок создания архива и XCFramework, как показано ниже:
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive" -sdk 'iphoneos' SKIP_INSTALL=NO
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive" -sdk 'iphonesimulator' SKIP_INSTALL=NO
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive/Products/Library/Frameworks/ProjectDiphoneOS.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneOS.xcframework"
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive/Products/Library/Frameworks/ProjectDiphoneSimulator.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneSimulator.xcframework"
Это работает для симулятора, а не для устройства с той же ошибкой:
При сборке для iPhone библиотека не была найдена в /Users/Ron/XCFrameworks/ProjectD.xcframework.
Я также установил «Библиотеки сборки для распространения» на «Да». Если я попытаюсь создать их с разными целями (2 XCFrameworks для iphone и симулятор), это сработает. Но это буквально противоречит цели XCFrameworks.
Я что-то упускаю или делаю какие-то шаги неправильно? Спасибо за ответы заранее.
Вам нужно создать один .xcframework
файл из обоих .framework
. (который будет включать в себя симулятор и архитектуру устройства). Для этого запустите одну команду xcodebuild -create-xcframework
и передайте 2 разных файла .framework:
xcodebuild
-create-xcframework
-framework "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive/Products/Library/Frameworks/ProjectDiphoneOS.framework"
-framework "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive/Products/Library/Frameworks/ProjectDiphoneSimulator.framework"
-output "/Users/Ron/XCFrameworks/ProjectDiphoneOS.xcframework"
Когда вместо этого вы запускаете 2 разные команды xcodebuild -create-xcframework
, в результате ваш .xcframework
включает только последний переданный вами .framework
файл, предназначенный для устройств. Вот почему ваш проект не запускается в симуляторе.
Спасибо за ответ!. Это была простая вещь, которую я упустил из виду.