21

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

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

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

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

4

9 に答える 9

18

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

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

重要:ファイルの変更を伴う他のすべての場合と同様に、変更しないでください。バンドルやXcodeプロジェクト全体をバックアップ.xcodeprojするか、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で再度開くと、新しいプロビジョニングプロファイルを使用して、アプリがデバイスに正常にビルドおよびインストールされます。

于 2011-03-13T18:33:58.917 に答える
15

これが私がXcode4でそれをした方法です。

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

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

于 2011-10-10T15:58:45.850 に答える
1
  1. dexcodeを閉じる
  2. texmate、youtproject.xcodeprojによる編集
  3. この行を見つける"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
  4. 消去
  5. エンタープライズ向けのxcodeビルドとアーカイブを再起動します
于 2013-05-08T18:20:24.563 に答える
1

上記のソリューションに追加するには、このようなものを支援するために素敵なxcodeprojgemを使用できます。OpenStepkey = 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

于 2013-05-17T19:40:05.067 に答える
1

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

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

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

Xcode 8.3.2の場合:

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

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

于 2017-07-08T19:38:53.080 に答える
0

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

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

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

于 2014-01-02T21:45:20.287 に答える
0

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

  1. xCodeを開く
  2. [製品]->[宛先]->[iOSデバイス]に移動します
  3. [製品]->[アーカイブ]に移動します
于 2015-12-16T18:16:08.147 に答える