私はいくつかのコードをリファクタリングする過程にあり、いくつかのアプリで使用されるフレームワークで現在使用している静的ライブラリを作成しました。私は cocoapods を使用していますが、新しい静的ライブラリを podspec に適切に統合するのに問題があります。
ビルドに静的ライブラリがないため、ビルドが失敗していることがわかります。静的ライブラリを最終的なアプリに手動で追加すると、フレームワークとアプリは正常に動作します。ビルド チームはアプリの最終リリースを生成します。このため、私はフレームワークのみの podspec の更新のみを担当しています。
ポッドの仕様を変更して、スタティック ライブラリを、最終的なアプリのビルド フェーズで表示されるリンクされたライブラリとして設定することはできますか?
アップデート:
私のサブ仕様のframework.library属性に静的ライブラリを追加すると、私は得ていますlibrary not found for -lMyStaticLib
参照用のサブスペック:
s.subspec 'MyStaticLibrary' do |msl|
mss.source_files = 'FrameworkSource/My-Static-Library/*.{h,a}'
msl.library = 'MyStaticLib'
msl.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(SRCROOT)/Pods/My-Framework-Name/FrameworkSource/My-Static-Library"/**', 'LIBRARY_SEARCH_PATHS' => '"$(SRCROOT)/Pods/My-Framework-Name/FrameworkSource/My-Static-Library"/**' }
#msl.frameworks = 'MyStaticLib'
end
更新 2: msl.vendored_libraries = 'MyStaticLib'
podspec で属性を Also validated paths に変更しました。すべてがチェックアウトするように見えます。まだビルド エラーが発生します。デバイス用にビルドした場合 (同じエラーが発生しますが、シミュレーター用にビルドすると i386 の場合):
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_MyStaticLibrary", referenced from:
objc-class-ref in MyFramework(FileInFramework.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
また、アプリのビルド フェーズに移動して Pods フォルダーをトラバースし、プロジェクトに MyStaticLibrary.a ファイルを手動で追加すると、問題なくビルドされることも再度確認しました。