簡體   English   中英

Xcode無法識別我的新配置文件

[英]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中的表現:

  1. 從項目>構建設置>代碼簽名中選擇不代碼簽名
  2. 清理構建
  3. 再次構建它 - 應該顯示“這個東西需要簽名”這樣的錯誤
  4. 從代碼簽名中選擇新配置文件
  5. 重建

我能夠通過在代碼簽名標識中將其更改為“不代碼簽名”來修復此錯誤。 構建,您會收到錯誤“產品類型需要代碼簽名......等等......”。 然后返回並選擇正確的配置文件。 建立和所有好。 這發生在我身上,因為我的證書已經過期而且我續簽了。 除了上述內容之外,我還必須從我的鑰匙串和組織者中刪除舊證書。

  1. 關閉de xcode
  2. edith with texmate,youtproject.xcodeproj
  3. 找到這條"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
  4. 抹去
  5. 為企業重新啟動xcode構建和歸檔

要添加到上面解決方案 ,您可以使用可愛的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. 下載新的配置文件
  2. 雙擊配置文件以進行安裝
  3. 轉到mac上的以下目錄:/ /Users/<your.username>/Library/MobileDevice/Provisioning Profiles Library/ /Users/<your.username>/Library/MobileDevice/Provisioning Profiles
  4. 找到您不再需要的舊配置文件(但不斷顯示在Xcode中)。 這可能會對此步驟派上用場: https//github.com/chockenberry/Provisioning
  5. 刪除它
  6. 完全退出Xcode
  7. 重新打開Xcode
  8. 您現在應該可以選擇新的配置文件

在我的情況下,使用XCode 5,當我的開發人員證書過期時,我遇到了這個問題。 我手動下載了新證書和新配置文件。 我將證書添加到鑰匙串,並將配置文件添加到組織者中的設備。

但是,XCode一直在抱怨我無法簽署應用程序。 我認為在XCode 5首選項中,它仍然顯示舊的配置文件,盡管我在那里做了很多重新加載,但它沒有刷新到新的配置文件。

最后,我使用iPhone配置實用程序刪除舊的配置文件並添加新下載的配置文件。 代碼簽名按預期工作。

我認為雙擊下載的配置文件會將其放入xCode Organizer Archive,但這對我不起作用。 以下步驟終於為我工作了。

  1. 打開xCode
  2. 轉到產品 - >目的地 - > iOS設備
  3. 轉到產品 - >存檔

大多數答案對我不起作用,因為它們似乎適用於舊版本。

對於Xcode 8.3.2:

  1. Xcode->首選項>帳戶
  2. 選擇Apple ID
  3. 雙擊您的團隊
  4. 點擊左下方的“+”下拉菜單“創建證書”
  5. 選擇iOS開發
  6. 點擊“完成”

完成此操作后,我可以通過單擊Targets-> General-> Signing下的“Xcode Managed Profile”旁邊的“i”信息圖標告訴Xcode使用最新的配置文件,並確認“Created”日期反映了新的日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM