Monthly Archives: 9月 2015

iOSアプリのアップデート申請手順(2015年9月版)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

※2014年9月版の記事はこちらを参照ください。
※初回申請はまずこちらを参照ください。
※開発準備、申請まわりの情報をお探しの方はiOSアプリの開発準備と申請の手順まとめを参照ください。

iOS9のリリースに伴い少々UIが変更になりました。一年前に大きく変わった申請フロー自体は基本的にそのまま引き継がれていますが、多少混乱しそうですので2015年9月版として手順を載せておきます。

ここでは既存アプリのアップデート申請(iOS9対応版)を例にiTunesConnectでの申請フローを書き留めておきます。また、これは2015/9/29現在の方法であり、予告なしに変わる可能性がありますので、変わっている部分は最新情報を提供している他の方の記事を御覧になるか、変更点を読み替えるなどして対応してください。

なお、情報の掲載にあたっては細心の注意を払っておりますが、不正確な記載を含む場合があります。記載が不正確であったことにより生じたいかなる損害に関しても、一切の責任を負わないものとします。

■前提条件

・2015/9/29現在の内容
・iOS8対応でリリース済み既存アプリのiOS9対応版のアップデート申請
・ローカライズあり(日本語、英語)
・Xcode Version 7.0 (7A220)
・Mac OSX Yosemite 10.10.5(14F27)

(1) iTunesConnect(iTC)にサインインする

(2) 「マイApp」アイコンを押下する

(3) アップデート申請対象のアプリを選択する


ここでは見やすいようにリスト形式に表示変更させています

(4) 新規バージョンのアプリ情報を設定する


当該アプリの詳細画面に遷移したら左側の「(+)バージョンまたはプラットフォーム」ボタンの(+)部分を押下します。


プラットフォームの選択ポップアップ画面が表示されますので、「iOS」を選択します。
 

新規バージョンのバージョン番号を入力し、「作成」ボタンを押下します。


新規バージョン用の入力欄が表示されるので、必要に応じて内容を追加、編集します。


スクロールした一番最後(画面最下部)にリリース設定の選択項目がありますので、「手動リリース」「自動リリース」「日時指定リリース」の中から選択してください。デフォルトだと「自動リリース」になります。諸々の情報を入力設定したら、右上の「保存」ボタンを押下します。

※レーティング設定を促されたら適切な設定を行ってください
※ローカライズする場合はそれぞれの言語ごとにアプリ情報の設定を行ってください

(5) Xcodeにてアーカイブのアップロードを行う

一旦、iTCはそのままにして、Xcodeから当該アプリのアーカイブとiTCへのアップロードを行います。Application Loader を用いてアップロードを行う場合は、この(5)のみ、Application Loader を使用してアーカイブ(ipaファイル)をiTunes Connectにアップロードするをご覧ください。


プロビジョニングプロファイルの設定ほか準備が整ったらアーカイブを実行します(Xcode側のサブミットまでの手順は基本的に変更ありません)。


アーカイブが終了後するとオーガナイザーが開きますので、右側の「Validate…」ボタンを押下します。なお、Crashlytics(Fabric)を導入している場合はアーカイブ終了後にメニューから以下のようなポップアップが表示されます。


テスターへ評価版を配布するかどうかの確認です。ここでは無視(Ignore)します。


アカウントを選択し、進めます。


確認ダイアログになりますので、「Validate」ボタンを押下します。

□Include app symbols for your application to receives symbolicated crash logs from apple
□include bitcode

クラッシュログを受け取るかどうか、ビットコードを含んでいるかどうかのチェックがありますので、適切なものを選択してください。


うまくいきました。次はアップロードです。


右側の「Upload to App Store…」ボタンを押下します。


先程と同じく、アカウントを選択し、次に進めます。


確認ダイアログになりますので、「Submit」ボタンを押下します。

□Include app symbols for your application to receives symbolicated crash logs from apple
□include bitcode

先程と同じく、クラッシュログを受け取るかどうか、ビットコードを含んでいるかどうかのチェックがありますので、適切なものを選択してください。


うまくいきました。これでiTCにアーカイブがアップロードされた状態になります(=まだ申請状態ではありません)。

※サーバの混み具合によっては多少時間がかかります

(6) バイナリ(アーカイブ)を選択する

iTCに戻ります。


画面を下部にスクロールすると真ん中辺りに「ビルド(+)」と表示されていますので、(+)を押下します。


