web-dev-qa-db-ja.com

Xcodeは私の新しいプロビジョニングプロファイルを認識しません

私のアプリの開発プロビジョニングプロファイルは数週間前に期限切れになったので、プロビジョニングポータルにアクセスして新しいものを入手しました。入手後、Xcode Organizerにアクセスし、期限切れのプロファイルをデバイスとMacから削除してから、新しいプロファイルをインポートしました。 Xcodeはプロファイルをデバイスにすぐにインストールし、アプリはデバイス上で再度実行されます。

問題は、オーガナイザーが新しいプロファイルを表示して通常どおりにインストールできる一方で、IDEが古いプロファイルと新しいプロファイルの間で混乱することです。アプリをビルドしようとするたびに、すぐに失敗します。リストされているGUIDは古いプロファイルに属しているため、Xcodeは古いプロファイルを見つけることができません。これは奇妙です。Xcodeは認識していたと思います。今までに新しいプロファイルの。

デバイスとMacから新しいプロファイルを削除してから、プロファイルを再インストールしてみました。動作しません。Xcodeはまだ古いものを探しています。また、Xcodeに古いプロファイルを忘れさせるために別のプロファイルを選択してから、新しいプロファイルを選択してみました。 Otherの選択肢に新しいプロファイルのGUIDを手動で入力しようとしましたが、Xcodeはまだ古いプロファイルを探すことを主張しています。私のMacからなくなった。

アプリが使用するための新しいプロビジョニングプロファイルを生成したことをXcodeに納得させるにはどうすればよいですか?

21
BoltClock

tl; dr:プロジェクトファイルを手動で編集して、Xcodeに新しいプロファイルを通知する必要がありました。さて、なぜプロジェクトファイルを手動で更新しなければならなかったのかわかりません。おそらく、新しいプロファイルをXcodeにインポートするプロセス中に何か問題が発生したため、新しいプロファイルが入っていることに気づきませんでした。または、ファイルシステムが途中で停止し、Xcodeがそれ自体を更新できませんでした。しかたがない。

今のために 楽しい 技術的な部分:

重要:ファイルの変更を伴う他のすべての場合と同様に、変更しないでください:.xcodeprojバンドルおよび/またはXcodeプロジェクト全体をバックアップするか、作成してくださいXcodeプロジェクトが適切なバージョン管理に保たれていることを確認してください。何も頼らずに、混乱してXcodeにプロジェクトのデバイスへのビルドを停止させたくはありません。

アプリの.xcodeprojバンドルの内容を確認しました(現時点ではXcodeは実行されていません)。これらを表示するには、Finderでプロジェクトフォルダを開き、Controlキーを押しながら.xcodeprojファイルをクリックして、パッケージの内容を表示:を選択します。

 Breeze.xcodeproj/
Daniel.mode1v3
Daniel.pbxuser
project.pbxproj

次に、テキストエディタ(バイナリではなくテキスト)でproject.pbxprojを開き、ビルド構成情報を探しました。

/* Begin XCBuildConfiguration section */というラベルの付いたセクションがあります(エディターの検索機能を使用して見つけることができます)。これはエントリのリストであり、各エントリは、特定のビルド構成内の特定のプロファイルのコード署名構成を表します。

開発用のバイナリに署名するために使用するプロファイルに関する情報は次のとおりです。

1D6058940D05DD3E006BFB54 /* Debug */ = {
    isa = XCBuildConfiguration;
    buildSettings = {
        ALWAYS_SEARCH_USER_PATHS = NO;
        "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Daniel Tan (XXXXXXXXXX)";
        COPY_PHASE_STRIP = NO;
        GCC_DYNAMIC_NO_PIC = NO;
        GCC_OPTIMIZATION_LEVEL = 0;
        GCC_PRECOMPILE_PREFIX_HEADER = YES;
        GCC_PREFIX_HEADER = Breeze_Prefix.pch;
        GCC_VERSION = com.Apple.compilers.llvmgcc42;
        INFOPLIST_FILE = "Breeze-Info.plist";
        IPHONEOS_DEPLOYMENT_TARGET = 4.0;
        PRODUCT_NAME = "Breeze";
        "PROVISIONING_PROFILE[sdk=iphoneos*]" = "36F99F3E-805F-47A7-95D4-FF8324711CBE";
        SDKROOT = iphoneos;
    };
    name = Debug;
};

注目すべきはこの行です:

"PROVISIONING_PROFILE[sdk=iphoneos*]" = "36F99F3E-805F-47A7-95D4-FF8324711CBE";

これは、ビルドエラーによって報告されたGUIDです。古い期限切れのプロビジョニングプロファイルの識別子です。

私がしなければならなかったのは、それを新しいプロファイルのGUIDに置き換えることだけでした:

