2009-10-13 62 views
17

最近,我已將我的iPhone SDK操作系統從版本2.2.1升級到3.0版本。之後,在構建我的應用程序時,出現配置文件已過期的錯誤。所以我創建了一個新的配置文件。權利無效

然後我使用配置文件分配了我的應用程序。但是,在將我的應用程序同步到iPhone設備時,我在iTunes中遇到錯誤。錯誤消息是「應用程序'iGVA'未安裝在iPhone上,因爲權利無效。」

我檢查了代碼簽名權利包含正確的權利plist文件。

這怎麼解決?

回答

0

我也有這個問題。事實證明,我確定我編輯了一個配置來支持ad hoc,並確定我正在使用分發配置進行構建。但。我沒有編輯過發佈配置的屬性,但發佈的是(我以爲我正在編輯發行版)。

這可能不是這樣。但即使您確定,請仔細檢查您是否使用了正確的配置,並且正確調整了此配置。

7

我得到了這個以及在Ad-Hoc Apps and Entitlements找到答案。

您可能需要確保您的Entitlements.plist文件的路徑在您的項目設置中的「代碼簽名授權」下輸入。

30

邁克爾的上面的答案是現貨(或他指向的鏈接)。以下是我必須執行的步驟:

  • 有一個臨時證書,其中檢查了設備UDID。通過將該證書拖到XCode圖標上來安裝該證書。
  • 在該項目上,創建一個分配配置並將您的構建參數設置爲適當的設備|分配。現在,我們爲Device 3.0 |進行構建分配。
  • 我的項目沒有包含Entitlements.plist文件 - 我不得不通過從菜單File |添加文件| iPhone OS |權利,並調用新文件Entitlements.plist
  • 新的plist文件只有一行 - 設置該行的值取消選中。
  • 在項目構建配置中,在代碼簽名授權的行中,輸入Entitlements.plist文件名作爲值。
  • 在代碼簽名標識,選擇臨時身份證明(雖然我發現,你也可以用你的分發證書的身份)
  • 現在生成:)
  • 交付所產生的應用程序文件加上AD-特別證明給那些給你UDID的人。應該管用 :)。
+2

我按照所有這些步驟,但仍然得到同樣的錯誤。 – Sri 2010-11-15 13:39:25

+0

相同在這裏...得到確切的錯誤,一切似乎都存在和正確!!? – mootymoots 2010-11-15 16:17:16

2

我越來越瘋狂了。最後,我想我明白了。在項目設置中,我正確設置了正確的Adhoc配置中的授權和代碼簽名。然而,雖然在那裏一切似乎都沒問題,但當我選中「Project - > Edit Active Target」時,我的代碼簽名實體仍然停留在「iPhone Developer」上。

把它切換到正確的「iPhone Distribution」並重新編譯之後,Xcode讓我第一次允許代碼簽名。這一切都編譯完成並傳輸到我的手機上!

我希望有幫助。我認真地認爲這個問題是蘋果方面的一個缺陷或缺陷。由於他們沒有文檔的IDE,我失去了好幾個小時...

+0

同樣在這裏。但是'爲什麼 - 爲什麼'...??? – 2010-12-08 12:13:41

1

您還需要確保您有一個未到期的供應配置文件,這個配置文件在一段時間內阻礙了我(Ad Hoc配置文件似乎一年後過期)。錯誤消息是相同的,但它與沒有有效的Entitlements.plist文件無關。

0

我剛剛發現導致此問題的另一種情況。您必須確保包含正確的配置文件。我有一個同時擁有iPhone和iPod版本的應用程序,以及從同一個項目構建的iPad版本。我顯然使用iPad版本的應用程序發送了iPad ad hoc配置文件,但它不起作用。更糟的是,我使用Xcode在本地安裝了正確的配置文件,因此我的機器上的所有內容都能正常工作。

1

確保當您爲「設備」創建「構建和存檔」時,您的配置不是「調試」。它似乎會正確創建存檔,但是如果在執行「構建和存檔」時將其設置爲調試配置文件,則在安裝.ipa設備時將失敗。

7

測試人員需要一個Entitlements.plist文件來安裝ad-hoc構建。默認的iOS模板不包含一個。在Xcode 3.2.4創建一個這樣的:

  1. 從菜單中選擇「文件>新建文件...」
  2. 在iOS的模板,有一個代碼簽名部分。選擇名爲Entitlements的證書圖標。將文件命名爲「Entitlements.plist」
  3. 在源代碼樹中選擇Entitlements.plist。
  4. 選擇「視圖>屬性列表類型> iPhone應享權利的plist」
  5. 添加一個新的關鍵屬性列表(選擇最上面一行,按回車鍵)
  6. 該項目可能會被命名爲「可調試」。如果沒有,請從可用選項中選擇。這相當於「獲取任務允許」。

如果您還沒有一個,建立一個「臨時」建立配置文件:

  1. 源代碼樹中選擇目標。
  2. 從菜單中選擇「文件>獲取信息」
  3. 在檢查員中。選擇「Build」選項卡。
  4. 在「配置」,選擇「編輯配置...」
  5. 選擇‘發佈’配置,單擊‘複製’在屏幕的底部。
  6. 重命名新配置‘特設分配’

現在你已經創建了一個Entitlements.plist,你需要將它添加到你的構建設置。

  1. 在源代碼樹中選擇您的目標。
  2. 從菜單中選擇「文件>獲取信息」
  3. 在檢查員中。選擇「Build」選項卡。
  4. 確保配置選擇器設置爲「Ad-Hoc Distribution」
  5. 在「代碼簽名」組中,將「代碼簽名授權」的值更改爲「Entitlements.plist」 - XCode可能已將一個你的相對路徑。如果是這樣,請改變它。

