Xcode14 を更新した後、コンパイルされたプロジェクトは iOS12.5 以降のシステムでは正常に動作することがわかりましたが、iOS11 や iOS12.1 などの iOS12.5 より前のシステムで実行すると、次のようなエラーが報告されます。
dyld: ライブラリがロードされていません: /usr/lib/swift/libswiftCoreGraphics.dylib
参照元: /private/var/containers/Bundle/Application/xxx-xxx-xxx-xxx-xxxx/xxx.app/Frameworks/xxx.framework/ xxx
理由: 画像が見つかりません
原因を調べてみると、image not found だったそうですが、このライブラリのイメージはプロジェクトで使用されておらず、iOS 12.5 以降では問題なく動作していたので、明らかに今回の問題ではないので、ライブラリがロードされていないという問題がある。この問題の解決策は、「ターゲット」->「ビルドフェーズ」-> 「ライブラリが不足しているライブラリとバイナリをリンク」に libswiftCoreGraphics を追加することです(エラーが報告されたライブラリを追加します)。たとえば、libswiftCoreGraphics が欠落しているので、libswiftCoreGraphics.tbd を追加するだけです。
別の前提があることに注意してください。
これはメイン プロジェクト内です: [ターゲット] -> [ビルド設定] -> [ビルド オプション] -> [常に Swift 標準ライブラリを埋め込む] を [はい] に設定する必要があります。
方法 2: (推奨方法) Podfile での統合変更
不足しているライブラリを追加します。
if target.name.eql?('ライブラリ名')
ライブラリ = config.build_settings['OTHER_LDFLAGS']
config.build_settings['OTHER_LDFLAGS'] = "#{ライブラリ} -lswiftCoreGraphics"
libraryPath = config.build_settings['LIBRARY_SEARCH_PATHS']
config.build_settings['LIBRARY_SEARCH_PATHS'] = "#{libraryPath} $(SDKROOT)/usr/lib/swift"
終わり
iOS16への適応方法と合わせた利用箇所は以下の通りです(全体の参考は以下をご参照ください)
post_install は |インストーラー| を実行します
installer.pods_project.targets.each は |target| を実行します。
target.build_configurations.each は |config| を実行します。
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "いいえ"
config.build_settings['CODE_SIGNING_ALLOWED'] = "いいえ"
if target.name.eql?('ライブラリ名')
ライブラリ = config.build_settings['OTHER_LDFLAGS']
config.build_settings['OTHER_LDFLAGS'] = "#{ライブラリ} -lswiftCoreGraphics"
libraryPath = config.build_settings['LIBRARY_SEARCH_PATHS']
config.build_settings['LIBRARY_SEARCH_PATHS'] = "#{libraryPath} $(SDKROOT)/usr/lib/swift"
終わり
終わり、
終わり
、終わり
方法 3: 方法 2 の補足 (上記の方法 2 でもエラーが報告される場合は、次の方法を使用できます)
post_install は |インストーラー| を実行します
installer.pods_project.targets.each は |target| を実行します。
target.build_configurations.each は |config| を実行します。
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "いいえ"
config.build_settings['CODE_SIGNING_ALLOWED'] = "いいえ"
if target.name.eql?('ライブラリ名')
# .xcconfig ファイルのパスを作成する
configuration_file = "#{Dir.pwd}/Pod/ターゲット サポート ファイル/#{target.name}/#{target.name}.#{config}.xcconfig"
# .xcconfig ファイルから値を読み取る
「#{target.name}.#{config}.xcconfig PATH #{configuration_file}」を配置します
ライブラリ = read_xxconfig_Param(configuration_file, 'OTHER_LDFLAGS')
libraryPath = read_xxconfig_Param(configuration_file, 'LIBRARY_SEARCH_PATHS')
「#{target.name}.#{config}.xcconfig ライブラリ #{libraries}」を配置します
config.build_settings['OTHER_LDFLAGS'] = "#{ライブラリ} -lswiftCoreGraphics"
config.build_settings['LIBRARY_SEARCH_PATHS'] = "#{libraryPath} $(SDKROOT)/usr/lib/swift"
終わり
終わり、
終わり
、終わり
def read_xxconfig_Param(filePath, paramName)
paramValue = ""
if File::exist?(ファイルパス)
IO.readlines(filePath).each は |block| を実行します。
str = String.new(ブロック)
str.include の場合? パラメータ名
paramValue = str.gsub("#{paramName} = ", "")
パラメータ値を返す
終わり
終わり
終わり
戻る ""
終わり