[英]Xcode won't recognize my new provisioning profile
我的應用程序的開發配置文件已於幾周前過期,因此我訪問了配置門戶以獲得一個全新的配置。 獲得它后,我訪問了Xcode Organizer,從我的設備和Mac中刪除了過期的配置文件,然后導入了新的配置文件。 Xcode立即將配置文件安裝到我的設備上,我的應用程序再次在設備上運行。
問題是,雖然組織者能夠看到新的配置文件並正常安裝,但IDE在舊配置文件和新配置文件之間會混淆。 每次我嘗試構建應用程序時,它都會立即失敗。 錯誤控制台告訴我Xcode找不到舊配置文件,因為列出的GUID屬於舊配置文件。 那很奇怪; 我認為Xcode現在已經意識到了新的配置文件。
我嘗試從我的設備和Mac中刪除新配置文件,然后重新安裝配置文件。 不起作用,Xcode仍然試圖尋找舊的。 我也試過選擇一個不同的配置文件讓Xcode忘記舊的,然后選擇新的。 我甚至嘗試在其他選項中手動輸入新GUID的GUID。 然而,Xcode仍然堅持尋找舊的配置文件,現在它已經從我的Mac上消失了。
我如何說服Xcode我為我的應用程序生成了一個新的配置文件供它使用?
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中打開我的項目,現在我的應用程序使用新的配置文件成功構建並安裝在我的設備上。
這是我在Xcode 4中的表現:
我能夠通過在代碼簽名標識中將其更改為“不代碼簽名”來修復此錯誤。 構建,您會收到錯誤“產品類型需要代碼簽名......等等......”。 然后返回並選擇正確的配置文件。 建立和所有好。 這發生在我身上,因為我的證書已經過期而且我續簽了。 除了上述內容之外,我還必須從我的鑰匙串和組織者中刪除舊證書。
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
要添加到上面的解決方案 ,您可以使用可愛的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
我對這個問題的解決方案是:
/Users/<your.username>/Library/MobileDevice/Provisioning Profiles
Library/ /Users/<your.username>/Library/MobileDevice/Provisioning Profiles
在我的情況下,使用XCode 5,當我的開發人員證書過期時,我遇到了這個問題。 我手動下載了新證書和新配置文件。 我將證書添加到鑰匙串,並將配置文件添加到組織者中的設備。
但是,XCode一直在抱怨我無法簽署應用程序。 我認為在XCode 5首選項中,它仍然顯示舊的配置文件,盡管我在那里做了很多重新加載,但它沒有刷新到新的配置文件。
最后,我使用iPhone配置實用程序刪除舊的配置文件並添加新下載的配置文件。 代碼簽名按預期工作。
我認為雙擊下載的配置文件會將其放入xCode Organizer Archive,但這對我不起作用。 以下步驟終於為我工作了。
大多數答案對我不起作用,因為它們似乎適用於舊版本。
對於Xcode 8.3.2:
完成此操作后,我可以通過單擊Targets-> General-> Signing下的“Xcode Managed Profile”旁邊的“i”信息圖標告訴Xcode使用最新的配置文件,並確認“Created”日期反映了新的日期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.