注 - 你必須安裝自己的設備上的應用程序,如果你建立&運行與其它構建配置設置「代碼簽名權利」的錯誤。

最後,檢查Entitlements.plist是否已添加到您的目標。

  1. 在源代碼樹中選擇Entitlements.plist。
  2. 從菜單中選擇「文件>獲取信息」。
  3. 選擇「目標」選項卡。
  4. 確保選中您的目標旁邊的複選框。

您現在應該可以在沒有此錯誤的情況下分發您的臨時版本。

這其中大部分是從蘋果的Managing Application Entitlements Guide中收集到的,其餘的則是試用&錯誤。

1

此問題可能與權利plist本身沒有任何關係。我有兩個iPod Touch用於測試。當我去與他們同步應用程序時,一個工作得很好,但對於另一個我得到'權利是無效的'錯誤。事實證明,一個設備(工作的設備)上有移動配置文件,而另一個設備沒有。這是我的一個明顯的疏忽。然而,扔給我的是我從未明確地將配置文件添加到第一個設備。不知道它是如何進入該設備的(我還是這個新手 - 大聲笑) - 在過去,我總是將它拖放到安裝有該設備的組織者中,但這次我沒有這樣做。

因此,配置文件和xcode都使用正確的ID等完美設置,但應用程序仍然無法同步。很顯然,如果設備配置不當,您將會收到錯誤信息。如果錯誤在這種情況下更有用,會很好。

0

每當我在設備列表中添加一個新設備,然後通過選擇新設備並將它們拖到Xcode並準備構建來創建新配置文件時,我遇到了問題。

我用的建立設備安裝的那一刻我得到的錯誤

權利是無效的

我試圖用我能想到的所有辦法來解決它,但沒有正面來出。無論如何,我必須創建新的App-ID或重複創建配置文件的整個過程。然後我可以在設備上安裝該版本。

0

從文檔:

構建應用程序的Ad Hoc 分佈與建設 應用程序的App Store的分佈, 的兩個額外的步驟異常。 首先,您需要創建Ad Hoc 分發預配配置文件和 將您想分發的iOS設備的UDID添加到使用 iPhone Developer Program Provisioning Portal。其次,您需要創建 代碼簽名授權文件。有關如何創建 授權文件的 信息,請參閱iOS開發指南中的 的管理 應用程序授權部分。


管理應用程序應享權利

的iOS提供了訪問特殊 資源和能力,如 是否您的應用程序可以 調試,通過屬性稱爲 權利。要指定應用程序中的授權 信息,您需要將包含授權定義 (鍵/值對)的授權屬性列表文件 添加到您的項目中。 當您構建應用程序時,Xcode 將該文件複製到生成的 應用程序包中。

要的權利屬性列表 文件添加到您的項目:

在組&文件列表中,選擇 資源組。選擇文件>新建 文件。選擇iOS>代碼簽名> 權利模板。將文件命名爲 Entitlements.plist。 (你可以使用任何 名;只是確保它的代碼的價值相匹配 簽約享權利建立 設置,如本 節後面解釋)設置 屬性列表文件的類型iPhone 授權。在文本編輯器中選擇文件 ,選擇查看> 屬性列表類型> iPhone 權利plist。

將您的授權條目添加到 文件。對於 您需要定義每個權利屬性:

單擊添加兒童或添加同級 按鈕將選定的 行權。添加子按鈕有三個描述層次結構的線 ,添加 兄弟按鈕在 上有一個加號(+)。從出現的彈出菜單中選擇授權屬性 。如果 您需要添加的權利 未出現在菜單中,請選擇 查看>屬性列表類型>默認 用於文件類型。然後輸入 授權密鑰的名稱和類型。

輸入屬性的值。設置 代碼簽名授權版本 設置目標爲名稱 新增權利 屬性列表文件。


一旦你 創建了應享權利文件 並將其添加到您的代碼簽名 應享權利編設置,打開 應享權利文件,添加或編輯 獲得任務,允許鍵將其設置爲 false。

除了壓縮您的.app 包分發您特設建立 測試人員等建議 你之前也 分佈壓縮 供應配置文件,因爲某些電子郵件 客戶端和服務器可能會破壞 供應配置文件。

有關Ad Hoc 分配的信息,請閱讀 發佈iOS應用程序開發指南中的應用程序 部分。

1

這也發生在我身上,其他答案並沒有爲我解決。

經過半天的建設,安裝,清潔,點擊無濟於事 - 我終於從代碼簽名權利下的盒子中刪除Entitlements.plist,保存並重新輸入 - 瞧!它再次運作!我從來沒有碰過實際的權利文件,只是設置。

1

我在XCode 4中有這個。我嘗試清理,刪除和重新創建授權文件,但仍然沒有快樂。然後我將「可以調試」的值從YES更改爲NO ..並且工作正常。無論如何,它似乎現在正常工作,我希望這有助於!

2

爲了記錄的緣故,所有這些精彩的答案都沒有幫助我,我想我會分享我的權利故障。

所以,是的,我說的UDID,得到了配置,驗證了在手機上,在構建設置等

我的毛刺(感謝http://www.musicalgeometry.com/?p=1237)爲特設方案設定爲特設配置僅適用於運行設置

對於存檔設置它仍然指向舊的發佈配置。

(這些設置在編輯窗口方案左側的選項卡。)

Run app settings

Archive settings

如果我救一個人我的無奈 - 我做我的一點。

1

詳細的筆記我有同樣的問題,使用的Xcode 4.它變成了一個錯誤選擇身份引起在組織者(存檔部分)的「分享...」對話框中。 正確的選擇(對我來說)是:「不要重籤」。

0

化妝舒爾以選擇TARGETS簽名身份;)