2009-11-19 69 views
488

嘗試重新構建昨天剛剛工作的應用程序。有個消息稱個人資料已過期,所以我將其從iPod和iTunes中刪除。當我選擇一個新的配置文件(一個帶有*的標識符),我現在得到一個錯誤:Codesign錯誤:刪除過期配置文件後找不到配置配置文件

Code Sign Error: Provisioning Profile (long string) can't be found. 

我錯過了什麼?我查看了相關的問題,並沒有看到這種情況。

回答

848

有時候你的xcode項目文件會搞砸,特別是如果你有一箇舊的項目,並首先用舊版本的xcode/iphone sdk創建它。您需要做的是在文本編輯器中打開項目文件,從錯誤中搜索「長字符串」並手動刪除該行。實際上,您應該繼續並清除任何指向任何配置配置文件的行。然後在xcode中重新打開該項目,轉到設置並重新選擇新的配置文件。這清除了大部分時間的問題。指向供應曲線的線條看起來像這樣:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB"; 
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB"; 
+0

感謝您的回覆。我遇到了一個錯誤「文檔無法打開」,試圖用TextEdit打開.xcodeproj文件(剛剛退出並且Xcode未運行)。任何想法? – quantumpotato 2009-11-19 22:08:59

+209

.xcodeproj文件實際上是一個目錄,就像一個應用程序包一樣,如果您在查找程序中右鍵單擊它,則可以選擇顯示包內容,然後您會在裏面看到幾個文件(或者在終端中只需將其放入)。實際的項目文件是一個.pbxproj擴展名。一旦你用文本編輯器打開它,你正在尋找的線應與「PROVISIONING_PROFILE =或」 \t \t \t \t「‘PROVISIONING_PROFILE [SDK =的iPhoneOS *]’=」開頭。刪除所有這些,然後你應該很好。 – 2009-11-19 23:13:19

+0

Brad Smith 我試過用新配置文件存檔我的應​​用程序,而Xcode查找舊配置。我試過你說的和工作的 – 2011-05-18 21:54:36

129

這裏有一個簡單的解決方案,爲我工作,不要求項目文件的手動編輯:

在Xcode中,在在「Groups & Files」窗格中,展開「Targets」並雙擊應用的目標。這將打開目標的Info窗格。在「構建」部分中,檢查任何舊配置文件的「代碼簽名」部分,並替換爲正確的配置文件。

請注意,這與雙擊您的項目圖標並從中更改配置文件不同。相當驚人的:)

大利

+1

謝謝!我會嘗試下次發生這種情況:) – quantumpotato 2010-06-07 17:54:12

+6

並確保首先選擇正確的構建配置:) – Johnus 2010-11-16 04:30:51

+4

這確實應該是標記爲正確的答案。 – djibouti33 2011-06-29 17:40:26

3

在我的情況下,問題是由打開的窗口中解決 - >管理器,選擇我的設備,並在右側的「部署」面板下刪除舊的供應配置文件。舊的已經標有紅色的「x」符號,但iPhone仍在使用它。

除了這個配置文件,新的配置文件也出現了(使用相同的名稱),並且在簡單地重新啓動應用程序之後,我就可以順利運行了。

+0

+1,有時我一直無法安裝,因爲過期的配置文件 - 甚至沒有相同的標識符! - 在我的設備上。 – quantumpotato 2011-05-26 15:05:54

+0

這一個爲我工作,但我也必須重新啓動XCode才能使它工作。 – Matt 2011-07-29 10:32:52

6

剛剛在這個問題上看到了一個變化:我按照Brad Smith的注意事項進入了project.pbxproj文件,除了在這種情況下,所有PROVISIONING_PROFILE行看起來都是正確的,沒有出現「壞」配置文件XCode無法找到的字符串。

但是,修復方法是一樣的:刪除project.pbxproj中的所有PROVISIONING_PROFILE行,即使它們在理論上看起來「很好」,然後在XCode中重新打開該項目。

76
  1. 項目&目標屬性 - >「不代碼符號」 - >確定 - > cmd + S(或cmd + B);
  2. 項目&目標屬性 - > 「您的個人資料提供」 - >確定

  3. 一切再次工作!

+4

這是唯一適用於我的解決方案(使用XCode4)。選擇「不要輸入密碼」構建應用程序對我來說是一個強制步驟。 – Chazbot 2011-07-18 20:31:27

+0

這似乎是一個比200 + upvotes更好的解決方案,因爲Xcode可能會改變它將來編寫它的項目文件的方式。 – 2011-12-02 16:13:26

+1

這是在我的Xcode 4.2 – Selvin 2012-01-04 06:40:16

2

一個建議我會做,因爲還沒有人說過它:請在您開始修改它的內容之前請先備份整個.xcodeproj文件。擰緊項目文件並且沒有備份會導致非常不愉快的體驗。

能夠退出編輯可能是天賜之物。

+2

git checkout/reset ftw – quantumpotato 2011-08-18 14:30:53

+0

工作正確的溶劑是的,這就是爲什麼單片機的神使源控制。 – 2012-06-04 23:59:02

1

我剛剛在我的XCode4中遇到了這個問題。要修復它, 您需要將所有正確的設置放入Debug和Release配置中。

