Monthly Archives: 6月 2015

App installation failed / A valid provisioning profile for this executable was not found.

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

おなじみ?の有効なプロビジョニングプロファイルが見つからない場合に出るエラーです。デベロッパーの契約期間が満了していたり、プロビジョニングプロファイル自体の有効期限が切れていたり、Code Signing Identityが正しくない設定(よくあるのがDebugにDistributionのプロビジョニングプロファイルを設定しているケース)だったり、いくつか原因があるのですが、今回ははじめてのケースがあり、少しはまってしまったので自分のためにも書き留めておきます。

原因はiOSデバイスにプロビジョニングプロファイルがインストールされていないことでした。

以下、その確認と解決の流れです。

プロビジョニングプロファイルがデバイスにインストールされていない気がしたので、Xcodeメニューの[Window]->[Devices]からデバイス内のプロビジョニングプロファイルを確認してみます。

やはり必要なプロビジョニングプロファイルがインストールされていない状態でした。この画面からプロビジョニングプロファイルをインストールする方法もありますが、Xcodeにインポートした後プロビジョニングプロファイル自体を削除していたので、iPhone構成ユーティリティからインストールすることにします(iPhone構成ユーティリティがMacに入っていない方はデベロッパーサイトからプロビジョニングプロファイルをダウンロードして、Devicesからインストールしてください)。

iPhone構成ユーティリティを起動し、必要なプロビジョニングプロファイルの[インストール]ボタンを押下します(当然ながらデバイスにインストールされていない状態ですので[インストール]ボタンになっていますが、インストール済の場合は[取り除く]ボタンになっているはずです)。

再びDevicesで確認してみます。うまくインストールされていることが確認できました。

この状態でRunすれば、A valid provisioning profile for this executable was not found. にならず、うまくいくはずです。

ipaファイルをアーカイブしてiTunesなどからインストールする際にプロビジョニングプロファイルのインストール漏れなどはよくありますが、Xcodeにプロビジョニングプロファイルをインポート済かつ実機接続してRunしてもプロビジョニングプロファイルがうまく転送されないケースはじめてだと記憶しています。が、もしかしたらこの現象は何度か遭遇していて、ゴニョゴニョやっているうちに解決していたのかもしれません。


iOSデバイスからProvisioningProfile(プロビジョニングプロファイル)を削除する方法

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

有効期限切れのプロビジョニングプロファイルや作りなおして不要になったプロビジョニングプロファイルはゴミでしかないのでiOSデバイス上から削除したいものです。

削除する方法はいくつかあるのですが、削除後iTunesと同期すると復活したり、iPhone構成ユーティリティを使って削除しても消えなかったり、iPhone構成ユーティリティが落ちてまうなど決定打がありません。Library/の中のプロビジョニングプロファイルを直接削除する方法でもよいのですが、イレギュラーな方法ですし、あまり触りたくありません。

ここでは完全に削除かつ安全にできる方法を書き留めておきます。

■前提条件

・MacOS X Ver 10.10.3(14D136)
・Xcode Version 6.3.2 (6D2105)

■手順

(1) Xcodeを起動する

iOSデバイスをMacに接続し、Xcodeを起動します。起動後、Xcodeのメニューから[Window]->[Devices]を選択します。

左ペインの[DEVICES]から対象デバイスを選択します。

その上でcontrol+右クリックしてメニューを開き、[Show Provisioning Profiles…]を選択します。

ちなみに、iPhone構成ユーティリティで確認するとこのような状態になっています。

(2) プロビジョニングプロファイルを削除する

対象デバイスにインストールされているプロビジョニングプロファイルの一覧にて削除したいプロビジョニングプロファイルを選択した状態で[delete]キー押下もしくは[-]ボタンを押下して削除します。

削除したら[Done]ボタンを押下して終了です。


iPhone構成ユーティリティで再度確認すると無事消えているのがわかります。


Provisioning Profile(プロビジョニングプロファイル)を生成する方法(配布用ProvisioningProfile編)

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

