iosでのframework導入のおさらい #関モバ
TRANSCRIPT
![Page 1: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/1.jpg)
iOSでのFramework導入のおさらい@ikesyo
関西モバイルアプリ研究会!#4,!2015)07)21!Tue
#関モバ
![Page 2: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/2.jpg)
@ikesyo
!ikesyo_nnid
いけしょー/池田翔京都でフリーランスのiOSエンジニア(時々Android)しています
現在はフリュー㈱のモバイル開発のチームにジョイン中。
Swi$/Reac*veCocoaで書いています。
![Page 3: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/3.jpg)
![Page 4: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/4.jpg)
Reac%veCocoa/Carthageのコミッター(Collaborator)やってます2✨
![Page 5: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/5.jpg)
HimotokiというJSONデコーダーを作ってます• GitHub
• SlideShare
![Page 6: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/6.jpg)
⛵!世はSwi%/Dynamic!Framework時代!⛵
![Page 7: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/7.jpg)
私、iOS$7のサポートを切れるようになったらFrameworkでライブラリを導入するんだ。$!
![Page 8: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/8.jpg)
でもXcode&4/5の時代からのプロジェクトにどうやったらFrameworkを導入できるの?&!
![Page 9: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/9.jpg)
Frameworkの導入方法• !"CocoaPods((>=(0.36)
• ""Carthage
• #"CocoaSeeds(for(iOS(7
![Page 10: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/10.jpg)
1.#CocoaPods
• みんな大好きCocoaPods先生
• 0.36から-use_frameworks!-というオプションでFrameworkの導入に対応
• CocoaPods-0.36-4-Framework-and-Swi8-Support-4-CocoaPods-Blog
• 一番簡単です# Podfileuse_frameworks!pod "Alamofire", "~> 1.2.0"
![Page 11: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/11.jpg)
1.#CocoaPods
後はソース内で!import!するだけimport Alamofire
Alamofire.request(.GET, "http://httpbin.org/get")
![Page 12: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/12.jpg)
2.#Carthage
• CocoaPodsのブラックボックス感が好きじゃないという人に
• 依存性管理・ビルドはしてくれるけどプロジェクトへの組み込みは自分で設定する
• 名前の由来は“パッケージ(Package)”と発音が似てるから(英語の発音はカーセッジみたいな感じです)
• [Ques3on]6Why6name6Carthage?6<6Issue6#549
I6suggested6“Carthage,”6because6it’s6vaguely6like6“package”6with6some6consonants6swapped6out.
![Page 13: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/13.jpg)
2.#Carthage
• Cartfileで依存ライブラリを定義したら$ carthage updateでライブラリを取得、ビルド
• Carthage/Build/iOSにFrameworkができあがっている# Cartfilegithub "Alamofire/Alamofire" ~> 1.2.0
![Page 14: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/14.jpg)
2.#Carthage
• Xcodeのターゲット設定の“General”./>.“Linked.Frameworks.and.
Libraries”に各.frameworkをドラッグ&ドロップ
• Xcodeのターゲット設定の“Build.Phases”の+アイコンから“New.Run.
Script.Phase”を選択し、スクリプトの中身として以下をペースト
/usr/local/bin/carthage copy-frameworks
してから“Input.Files”に各Frameworkのパスを追加する
$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
![Page 15: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/15.jpg)
ここで注意点• “Framework+Search+Paths”+(FRAMEWORK_SEARCH_PATHS)
• Xcode+6では.frameworkをドラッグ&ドロップ時にパッケージのあるディレクトリのパスが追加されるが、Xcode+7+beta+3時点では追加されないようになっている(バグ?)ので、自分で
$(SRCROOT)/Carthage/Build/iOS
を追加する必要がある。
• Linker+Error+:+Library+not+found+D+Issue+#615+D+Carthage/Carthage
• Carthage+install+documentaMon+missing+step?+D+Issue+#347+D+Quick/Quick
![Page 16: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/16.jpg)
ここで注意点• “Runpath*Search*Paths”*(LD_RUNPATH_SEARCH_PATHS)
• Xcode*6以降で作成したプロジェクト、ターゲットの場合は設定済みだが、それ以前からのプロジェクトの場合は設定されていない(かもしれない)。その場合は
$(inherited) @executable_path/Frameworks
を追加する必要がある。
• Linker*Error*:*Library*not*found*@*Issue*#615*@*Carthage/Carthage
![Page 17: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/17.jpg)
ここで注意点• “Embed(Frameworks”(ビルドフェーズ
• “Build(Phases”に該当のフェーズがない場合(これもXcode(6以前からのプロジェクトの場合?)、+アイコンから“New(Copy(Files(Phase”を選択し、
• “Des@na@on”に“Frameworks”を選択
• リストに各Frameworkを追加して“Code(Sign(On(Copy”にチェックを入れる
必要がある。
• Linker(Error(:(Library(not(found(I(Issue(#615(I(Carthage/Carthage
• Library(not(loaded:(@rpath/Alamofire.framework/Alamofire(I(Issue(#616(I(Carthage/Carthage
![Page 18: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/18.jpg)
!!Dynamic!Frameworkの設定方法に詳しくなれましたね!!
![Page 19: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/19.jpg)
でもまだiOS$7のサポート切れないんだけど……$!
![Page 20: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/20.jpg)
そんなあなたに!!
![Page 21: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/21.jpg)
3.#CocoaSeeds)for)iOS)7
• devxoul/CocoaSeeds
Git$Submodule$Alterna1ve$for$Cocoa.$Inspired$by$CocoaPods.
• CocoaPodsみたいにプロジェクトへの組み込みを行うが、ソースファイルを追加してアプリと一緒にビルドする)=>)iOS)7でもSwi1のライブラリが使える)✨
• @usamik26)がさっそくPRしてます)"
• Adapt)for)mul?ple)files)op?on)by)usamiEk)F)Pull)Request)#13
• 他のFrameworkに依存して)import FooBar)しているライブラリだと困る。
![Page 22: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/22.jpg)
3.#CocoaSeeds)for)iOS)7
• $ [sudo] gem install cocoaseeds
• 以下のようにSeedfileを定義して# Seedfile
# seeds for all targetsgithub "Alamofire/Alamofire", "1.2.0", :files => "Source/*.{swift,h}"
# seeds for specific targettarget :MyAppTest do github "Quick/Quick", "v0.3.1", :files => "Quick/**.{swift,h}"end
• $ seed install
![Page 23: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/23.jpg)
!!快適なFrameworkライフをお過ごし下さい!"
![Page 24: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/24.jpg)
参考URL
• Run%Path*Dependent*Libraries
• Xcode*%*Library*not*loaded*エラー?ここを見直そう*%*Qiita
• mikeash.com:*Friday*Q&A*2009%11%06:*Linking*and*Install*Names
• @executable*path,*@load*path*and*@rpath*L*wincent.com
![Page 25: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/25.jpg)
Ques%ons❓
![Page 26: iOSでのFramework導入のおさらい #関モバ](https://reader031.vdocuments.site/reader031/viewer/2022013122/55cae9efbb61eb7a5f8b4758/html5/thumbnails/26.jpg)
ありがとうございました!