carthageについて知りたいn個のこと
TRANSCRIPT
Carthageについて知りたいn個のこと@ikesyo
関西モバイルアプリ研究会!#5,!2015(08(26!Wed
#関モバ
@ikesyo
!ikesyo_nnid
いけしょー/池田翔京都でフリーランスのiOSエンジニア(時々Android)しています
フリュー㈱のモバイル開発のチームにジョイン中。
Reac%veCocoa/Carthageのコミッター(Collaborator)やってます2✨
HimotokiというJSONデコーダーを作ってます+!
• GitHub
• SlideShare
今日はCarthageについて話します(!
CarthageCocoaプラットフォーム用の分散型依存性管理ツール
名前の由来• “パッケージ(Package)”と発音が似てるから(英語の発音はカーセッジみたいな感じです),!
• [Ques1on],Why,name,Carthage?,:,Issue,#549
I,suggested,“Carthage,”,because,it’s,vaguely,like,“package”,with,some,consonants,swapped,out.
—"Rob"Rix"(@robrix)
Cartfile
# Require version 2.3.1 or latergithub "ReactiveCocoa/ReactiveCocoa" >= 2.3.1
# Require version 1.xgithub "Mantle/Mantle" ~> 1.0 # (1.0 or later, but less than 2.0)
# Require exactly version 0.4.1github "jspahrsummers/libextobjc" == 0.4.1
# Use the latest versiongithub "jspahrsummers/xcconfigs"
# Use the branchgithub "jspahrsummers/xcconfigs" "branch"
# Use a project from GitHub Enterprisegithub "https://enterprise.local/ghe/desktop/git-error-translations"
# Use a project from any arbitrary server, on the "development" branchgit "https://enterprise.local/desktop/git-error-translations2.git" "development"
# Use a local projectgit "file:///directory/to/project" "branch"
Cartfile
• !"次のバージョンからGitHub"EnterpriseのリポジトリもGitHub
同様に扱えるようになります"!
• 実装しました"✨"Add"support"for"GitHub"Enterprise"by"ikesyo"
5"Pull"Request"#657
github "https://enterprise.local/ghe/desktop/git-error-translations"
Cartfile.private
テストターゲット用の依存性などFramework自体のビルドに必要ないものはこちらに。github "Quick/Quick" ~> 0.3.1github "Quick/Nimble" "v1.0.0-rc.1"github "AliSoftware/OHHTTPStubs" ~> 4.2.0
Cartfile.resolved
Gemfile.lockやPodfile.lockと同様のもの。リポジトリにコミットしましょう。
github "robrix/Box" "1.2.2"github "Quick/Nimble" "v0.4.2"github "jdhealy/PrettyColors" "v2.0.0"github "Quick/Quick" "v0.3.1"github "thoughtbot/Runes" "v2.0.0"github "jspahrsummers/xcconfigs" "0.8.1"github "Carthage/ReactiveTask" "0.7-beta.3"github "antitypical/Result" "0.4.4"github "Carthage/Commandant" "0.6.1"github "ReactiveCocoa/ReactiveCocoa" "v3.0-RC.1"github "thoughtbot/Argo" "v1.0.4"
Commands
carthage updatecarthage bootstrapcarthage checkoutcarthage buildcarthage archivecarthage copy-frameworks
carthage(checkout
• --use-ssh:#チェックアウト時にHTTPSではなくSSHを使用する。
• --use-submodules:#依存プロジェクトをGitのサブモジュールとして追加する。#
• --no-use-binaries:#ビルド済みバイナリーのダウンロードをせず、必ずローカルでビルドさせる。
• --use-submodules#を指定してもこれを指定しないと、ビルド済みバイナリーが使われてサブモジュールが使われないので要注意。
• 次のバージョンで変わります:#h,ps://github.com/Carthage/Carthage/pull/
692
carthage(update/bootstrap
• --configuration:#DebugやReleaseの指定。
• --platform:#ios,#mac,#watchosなどプラットフォーム指定。今のところ1つだけ。
• --no-build:#Cartfile.resolvedの更新、チェックアウトはするがビルドはしない。
• carthage checkoutのオプション一式
carthage(build
• --configuration
• --platform
• --no-skip-current:#依存ライブラリに加えて、(Cartfileを持っている)自分自身のプロジェクトもビルドする。
carthage(archive
carthage build --no-skip-currentcarthage archive YourFrameworkName
とすることで!YourFrameworkName.framework.zip!が生成されるので、これをGitHub!Releaseに添付すればビルド済みバイナリーとして使ってくれるようになります。!!
carthage(copy,frameworks
• iOSで“Embedded+Binaries”に追加する代わりに使用するもの。App+Storeへのサブミット時の不具合を回避するために必須。
• 不具合とは:+.frameworkにシミュレーター用バイナリーが含まれていると申請できない。
• h<p://www.openradar.me/radar?id=6409498411401216
GitHubのアクセストークン• ビルド済みバイナリーのダウンロードの関係でGitHub(APIを使用している。
• その際に使用するアクセストークンを(GITHUB_ACCESS_TOKEN(環境変数で指定できる。
• GITHUB_ACCESS_TOKEN=XXXXXXXXXXXXX carthage update
•GITHUB_ACCESS_TOKEN="github.com=XXXXXXXXXXXXX,enterprise.local/ghe=YYYYYYYYY" carthage update
Universal*framework*target
• OS$X,$iOS,$watchOSのマルチプラットフォームを1つのターゲットでビルドできるターゲット設定。
• PRがマージされたので次のバージョンでビルドできるようになります。
• Support$universal$framework$targets.$by$neonichu$@$Pull$Request$#622
• こんなのが使えます
• hEps://github.com/mrackwitz/xcconfigs
• 豆知識:$この作者さんはCocoaPods$0.36でSwiO/Dynamic$Frameworkの対応した人です。
!!快適なCarthageライフをお過ごし下さい!"
Ques%ons❓
Thank&you❗"