※このページは配布用ProvisioningProfile(プロビジョニングプロファイル)の生成手順です。開発用ProvisioningProfileの生成はこちら(http://makotton.com/2015/06/16/1011)をご覧ください
※開発準備、申請まわりの情報をお探しの方はiOSアプリの開発準備と申請の手順まとめを参照ください。

「App ID」「証明書」「実行許可端末」の紐付けを行うのが、ProvisioningProfileです。開発者用ProvisioningProfileと配布用ProvisioningProfileの生成手順が一部異なりますので、別々の記事として記述しておきます。なお、ここに記載しているのは2015/06/16現在の内容であり、Appleによる予告なしに変更される可能性がありますので、最新の情報と照らしあわせて作業を行ってください。ブラウザはSafariを使用してください。Submitボタン押下で反応しなかったり、レスポンスが返ってこなくなるパターンや、各種登録がうまくいかないケースがあります。

■前提条件

・MacOS X Ver 10.10.3(14D136)
・Apple Developer Program(旧 iOS Developer Program) 登録済み
・配布用証明書生成済み
・AppID生成済み

■手順

(1) ProvisioningProfileを生成する

Apple Developer Program のサイトにログインし、右上の MemberCenter を押下します。

次に Certificates, Identifiers & Profiles を押下します。

iOS AppsのProvisioning Profiles を選択します。

右上の[+]ボタンを押下し、新規にProvisioningProfileを作成します。

ここでは配布用のProvisioningProfileを生成しますので、Distribution の App Store を選択し、[Continue]ボタンを押下します。

紐付けたいAppIDを選択し、 [Continue]ボタンを押下します。
# 例ではAppIDのNameが「SwipeWrite」というものを選択しています

次に、紐付けたい配布用証明書を選択し、 [Continue]ボタンを押下します。

プロファイルの名前を入力し、[Generate]ボタンを押下します。

ProvisioningProfileが生成されたら[Download]ボタンを押下してProvisioningProfileをダウンロードし、その後[Done]ボタンを押下します。

(2) ProvisioningProfileをインストールする

ダウンロードしたProvisioningProfile(xxx.mobileprovision)をダブルクリックしてインストールします。

その後は、Xcodeのプロジェクトの設定画面にて証明書とProvisioningProfileの組み合わせが正しく設定できるようになっていればOKです。


<補足>
ダウンロードしたProvisioningProfileをインストールする際、iPhone構成ユーティリティがインストールされているMacの場合はiPhone構成ユーティリティが起動し、

このような確認画面が出ますので、[ライブラリに追加]ボタンを押下します。

うまく追加されたのがわかります。


 


ProvisioningProfile(プロビジョニングプロファイル)を生成する方法(開発用ProvisioningProfile編)

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

※このページは開発用ProvisioningProfile(プロビジョニングプロファイル)の生成手順です。配布用ProvisioningProfileの生成はこちら(http://makotton.com/2015/06/16/1020)をご覧ください
※開発準備、申請まわりの情報をお探しの方はiOSアプリの開発準備と申請の手順まとめを参照ください。

「App ID」「証明書」「実行許可端末」の紐付けを行うのが、ProvisioningProfileです。開発者用ProvisioningProfileと配布用ProvisioningProfileの生成手順が一部異なりますので、別々の記事として記述しておきます。なお、ここに記載しているのは2015/06/16現在の内容であり、Appleによる予告なしに変更される可能性がありますので、最新の情報と照らしあわせて作業を行ってください。ブラウザはSafariを使用してください。Submitボタン押下で反応しなかったり、レスポンスが返ってこなくなるパターンや、各種登録がうまくいかないケースがあります。

■前提条件

・MacOS X Ver 10.10.3(14D136)
・Apple Developer Program(旧 iOS Developer Program) 登録済み
・開発用証明書生成済み
・AppID生成済み
・実機(デバイス)のUDIDを登録済み

■手順

(1) ProvisioningProfileを生成する

Apple Developer Program のサイトにログインし、右上の MemberCenter を押下します。

次に Certificates, Identifiers & Profiles を押下します。

iOS AppsのProvisioning Profiles を選択します。

右上の[+]ボタンを押下し、新規にProvisioningProfileを作成します。

ここでは開発用のProvisioningProfileを生成しますので、Development の iOS App Development を選択し、[Continue]ボタンを押下します。

紐付けたいAppIDを選択し、 [Continue]ボタンを押下します。
# 例ではAppIDのNameが「dev」というものを選択しています

次に、紐付けたい開発用証明書を選択し、 [Continue]ボタンを押下します。

アプリの転送/実行を許可する端末を選択し、 [Continue]ボタンを押下します。

プロファイルの名前を入力し、[Generate]ボタンを押下します。

ProvisioningProfileが生成されたら[Download]ボタンを押下してProvisioningProfileをダウンロードし、その後[Done]ボタンを押下します。

(2) ProvisioningProfileをインストールする

ダウンロードしたProvisioningProfile(develop.mobileprovision)をダブルクリックしてインストールします。

その後は、Xcodeのプロジェクトの設定画面にて証明書とProvisioningProfileの組み合わせが正しく設定できるようになっていればOKです。


<補足>
ダウンロードしたProvisioningProfileをインストールする際、iPhone構成ユーティリティがインストールされているMacの場合はiPhone構成ユーティリティが起動し、

このような確認画面が出ますので、[ライブラリに追加]ボタンを押下します。

うまく追加されたのがわかります。


 


Certificate(証明書)を生成する方法(配布用証明書編)

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

※このページは配布用証明書の生成手順です。開発用証明書の生成はこちら(http://makotton.com/2015/06/16/953)をご覧ください
※開発準備、申請まわりの情報をお探しの方はiOSアプリの開発準備と申請の手順まとめを参照ください。

基本的には証明書の更新手順(http://makotton.com/2014/10/24/607)と同じですが、Apple Developer Programへの統合により一部サイトのメニューが変更になったのと、開発者用と配布用の手順が一部異なりますので、あらためて新しい記事として記述しておきます。なお、ここに記載しているのは2015/06/16現在の内容であり、Appleによる予告なしに変更される可能性がありますので、最新の情報と照らしあわせて作業を行ってください。ブラウザはSafariを使用してください。Submitボタン押下で反応しなかったり、レスポンスが返ってこなくなるパターンや、各種登録がうまくいかないケースがあります。

■前提条件

・MacOS X Ver 10.10.3(14D136)
・KeychainAccess Ver 9.0 (55161)
・Apple Developer Program(旧 iOS Developer Program) 登録済み
・配布用証明書の生成

■手順

(1) 証明書要求ファイル(CertificateSigningRequest.certSigningRequest / CSR)を生成する


開発用Macにてキーチェーンアクセスを起動し、メニュー[キーチェーンアクセス]->[証明書アシスタント]->[認証局に証明書を要求…]を選択します。

証明書情報画面にて以下のとおり入力/選択します。

・ユーザのメールアドレス: 開発者登録を行っているメールアドレスを選択もしくは入力
・通称: 空白で構いません(自分の名前(アカウント名)が入っていると思いますが、そのままでもOKです)
・CAのメールアドレス: 空白で構いません
・要求の処理: ラジオボタン[ディスクに保存]を選択し、チェックボックス[鍵ペア情報を指定]にチェック

この状態で[続ける]ボタンを押下します。

次に鍵ペア情報画面にて以下のとおり選択します。

・鍵のサイズ: 2048ビット
・アルゴリズム: RSA

この状態で[続ける]ボタンを押下します。

「保存」ボタンを押下します。保存場所は任意で構いません。

証明書要求ファイルが生成されましたので、[完了]ボタンを押下します。

(2) 証明書を生成する

Apple Developer Program のサイトにログインし、右上の MemberCenter を押下します。

次に Certificates, Identifiers & Profiles を押下します。

iOS AppsのCertificates を選択します。

右上の[+]ボタンを押下し、新規に証明書を作成します。

ここでは配布用の証明書を生成しますので、Production の App Store and Ad Hoc を選択し、[Continue]ボタンを押下します。

About Creating a Certificate Signing Request 画面に遷移したら[Continue]ボタンを押下します。

[Choose File…]ボタンを押下します。

先ほど生成した証明書要求ファイル(CSR)を選択し、[選択]ボタンを押下します。

[Generate]ボタンを押下してアップロードします。

証明書が生成されたら[Download]ボタンを押下して証明書をダウンロードし、その後[Done]ボタンを押下します。

正しく生成されました。

(3) 証明書をキーチェーンアクセスに登録する

ダウンロードした証明書(ios_distribution.cer)をダブルクリックし、キーチェーンアクセスに登録します。

これでOKです。


Certificate(証明書)を生成する方法(開発用証明書編)

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

※このページは開発用証明書の生成手順です。配布用証明書の生成はこちら(http://makotton.com/2015/06/16/977)をご覧ください
※開発準備、申請まわりの情報をお探しの方はiOSアプリの開発準備と申請の手順まとめを参照ください。

基本的には証明書の更新手順(http://makotton.com/2014/10/24/607)と同じですが、Apple Developer Programへの統合により一部サイトのメニューが変更になったのと、開発者用と配布用の手順が一部異なりますので、あらためて新しい記事として記述しておきます。なお、ここに記載しているのは2015/06/16現在の内容であり、Appleによる予告なしに変更される可能性がありますので、最新の情報と照らしあわせて作業を行ってください。ブラウザはSafariを使用してください。Submitボタン押下で反応しなかったり、レスポンスが返ってこなくなるパターンや、各種登録がうまくいかないケースがあります。

■前提条件

・MacOS X Ver 10.10.3(14D136)
・KeychainAccess Ver 9.0 (55161)
・Apple Developer Program(旧 iOS Developer Program) 登録済み
・開発用証明書の生成

■手順

(1) 証明書要求ファイル(CertificateSigningRequest.certSigningRequest / CSR)を生成する

開発用Macにてキーチェーンアクセスを起動し、メニュー[キーチェーンアクセス]->[証明書アシスタント]->[認証局に証明書を要求…]を選択します。

証明書情報画面にて以下のとおり入力/選択します。

・ユーザのメールアドレス: 開発者登録を行っているメールアドレスを選択もしくは入力
・通称: 空白で構いません(自分の名前(アカウント名)が入っていると思いますが、そのままでもOKです)
・CAのメールアドレス: 空白で構いません
・要求の処理: ラジオボタン[ディスクに保存]を選択し、チェックボックス[鍵ペア情報を指定]にチェック

この状態で[続ける]ボタンを押下します。

次に鍵ペア情報画面にて以下のとおり選択します。

・鍵のサイズ: 2048ビット
・アルゴリズム: RSA

この状態で[続ける]ボタンを押下します。

「保存」ボタンを押下します。保存場所は任意で構いません。

証明書要求ファイルが生成されましたので、[完了]ボタンを押下します。

(2) 証明書を生成する

Apple Developer Program のサイトにログインし、右上の MemberCenter を押下します。

次に Certificates, Identifiers & Profiles を押下します。

iOS AppsのCertificates を選択します。

右上の[+]ボタンを押下し、新規に証明書を作成します。

ここでは開発用の証明書を生成しますので、Developmentの iOS App Developmentを 選択し、[Continue]ボタンを押下します。

About Creating a Certificate Signing Request 画面に遷移したら[Continue]ボタンを押下します。

[Choose File…]ボタンを押下します。

先ほど生成した証明書要求ファイル(CSR)を選択し、[選択]ボタンを押下します。

[Generate]ボタンを押下してアップロードします。

証明書が生成されたら[Download]ボタンを押下して証明書をダウンロードし、その後[Done]ボタンを押下します。

正しく生成されました。

(3) 証明書をキーチェーンアクセスに登録する

ダウンロードした証明書(ios_development.cer)をダブルクリックし、キーチェーンアクセスに登録します。

これでOKです。


App installation failed / The application could not be verified. のメッセージが出て実機に転送できない場合の対処

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

突然、上記のメッセージが表示され、Xcodeで実機テストができなくなりました。当該アプリがiOSデバイスにインストール済の場合に出るようです。iOSデバイスから当該アプリを削除し、再度XcodeでRunするとうまく転送できるようになりました。以前はこんなことなかったような…


Appleの開発者ライセンスが統合されたあとにはじめてデベロッパーサイトにログインする場合

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

新しいApple Developer ProgramとしてAppleの開発者ライセンスが統合されました。iOSあるいはMacOSXの開発者ラインセンスのどちらか一方のみ保有していた人も、追加料金を支払わずにそれぞれのプラットフォームで開発を行うことができるようになりました。統合にあたってライセンスの利用許諾が変更になりましたので、統合後にデベロッパーサイトにログインした際に新に同意を求められます。記念?としてスクリーンショットを残しましたので、それを記述しておきます。

■前提条件

・iOS Developer Programのみライセンス契約中の状態からApple Developer Programへの統合

■手順
1. デベロッパーサイトにログイン

いつも通りログインします。

 

2. Apple Developer許諾への同意


チェックボックスにチェックを入れた状態で[Submit]ボタンを押下します。

 

3. 開発者ライセンス許諾への同意

MemberCenter画面に遷移すると、ライセンス利用許諾内容がアップデートされている旨が通知されますので、[Review Agreement >]を押下します。

 


チェックボックスにチェックを入れた状態で[I Agree]ボタンを押下します。

 


MemberCenter画面に遷移しますので、[Your Account]もしくは[Programs & Add-ons]タブを選択し、Membership欄を確認します。

 


Apple Developer ProgramになっていればOKです。
# この例では[Your Account]タブを選択しています

 


iOSベータ版をインストールする方法(新しいApple Developer Program対応版)

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

■条件
・MacOS X Yosemite 10.10.3(14D136)
・iTunes 12.1.2.27
・iPhone4s/iOS8.1.2からiOS9ベータへ

■手順
Appleの開発者ライセンスが統合され、新しいApple Developer Programとして生まれ変わりました。そのタイミングで開発者サイトも一部リニューアルされたようです。iOSベータ版をダウンロードする画面も変更になりましたので備忘録として記載しておきます。なお、ここではiPhone4sに入っていたiOS8.1.2をiOS9ベータ版にアップデートする方法を紹介しています。また、ここに記載しているのは2015/06/10現在のものです。画面の仕様は予告なく変更される可能性がありますのでご注意ください。

1. iOSベータ版をダウンロードする


デベロッパーサイトにログインしてMemberCenterを開いたら、左上の[SDKs/Download the SDKs and the latest beta software.]を押下します。

 


Resourcesページに遷移したらPlatforms and Toolsの[iOS]を押下します。

 


次の画面に遷移したら、右上の[Download]ボタンを押下します。

 


Download画面が開きます。今回はiOS9ベータをiPhone4sにインストールしたいので、iOS 9 betaのiPhone項目のプルダウンから[iPhone 4s]を選択します。

 


対象デバイスを選択すると自動的にダウンロードが開始されます。

 

2. iOSベータ版をインストールする


iTunesを起動してiPhone4sを接続し、[Option]キーを押下したまま[アップデート]ボタンを押下します。

 


先ほどダウンロードしたiOS9ベータ版のファイルを選択して、[開く]ボタンを押下します。

 


確認画面が出ますので、[アップデート]ボタンを押下します。

 



アップデートが始まります。


<補足>

アップデートの最終段階で上記画面が出ることがあります。この場合、iPhone側でロックを解除して応答してください。


 


無事アップデートが終了しました。バージョンも書き換わっています。

これでOKです。


特定のディレクトリをバックアップ対象から外す方法

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

当該ディレクトリをバックアップ対象から外すには、バックアップ対象外属性を付与します。

- (BOOL)addExcludedFromBackupToItemAtPath:(NSString*)filePathString
{
    NSError *error = nil;
    BOOL result = [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
    if (!result) {
        // error
    }
    return result;
}

特にエラー処理はしていませんが、単純に書くとこのような感じです。

iCloud絡みの「2.23 – Apps must follow the iOS Data Storage Guidelines or they will be rejected」対策の一つでもありますね。

詳細は本家のこちらをどうぞ。