"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E6E6369E-FD58-4886-9C3A-72C9DAE36501";

プロジェクトをXcodeで再度開くと、新しいプロビジョニングプロファイルを使用して、アプリが正常にビルドされ、デバイスにインストールされます。

17
BoltClock

Xcode4でそれを行った方法は次のとおりです。

  1. [プロジェクト]> [ビルド設定]> [コード署名]から[コード署名しない]を選択します
  2. ビルドをクリーンアップする
  3. もう一度ビルドします-「これは署名が必要です」のようなエラーが表示されるはずです
  4. コード署名から新しいプロファイルを選択します
  5. 再構築
15
hackdev

コード署名IDで「コード署名しない」に変更することで、このエラーを修正することができました。ビルドすると、「製品タイプにはコード署名が必要です...何とか...」というエラーが表示されます。次に、戻って適切なプロファイルを選択します。ビルドしてすべて良い。これは、証明書の有効期限が切れて更新したために発生しました。上記に加えて、キーチェーンとオーガナイザーから古い証明書も削除する必要がありました。

8
Tige Phillips
  1. Xcodeを閉じる
  2. texmate、youtproject.xcodeprojによるエディス
  3. この行を見つける"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
  4. 消去
  5. エンタープライズ向けのxcodeビルドとアーカイブを再起動します
1
Axel Galan

この問題に対する私の解決策は次のとおりです。

  1. 新しいプロビジョニングプロファイルをダウンロードします
  2. プロビジョニングプロファイルをダブルクリックしてインストールします
  3. Macで次のディレクトリに移動します:/Users/<your.username>/Library/MobileDevice/Provisioning Profiles
  4. 不要になった古いプロビジョニングプロファイルを見つけます(ただし、Xcodeに表示され続けます)。これは、このステップに役立つ場合があります: https://github.com/chockenberry/Provisioning
  5. 消して
  6. Xcodeを完全に終了します
  7. Xcodeを再度開く
  8. これで、新しいプロビジョニングプロファイルを選択できるようになります。
1
Hodson

上記のソリューション に追加するには、素敵な xcodeproj gemを使用してこのようなことを支援できます。 OpenStepを変換することに注意してくださいkey = value;スタイルのplistからXMLへ。注:後でXcodeでプロジェクトファイルを変更すると、Xcodeによって元に戻されることがわかりました。どちらのスタイルのファイルも、Xcodeまたはコマンドラインから正常にビルドされます。使い方のサンプルは

project = Xcodeproj::Project.new('Foo.xcodeproj')
csi_key = 'CODE_SIGNING_IDEDNTITY'
project.targets.each do |target|
  target.build_configurations.each do |conf|
    conf.build_settings[csi_key] = 'iPhone Developer: Cool Dood (XYZ123)' unless conf.build_settings[csi_key] == nil
  end
end

これが私がそれをどのように使うかの要点です: https://Gist.github.com/82times/5594887

1

私の場合、XCode 5では、開発者証明書の有効期限が切れたときに、この問題が発生しました。新しい証明書と新しいプロビジョニングプロファイルを手動でダウンロードしました。キーチェーンに証明書を追加し、オーガナイザーのデバイスにプロビジョニングプロファイルを追加しました。

しかし、XCodeは私がアプリに署名できないと不平を言い続けました。 XCode 5の設定では、古いプロビジョニングプロファイルが表示されたままであり、そこで何度もリロードしたにもかかわらず、新しいプロビジョニングプロファイルに更新されなかったことがわかりました。

最終的に、iPhone構成ユーティリティを使用して、古いプロビジョニングプロファイルを削除し、新しくダウンロードしたプロビジョニングプロファイルを追加しました。コード署名が期待どおりに機能した後。

0
Rajan Ponnappan

古いバージョンのように見えるので、ほとんどの答えは私にはうまくいきませんでした。

Xcode 8.3.2の場合:

  1. Xcode->環境設定->アカウント
  2. 選択Apple ID
  3. チームをダブルクリックします
  4. 左下の[+]ドロップダウンをクリックして、[証明書を作成]をクリックします
  5. IOS開発を選択する
  6. [完了]をクリックします

これを行った後、[ターゲット]-> [一般]-> [署名]の下の[Xcode管理プロファイル]の横にある[i]情報アイコンをクリックし、[作成]日付が新しいプロファイルを反映していることを確認することで、Xcodeが最新のプロファイルを使用していることを確認できました。

0
lundhjem

ダウンロードしたプロビジョニングプロファイルをダブルクリックすると、xCode Organizer Archiveに配置されると思いましたが、それではうまくいきませんでした。次の手順は、最終的に私のために働いた。

  1. XCodeを開く
  2. [製品]-> [宛先]-> [iOSデバイス]に移動します
  3. 製品->アーカイブに移動します
0