簡體   English   中英

Xcode 創建通用 Xcode 存檔而不是 iOS App 存檔?

[英]Xcode creating generic Xcode archive instead of iOS App Archive?

我正在嘗試將我的應用程序上傳到應用程序商店連接,但我無法驗證我的應用程序。 我還看到標識符和其他信息沒有顯示。 為什么是這樣? 這是個問題嗎? 如果我可以改變這個,怎么辦? [![在此處輸入圖片描述][1]][1]

我已經嘗試了在 [這里][2] 中找到的投票 2+ 的東西。

櫃面其相關:我正在使用一個項目與 cocoapods

XML 用於 info.plist:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ArchiveVersion</key>
    <integer>2</integer>
    <key>CreationDate</key>
    <date>2019-09-01T20:47:53Z</date>
    <key>Name</key>
    <string>FinalAppPrj</string>
    <key>SchemeName</key>
    <string>FinalAppPrj</string>
</dict>
</plist>

[![在此處輸入圖片描述][3]][3]

為什么是這樣?

這通常發生在 xCode 無法創建用於分發的有效存檔時,因此它只會在管理器的“其他項目”中創建為“通用 Xcode 存檔”。

這是個問題嗎?

是的,因為您將無法將其提交到 Apple Store Connect。 您不能打包通用檔案,也不能提交它們以供審核。

如果我可以改變這一點,如何改變?

首先,我們需要檢查項目設置:

  • Target > Manage Schemes...檢查您當前的目標是否是選中了Shared標志的有效項目

在此處輸入圖片說明

  • Target > Edit Scheme...檢查目標是否是唯一啟用存檔的目標。 還要檢查分析和存檔選項卡是否在構建配置中選擇了發布

在此處輸入圖片說明

  • Product > Analyze ( Shift + command + B ) 中,檢查是否沒有錯誤。 您可以在導航器面板上的最后一個圖標中訪問報告:

在此處輸入圖片說明

我檢查了此鏈接上的所有 2 個投票答案,它們主要涵蓋了所有可能的解決方案,但我想仔細檢查Apple 的支持頁面疑難解答

1) 您的存檔包含頭文件。

如果您使用的是靜態庫,請檢查是否存在 Headers 構建階段。 如果是這樣,請刪除此階段,將Copy Files build phase添加到您的庫中,並使用它導出您的頭文件。

在此處輸入圖片說明

2) 您的存檔包含靜態庫或框架。

在這種情況下,庫和框架需要將標志skip install設置為YES

在此處輸入圖片說明

然后嘗試再次存檔。

如果沒有一個解決方案有效,這里有一個解決方法,包括手動修改存檔.plist文件並添加缺少的信息。 它可以訪問:

  • 歸檔您的項目
  • 組織者將顯示通用 Xcode 存檔
  • 右鍵單擊,在查找器中顯示
  • 右鍵單擊,顯示包內容
  • 在 XML 編輯器中打開 Info.plist 文件

您的有效.plist文件將如下所示:

只需將PASTE_YOUR_BUNDLE_IDENTIFIER_HERE替換為您的包標識符,將PASTE_YOUR_CERTIFICATE_NAME_HERE為您的證書名稱,將PASTE_YOUR_CERTIFICATE_ID_HERE為您的證書 ID,將PASTE_YOUR_TEAM_ID_HERE為您的團隊 ID。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ApplicationProperties</key>
    <dict>
        <key>ApplicationPath</key>
        <string>Applications/FinalAppPrj.app</string>
        <key>CFBundleIdentifier</key>
        <string>PASTE_YOUR_BUNDLE_IDENTIFIER_HERE</string>
        <key>CFBundleShortVersionString</key>
        <string>1.0</string>
        <key>CFBundleVersion</key>
        <string>1</string>
        <key>SigningIdentity</key>
        <string>iPhone Distribution: PASTE_YOUR_CERTIFICATE_NAME_HERE (PASTE_YOUR_CERTIFICATE_ID_HERE)</string>
        <key>Team</key>
        <string>PASTE_YOUR_TEAM_ID_HERE</string>
    </dict>
    <key>ArchiveVersion</key>
    <integer>2</integer>
    <key>CreationDate</key>
    <date>2019-09-01T20:47:53Z</date>
    <key>Name</key>
    <string>FinalAppPrj</string>
    <key>SchemeName</key>
    <string>FinalAppPrj</string>
</dict>
</plist>

要檢查證書名稱和 ID,最簡單的方法是打開Keychain Access.app (Mac Finder > Applications > Utilities > Keychain Access.app ),找到證書(您可以通過文本“分發”過濾)並查看其詳細信息. 綠色標注的是名稱,紅色標注的是括號內的ID。

在此處輸入圖片說明

然后關閉並重新打開 xCode。 Window > Organizer ,如果存檔在 iOS Apps 下,那么您可以驗證和分發應用程序。

編輯

要添加 iOS 分發證書,請在 xCode 中單擊xCode > Preferences > Accounts >選擇團隊並單擊Manage Certificates... Plus button您應該會看到 iOS 發行版:

在此處輸入圖片說明

將此證書添加到項目中,檢查鑰匙串是否添加到那里並將其指向 .plist 文件。

當您使用簽名團隊時,您還需要將團隊添加到 .plist。 我用所需的條目更新了 .plist 文件。

我嘗試了@alxlives 所說的所有內容,但沒有幫助。 最后我解決了我的問題:

  • 重啟mac
  • 更新嵌入在我的項目 xxx.framework 文件中
  • 將 cocoapods 從 1.8.4 更新到 1.9.1 並重新安裝 pod

對我來說,這發生在 Xcode 12.5.1 中,項目中有多個帶有擴展的目標。 我不得不為其他帶有擴展名的目標取消勾選存檔。 然后再次開始存檔以直接分發給 Apple。 轉到Edit Scheme...並取消勾選。 但這在以前不是必需的。

在此處輸入圖片說明

這是一個小眾答案,但 Xcode 13.4.1 和 13.4.2 似乎存在問題,導致存檔成為通用的並且“驗證應用程序”按鈕被禁用。

在 Shopify Github 上發現了 13.4.1 的構建錯誤,我注意到使用 13.4.2 構建 Qt 應用程序的問題

升級到 Xcode 14.2 為我解決了這個問題。

暫無
暫無

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

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