先程アップロードしたバイナリ(アーカイブ)が表示されているはずですので、選択して「終了」ボタンを押下します。なお、Xcodeからバイナリ(アーカイブ)を複数アップロードした場合はここに列挙されますので、適切なバイナリ(アーカイブ)を選択してください。バイナリが選択できない状態(=「処理中」ステータス)が長く続く場合がありますが気長に待ちます(2015/09/29現在、30分ほどかかるようです)。なお、「ビルド(+)」の項目は自動的に更新されないようですので、「処理中」ステータスが続く間は、何度かiTCの再読込(リロード)を行ってください。

ビルドの提出には、 Xcode 5.1.1以降、または Application Loader 3.0 以降を使用してください。

から

App を送信する前にビルドを選択してください。
ビルドの提出には、 Xcode 5.1.1以降、または Application Loader 3.0 以降を使用してください。

に変わればバイナリは選択可能になっているはずです。


選択したバイナリが表示されていることを 確認したら、画面右上の「保存」ボタンを押下します(「保存ボタンの押下」=「iTCサーバでの情報保存」≠「申請」ですので、保存しただけでは申請になりません)。

(7) バイナリ(アーカイブ)を申請する


画面右上の「審査へ提出」ボタンを押下します。


審査提出前の最終確認の画面になりますので、適切な項目を選択します。なお、広告IDにて「はい」を選択すると詳細確認画面が開きますので、必要に応じて選択、チェックを行います。


広告IDで「はい」の場合、基本的には以下の通りに選択する必要があります(当然ながらそのとおりにアプリが組まれている必要があり、不正の場合はリジェクトされます)。広告IDで「いいえ」の場合は下記のチェックは不要です(=項目が表示されません)。

“App内で広告を出す” → チェックする
“このAppのインストールを前に出した広告の成果であるとする” → チェックしない
“このApp内で行われたアクションを前に提出した広告と関連付ける” → チェックしない

“iOSの「追跡型広告を制限」設定” → チェックする


すべて回答したら右上の「送信」ボタンを押下します(「送信ボタンの押下」=「申請」となります)。


当該アプリのアップデートバージョンが「審査待ち」になり、Appleから「Your app status is Waiting For Review」のメールが届けば申請完了です。

この記事を読んでもよくわからない方、ご自身でやるのがどうしても不安な方、経験豊富な株式会社プライムセオリーがアプリ申請代行もしくは申請サポートを承ります。お気軽にお問い合わせください。


Target ‘Pods’ of project ‘Pods’ was rejected as an implicit dependency for ‘libPods.a’ because its architectures ‘arm64’ didn’t contain all required architectures ‘armv7 arm64 armv7s’

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。


Target ‘Pods’ of project ‘Pods’ was rejected as an implicit dependency for ‘libPods.a’ because its architectures ‘arm64’ didn’t contain all required architectures ‘armv7 arm64 armv7s’

しばらく触っていなかったプロジェクトをXcode7でリビルドしたら上記のエラーになりました。

エラー文を読んでの通り、「armv7 arm64 armv7sでのビルドを想定しているのにPods側のプロジェクトはarm64でのビルドになっているためライブラリをリンクできない」という指摘のようです。ArchitecturesやValid Architecturesの設定は正しいのにこのエラーになる場合は、Build Active Architecture Onlyの値が悪さしている可能性があります。

■環境

・Mac OSX Yosemite 10.10.5(14F27)
・Xcode Version 7.0 (7A220)

■解決方法


Podsプロジェクトの設定画面を開き、TARGETではなくPROJECT側のBuild Active Architecture OnlyのDebug側をYESからNOに変更してリビルド。これでエラーは出なくなるはずです。


Undefined symbols for architecture arm64: ****** in Crashlytics(**********.o)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。


Crashlyticsのフレームワークをアップデートした際、上記のエラーになりました。Crashlyticsに必要なライブラリが参照できていないようですので、手動で設定します。

■環境

・Mac OSX Yosemite Version 10.10.5(14F27)
・Xcode Version 7.0 (7A220)

■解決方法

Link Binary With Librariesにて

libz.tbd
libc++.tbd

上記2つのライブラリを追加します。


