2016年1月4日月曜日

cannonball-ios(bf10377a6714621d45377e21be79d8eb4e5128c5)のXcode7.0によるビルド方法

cannonballというiosアプリがある。
twitter社が作成したアプリで、簡単に言えば写真にセリフがつけられる、言わばポエムを作成できるアプリがある。
作成したポエムはtwitterへpostできる。
これはtwitter社が供給している開発者向け各種SDKのサンプルコード用のアプリとして配布している。
リリースされているアプリで、appストアからもダウンロードできる。

ソースはgithub上で公開されている。
https://github.com/twitterdev/cannonball-ios.git

ただgit cloneしても動作しない。
ビルドする為の手順が詳細には書かれていないので書きまとめてみた。
(手順に従って、通常では正しい方法をとるとソースが上書きされる様で動作しなかった。)

この方法はあくまで、cannonballを動作させる事を目的としている。
各種SDKを試す事は目的として書いていない。留意していただければと思う。
Fabricというアプリを使いはするが、主にinfo.plistの書き換えとコンシュマーキーを参照する為だけに使う。
(SDKのインストールに使うと既存コードにあるSDKを書き換えてしまっている様。)

なお、以下の環境での動作を確認した。
Xcode 7.0(7A220)
Simulator Version 9.0(SimulatorApp-620 CoreSimulator-179)
iPhone 5S/iOS 9.0(13A340) Fabric Version 2.1.2 (1098)

gitのコミットIDは
bf10377a6714621d45377e21be79d8eb4e5128c5
で動作を確認した。


事前準備
・Twitter Fabricにサインインする。
・Fabric appをインストールする。
・もちろんXcodeも必要。

1)ソースの取得
git cloneなりzipをダウンロードして展開する。
https://github.com/twitterdev/cannonball-ios.git

2)プロジェクトを開く 展開したプロジェクト内の
Cannonball.xcodeproj
をXcode上から開く。
Identtityの更新もしておく。

2)Fabricの起動とConsumerKeyとconsumerSecretの確認
事前準備でインストールしたアプリ、Fabric.appを起動してログインする。

ログインした後、プロジェクトを選択する。
右上にある、"Browse..."からMac内にあるプロジェクトを選択できる。

プロジェクトは当然、"Cannonball.xcodeproj"を選択する。
次にTwitterのアイコンの右側に表示されているInstallのボタンをクリックする。

ここで注意したいのは、twitterだけをインストールする。

※他のSDKをインストールしても動作するかも知れないが、gitで見る限りFabric上のインストールボタンを押すとプロジェクト内部の各種SDKを上書きしている。
よって整合性が取れないのではと推測している。

インストールをクリックした後に表示される、Terms Agreementはチェックボックスにチェックを入れて、Agreewクリック

3)RunScriptの追加
PROJECTのBuild PhasesにRunScriptを追加する。
2)でインストールをクリックした後、Fabric.appに表示された通りの内容を、XCode上のRunScriptのShell直下にある、1のテキストボックスの中に追加する。

RunScriptはGeneral下にある、+をクリックする事で追加される。
(Copyのボタンを押す事でクリップボードに内容がコピーされているので、⌘+Vでテキストボックスに貼り付ける)

Fabric.appの表示にある、KeyとSecretを控えておく。
./Fabric.framework/run以降の英数20文字と、その後1文字のスペースをあけた、英数64文字を書き控える。
(このKeyとSecretをAppDelegate.swiftに追加する。当然ユーザごとに違う値となるはず。)

4)ソースコードの修正
AppDelegate.swiftに2行を追加する
詳しくはFabricのIOS向けドキュメント、Integrate With Your Appの項目である、ここに書かれている。

assert(NSBundle.mainBundle().objectForInfoDictionaryKey("Fabric") != nil, welcome)
以下、
// Register Crashlytics, Twitter, Digits and MoPub with Fabric.
Fabric.with([Crashlytics.self, Twitter.self, Digits.self, MoPub.self])
の直前にでも2行を追加。
以下の様になる。


assert(NSBundle.mainBundle().objectForInfoDictionaryKey("Fabric") != nil, welcome) Twitter.sharedInstance().startWithConsumerKey("20桁の英数", consumerSecret: "64桁の英数文字") Fabric.with([Twitter.sharedInstance()]) // Register Crashlytics, Twitter, Digits and MoPub with Fabric. Fabric.with([Crashlytics.self, Twitter.self, Digits.self, MoPub.self])
コードを修正したら、⌘Sで保存。
一旦、XcodeのProductからCleanをする。
(クリーンするのは精神衛生上の念押し。)
クリーンした後buildする。

ここで一旦、info.plistを確認して、Fabricの項目が正しく反映されている事を確認する事をお勧めする。

APIkeyの項目、Stringの箇所に、AppDelegate.swiftに追記したKeyが表示されている。

あとはXcode上でRUNするだけ。
iphoneシュミレータが起動してcannonballが起動される。
(Fabricの表示はメールが届いていからの方が正常動作するようなので今は無視していい。)
cannonball起動後のサインインは一番下のSkipを選択してもiphoneのSettingsに登録したtwitterアカウントが適応される。


なお、正常起動したら、
notifier@fabric.io
というメールアドレスから、通知として以下の件名のメールが届いていた。
Cannonball (io.fabric.samples.cannonball on ios) was just successfully added
Fabricのアプリ上でもcannonballの各種情報が参照できる様だ。



参考情報
https://docs.fabric.io/ios/fabric/getting-started.html
https://dev.twitter.com/mopub/ios/ios9
既存iOSアプリをCrashlyticsに対応させる - Qiita

0 件のコメント: