この記事はPyCon JP Advent Calendar 2016 11日目の投稿です。
昨日の10日目の記事はまだ上がっていませんが、11日目です。
PyCon JP Advent Calendar 2016のテーマはPythonと私の想い出
とのことですが、最近めっきりPython書くタイミングがないので、完全にiOSネタです。
pyconjp-iosのリポジトリをcloneしてきても、ビルドまで辿り着けねーよ
というデッドボールを何件かもらったので、ここ見てねと言えるように書いておこうと思います。
READMEに書けよって意見もあるとは思いますが、使うツール等最低限は書いているつもりなので...
各操作をPythonで例えようかと思ってましたが、特殊概念の操作が多くて挫折しました。
ゴール
- pyconjp-iosのアプリを Free Provisioning Profile*1 で実機ビルドする
- App Storeにリリースされているものと同じように使うことができる (内部的にはSwiftバージョンが違うけど)
事前準備
- Xcode 8.1をインストール済みMacがある -> インストールはこちら
- Apple IDがある -> 作成はこちら
- iOS 9以上のiOS端末がある (シミュレーターでよければ、無くてよい) -> 購入はこちら
ターミナルでの操作
リポジトリのclone
リポジトリをcloneしてきます。
$git clone https://github.com/pyconjp/pyconjp-ios.git $cd pyconjp-ios
使用ライブラリのインストール
使用しているライブラリはすべて Carthage で管理しています。
まずはCarthageをインストールしましょう。おすすめはHomebrewです。
$brew install carthage
それ以外の方法はインストールdocumentを参照↓ github.com
Carthageのインストールできたら、ライブラリを入れます。
$carthage update --platform iOS
すると
*** Cloning realm-cocoa *** Cloning AlamofireImage *** Cloning Alamofire *** Checking out Alamofire at "4.2.0" *** Checking out AlamofireImage at "3.2.0" *** Downloading realm-cocoa.framework binary at "v2.1.1" *** xcodebuild output can be found in /var/folders/tr/5kb724wd7259fq9z_177hq600000gn/T/carthage-xcodebuild.g50ocd.log *** Building scheme "Alamofire iOS" in Alamofire.xcworkspace *** Building scheme "AlamofireImage iOS" in AlamofireImage.xcworkspace
とAlamofire, AlamofireImage, Realm Swift がインストールされました。
なんで update
なのかは、最初にCarthage導入した時点で、XcodeにEmbed済みだから。
--platform iOS
のオプションはなくてもいいですが、今回は使用しないmacOS等のframeworkもビルドする時間がかかってしまうので、付けておきましょう。
Xcodeでの操作
XcodeにApple IDを入れる
Xcode > Preferences... (⌘,)
で設定を開き、Accounts
のタブを選択します。- 左下の
+
からAdd Apple ID
を選択し、事前に作成したApple IDとパスワードを入力します。
PyConJP2016.xcodeprojの設定
設定する項目
- Identity/Bundle Identifier
- Signing/Team
設定画面への移動
pyconjp-ios/PyConJP2016.xcodeproj
をXcodeで開く (Xcode 8.1のみがインストールされていれば、タブルクリックで開くはず)View > Navigators > Show Project Navigator (⌘1)
で1番上のプロジェクト名をクリック- 上部の
General
タブを選択し、TARGETS内のPyConJP2016
へ
1段目 Identity/Bundle Identifier
すでに入力されている "jp.pycon.pyconjp" を書き換えます。
このBundle Identifierはアプリ毎にユニークである必要があります。
この証明書 (Provisioning Profile) 周りの説明をしていたら、1エントリ丸々かかるので、今回は割愛します。
気になった方はググるか、ボクに聞いてください。
Bundle Identifierには リバースドメイン.appName
が推奨されています。
例) com.yutailang0119.pyconjp
他と衝突しなければ問題ないですが、無難に従っておきましょう。
2段目 Signing/Team
TeamはNoneが選択されていますが、XcodeにApple IDが入っていれば、プルダウンで選択できると思います。Apple IDを選択するとプルダウンの下がクルクルして、
Provisioning Profile Xcode Managed Profile Signing Certificate iPhone Developer: apple.id@domain.com
になると思います。
いざビルド!!!
で端末を選びます。
Product > Run (⌘r)
でビルド!!!!!
(初回のビルドは時間がかかります。)
となっても、初回はアプリが起動できません。
なぜかというと、今回Xcodeが作成した Free Provisioning Profile が端末側で許可されていないから。
iOS端末での操作
Settings (アプリ) > General > Profiles
で自分のApple IDを選択し、 "apple.id@domain.com"を信頼
を押して、信頼してください。
再度Xcodeでの操作
(実際はiOS端末でアプリをタップでも開けるけど、) 再度ビルド Product > Run (⌘r)
すると、アプリが起動🎉
ね、とっても簡単でしょ?
正直全くiOSアプリ開発したことがない人からしたら、わかる訳ねーよですね。 自分でも文章化してみてビックリでした。 生半可な気持ちじゃ挫折すると思う。
ちなみに Free Provisioning Profile は1週間経つと、端末にインストールしたままの状態でも起動ができなくなります。
これでも "ビルドできんぞ!!!" や "他にも質問があるんだが!!!" という人は、気軽に @yutailang0119 まで
この記事を読んだ (Pythonistaな) 皆さんは実行環境を手に入れたので、ガンガンアップデートして、ガンガンPRを送ってくださいね!!!!!
以上、Pythonについて微塵も触れない、PyCon JP Advent Calendar 2016 11日目でした!!!*2