/*****/*****/*****.h:*:*: ‘SenTestingKit/SenTestingKit.h’ file not found

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。


/*****/*****/*****.h:*:*: ‘SenTestingKit/SenTestingKit.h’ file not found

数年前に開発がストップしていたアプリを最新iOSに対応させるためXcode7betaで開いたところ、上記のメッセージが出ました。当該プロジェクトはXcode4時代のものでSenTestingKitを使っていました。(Xcode5からdeprecatedだったと思いますが、)Xcode6.xだと特に警告出なかったのですが、Xcode7betaだとエラーになりました。OCUnitもダメなようです。XCTestに乗り換えろということですね。Xcodeにコンバート機能がありますので、それを利用します。

■前提条件

・Mac OSX Yosemite 10.10.5(14F27)
・Xcode Version 7.0 beta 6 (7A192o)

■手順

Xcodeのメニュー[Edit]->[Convert]->[To XCTest…]でコンバートできます。その後は説明に従って進め、必要に応じてプロジェクトの設定を変更し、テストコードに修正を加えます。

※Xcode7の機能がわかるようなスクリーンショットは載せませんが、コンバート手順はXcode6と同様です。


Mac OSX でスクリーンショットを時間差で撮りたい

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

Mac OSXのスクリーンショットはショートカットを用いてデスクトップ全体や任意の画面のみ、影あり・なしなど多彩に撮ることができますが、ショートカットではキーボードやマウスを操作している瞬間のスクリーンショットを撮ることができません(あったらすいません、教えてください…)。

実現方法としては操作を録画するアプリを用いて場面を切り出す方法やタイマーが付いたスクリーンショット専用アプリなどがありますが、ここではOSにバンドルされているアプリ(グラブ.app)を用いて時間差でスクリーンショットを撮る方法を紹介します。Macに精通している方であればご存知かもしれませんが、意外と知られていないようです。

■前提条件

・Mac OSX Yosemite 10.10.5(14F27)

■手順


[アプリケーション]->[ユーティリティ]->グラブ.appを探しだして起動します。


ただ、これだと面倒ですので、Spotlight検索で引っ掛けたほうが早いです。


起動したら[取り込み]->[タイマー]を選択します。


[タイマーを使った取り込み]ダイアログが開いたら、[タイマーを開始]ボタンを押下します。

ボタン押下後10秒経つと表示しているデスクトップ全体のスクリーンショットが撮影されますので、10秒に何らかの操作がベストな状態になるよう調整・準備して待ち構えます。


撮影されたスクリーンショットは起動したら[ファイル]->[保存…]でファイルに吐き出すことができます。TIFF形式で保存されますので、必要であればプレビュー.appで開いてPNGやJEPGに書き出しましょう。


Chrome で developer.apple.com が 403 Forbidden.

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

プロビジョニングプロファイルを生成しようと Chrome からデベロッパーサイトに入ろうとしたら403に。他のデベロッパーアカウントでも同様。いままで Chrome で不穏な動作をすることはそんなにありませんでしたが、Apple的に「Safari以外動作保証しませんよ」は理解しています。Safariじゃないとサインインすらできなくなったのかと思い、試しに iTunes Connect にアクセスするとこちらは問題なし。念の為に Chrome を再起動したら回復しました。長い間 Chrome を立ち上げっぱなしだったので、Cookieか何かが悪さしたのでしょうか。

これですね→ https://discussions.apple.com/thread/7104709


Unknown class ****** in Interface Builder file.

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

Unknown class ****** in Interface Builder file.

開発中、突如上記のメッセージがコンソールに出力されるようになりました。ビルドでエラーになるわけでもなく、ランタイムで落ちるわけでもないのですが、このままではカスタムクラスが認識されないという根本的な問題があります。このメッセージはカスタムクラスがコンパイル対象から外れているなど、Xcodeに認識されていないのが原因です。対処方法はググると出てくる記事に任せるとして、レア?といいますかマヌケなケースがありましたので、書き留めておきます。


今回の場合は、Show the Identity inspectorタブのCustom Class欄のClassに無関係な文字列が入っていましたのでそれを削除(=何も入っていない状態に)したところ、上述のメッセージは出なくなりました。カスタムクラスは使用しないViewだったのでカスタムクラスの設定は不要なのですが、いつのまにかゴミを入れていたようです。当然見つからないはずですね。同じようなケースでゴミを消したのに改善されないという方は、Command + Shift + Kでオブジェクトファイルを一旦削除してからビルドしましょう。

正しい動作をしているのに、カスタムクラスを設定していないのに、上述のメッセージだ表示されてお困りの方、今一度Storyboardの設定を見なおしたほうがよいかもしれません。