我試圖提交(通過歸檔)我的應用程序。所以我只是將Debug條款更改爲「不要代碼簽名」,並將發佈條款更改爲我的應用程序的appstore條款。

這解決了它,使我能夠正常存檔。希望有所幫助。

1

在Any iOS SDK中選擇空白的代碼簽名中的行並選擇正確的證書。

+0

我無法相信這工作!,謝謝。 – j2emanue 2013-02-13 14:40:11

3

剛剛花了一個小時左右的時間做這件事,並在Brad的建議和一些額外的改變,一切工作的幫助下。

我已經做了這個使用以下內容:10.7.3,Xcode 4.3.2,iOS 5.1順便說一句。

1)您myapp.xcodeproj和選擇數據包內容

2)開放project.pbxproj用文本編輯器(不建議使用文本編輯,因爲它可能搞砸了格式化)

3)向右滾動,點擊所有一路下來,直到你找到/* Begin XCBuildConfiguration section */

你有一個調試和發佈部分

5)在釋放部分看看

4)注意事項& "CODE_SIGN_IDENTITY[sdk=iphoneos*]"它應該是這個樣子:

CODE_SIGN_IDENTITY = "iPhone Distribution: MyCompany LLC"; 
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: MyCompany LLC"; 

6)看看PROVISIONING_PROFILE"PROVISIONING_PROFILE[sdk=iphoneos*]"他們應該是這樣的:

PROVISIONING_PROFILE = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; 
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; 

這應該與Xcode中的供應曲線。要查看它們是否匹配打開Xcode>窗口>管理器>設備>供應配置文件>右鍵單擊配置文件>在Finder中顯示> .mobileprovision的文件名是您的配置文件ID。

7)向下滾動project.pbxproj並查找第二個釋放部分實例。釋放部分的第二個實例應與評論說/* End XCBuildConfiguration section */

8)確保第二部分的第一部分,從而CODE_SIGN_IDENTITY, "CODE_SIGN_IDENTITY[sdk=iphoneos*],並且PROVISIONING_PROFILE都充滿在比賽結束。

4

爲了實現布拉德的完全在終端解決方案,使用這些命令

  1. cd [Xcode project parent]
  2. vi [Xcode project name].xcodeproj/project.pbxproj
  3. /[offending provisioning profile] [Enter]
  4. dd - 刪除整行
  5. 按n,直到不再發現
  6. Ctrl + x保存並關閉
+0

這很有幫助 – 2012-10-03 13:18:23

1

布拉德史密斯的解決方案爲我工作,但我也不得不刪除CODE_SIGN_IDENTITY字段,使其工作。

+0

這是通過在文本編輯器中修改xcode項目文件來手動完成的,而且我經常不得不這樣做,以便在進入破碎狀態時重新開始。瞭解這兩個可以刪除的東西往往非常有幫助。好點子。 – 2013-08-26 13:10:54

10

我同意布拉德的回答,您可以通過手動編輯目標/項目,刪除任何像這樣的行解決這個問題:

PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB"; 
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB"; 

然而,在Xcode 4.2和更高版本,有一個更更簡單的方式來訪問這個文本並選擇並刪除它。在左側的Project Navigator中,選擇您的項目(項目導航器的最上面一行)。現在只需選擇視圖>版本編輯器>顯示版本編輯器。這會將項目顯示爲文本,您可以在Xcode的編輯器窗格中搜索PROVISIONING並刪除麻煩的行。

+0

繼此之後,您不必關閉並打開項目。更好的方法:) – viral 2013-04-18 06:05:13

0

不幸的是,這種方法並沒有爲我工作。但是,這裏有一個修復工作適用於我(爲了得到這個工作,你需要在Subversion上有一個工作項目文件):

我沒有回滾到我的項目文件的工作版本。由於無法使用Xcode(Where is the 'Revert' option in Xcode 4's Source Control?)恢復 - 我使用Tortoise,Windows機器和本教程(http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-rollback.html)回滾到較舊的項目文件。

由於教程沒有爲我工作,我只是用烏龜將我的項目文件的工作版本保存到一個USB棒,將它移植到我的MAC。之後,我用舊的工作文件替換了新的破解項目文件,清理完畢,它像一個魅力一樣工作!

0

我遇到了問題,因爲我使用TestFlight上的一些新設備更新了我的AdHoc供應配置文件。假設發生這種情況是因爲xcode在項目或目標的代碼化構建設置中對您的配置文件有一箇舊的引用。我定我的方式是:

  1. 轉到這兩個目標的構建設置和項目建設的設置,在代碼簽名更改所有配置的配置文件到別的東西。
  2. 轉到組織器中的設備/供應配置文件刪除違規配置文件,然後單擊右下角的刷新按鈕。
  3. 返回到目標和項目構建設置,並將您的供應配置文件設置爲適當(有希望)新刷新的供應配置文件。
0

至少在Xcode 5,這是解決了這個問題對我來說事情:

在置備文件,請選擇有問題的供應配置文件,然後選擇在下拉菜單中選擇一個有效的供應曲線。

enter image description here

0

,你可以刪除設置文件的老參考。然後導入新的配置文件並選擇Xcode構建器。