Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SPM binaryTargetのTips
Search
shima
July 27, 2023
Technology
2.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SPM binaryTargetのTips
shima
July 27, 2023
Other Decks in Technology
See All in Technology
20260912_スクラムにジェネラリストは必要か
ryugen04
0
350
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
160
あるけみー式LTスライド作成術
alchemy1115
1
180
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
140
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
450
Screen Lens - 今見てる画面を翻訳する
komagata
0
250
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
130
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
140
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
310
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
8
7.9k
Sigmaで作る業務アプリ
kazushiro_honma
0
120
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Mobile First: as difficult as doing things right
swwweet
225
10k
WENDY [Excerpt]
tessaabrams
13
39k
We Are The Robots
honzajavorek
0
360
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
30 Presentation Tips
portentint
PRO
1
390
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
The Spectacular Lies of Maps
axbom
PRO
1
990
Transcript
Swift Package Manager binaryTargetのtips potatotips #83 - 2023/7/21
自己紹介 島 健人 MedPeerのiOSエンジニア 歩数計アプリを担当しています。
担当プロジェクトにCocoaPodsにしか対応していないライブラリを入 れることになりました。 ここでは HogeSDK と呼ばせていただきます。 プロジェクトではCarthageとSPMを使用中。 Carthageの依存も減らしていってSPMに移行したい段階。 今からCococaPodsの導入はちょっと...
SPMのリポジトリを作ってどうにかすることに HogeSDKと依存先のライブラリ( DependencyA )はXCFrameworkが公開されていたため、 SPMに binaryTarget で置いてしまえば何とかなるだろうと思ってリポジトリを作ってみま した。
let package = Package( name: "HogeSDK", products: [ .library( name:
"HogeSDK", targets: [ "HogeSDK" ] ) ], dependencies: [], targets: [ .binaryTarget( name: "HogeSDK", path: "HogeSDK.xcframework" ), .binaryTarget( name: "DependencyA", path: "DependencyA.xcframework" ) ] )
依存関係でつまづく binaryTarget には dependency を指定することができず、 Package の dependencies に binaryTarget
を書くこともできないため、 このままでは依存関係を解決することができませんでした。
Targetを作って依存を解決する SPMのルートディレクトリに HogeSDKTarget というディレクトリを作成して、 HogeSDKTarget.swift というファイルを設置します(中身は空でいいです)。 Package.swift に新規の target を追加して、
HogeSDK と DependencyA どちらも dependencies に記述します。 そしてPackageの products の targets に HogeSDKTarget を記述します。
let package = Package( name: "HogeSDK", products: [ .library( name:
"HogeSDK", targets: [ "HogeSDKTarget" ] ) ], target: ~ 省略~ .target( name: "HogeSDKTarget", dependencies: ([ .target(name: "HogeSDK"), .target(name: "DepencencyA") ]) ),
これで依存関係が解決され、アプリで利用することができるようになりました。 linkerSettings の記載やbundleが必要な場合も同じようにtargetに追加すれば大丈夫で す。
まとめ .binaryTarget で取り込んだライブラリに直接 dependencies を書くことはできな い。 依存元と依存先の両方を dependencies に含んだ target
を作ることで依存の解決がで きる。 ライブラリによってはこの形式にしてもうまくいかないことがありましたが、条件 がよくわからなかった。 今回のようなケース以外にも、社内ライブラリのSPM対応等で使えると思うので、 依存関係でつまづいた際は試してみるといいかと思います。
ありがとうございました!