Open ChristianMoler opened 2 years ago
Под какую архитектуру возникает такая проблема?
Та же ошибка. Собираем под iPhone. Версия 2.1.3
Ошибка сохраняется
Идентичная проблема:
Оказалось затруднительно диагностировать проблему, учитывая что она проявляется не у всех. Но самая первая рекомендация: удостовериться, что у всех зависимостей проекта проставлен флаг BUILD_LIBRARY_FOR_DISTRIBUTION=YES.
проблема до сих пор есть xcode 14.2 v3.0.0
флаг BUILD_LIBRARY_FOR_DISTRIBUTION = true включен
У меня данная проблема, проявляется именно в React-Native проектах. И добавление одного флага BUILD_LIBRARY_FOR_DISTRIBUTION = true для меня оказалось недостаточно. Но у меня сработало данное решение в Podfile:
def getBuildLibrariesForDistribution(installer)
juvoLibName = [
"BABFrameObservingInputAccessoryView", "CollectionAndTableViewCompatible", "DTCollectionViewManager",
"DTModelStorage", "GzipSwift", "JFEmojiPicker", "JFMarkdownKit", "JFWebSocket", "JMCodingKit",
"JMDesignKit", "JMImageLoader", "JMMarkdownKit", "JMOnetimeCalculator", "JMRepicKit", "JMScalableView",
"JMShared", "JMSidePanelKit", "JMTimelineKit", "KeychainSwift", "ObjcExceptionBridging", "PureParser",
"ReachabilitySwift", "Realm", "RealmSwift", "SafeURL", "SwiftGraylog", "SwiftMime", "SwiftyNSException",
"TypedTextAttributes", "XCGLogger", "SwiftDate", "libPhoneNumber-iOS"
]
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if (juvoLibName.include? target.to_s)
config.build_settings['GENERATE_INFOPLIST_FILE'] = 'YES'
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
end
end
end
end
Где функция getBuildLibrariesForDistribution(installer) добавлена в тело post_install do |installer|
Да, решение не из самых лучших, но у меня работает.
На основании решения @AndrewNes сформировали вариант ниже. Попробуйте, пожалуйста.
Про настройки IPHONEOS_DEPLOYMENT_TARGET
и GENERATE_INFOPLIST_FILE
пока еще не удалось понять однозначно, как они должны выглядеть (или же каждому проекту индивидуальный подход), и потому возможно с ними еще доведётся поиграться.
Но вместо указания кучи библиотек, вот этот скрипт должен сам сканировать и находить нужные. А мы тем временем работаем над вариантом Open Source вместо раздачи в виде framework, поэтому такие проблемы в последствии должны попросту исчезнуть.
post_install do |installer|
JivoPatcher.new(installer).patch()
end
class JivoPatcher
def initialize(installer)
@sdkname = "JivoSDK"
@installer = installer
end
def patch()
libnames = collectLibNames()
@installer.pods_project.targets.each do |target|
if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
target.build_configurations.each do |config|
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
end
end
target.build_configurations.each do |config|
if libnames.include? target.to_s
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
config.build_settings['GENERATE_INFOPLIST_FILE'] = 'YES'
end
end
end
end
private def collectLibNames()
depnames = Array.new
@installer.pod_targets.each do |target|
next if target.to_s != @sdkname
depnames = collectTargetLibNames(target)
end
return depnames.uniq()
end
private def collectTargetLibNames(target)
depnames = [target.to_s]
target.dependent_targets.each do |subtarget|
depnames += [subtarget.to_s] + collectTargetLibNames(subtarget)
end
return depnames
end
end
В xCode 15, возможно придется брать строчку "config.build_settings['GENERATE_INFOPLIST_FILE'] = 'YES'"
На последней версии и ранних получаю краш на запуске.
На версии 1.7 было нормально