2013-03-26 65 views
15

我的客戶有一個iOS應用程序,啓用了應用程序內購買,遊戲套件和推送通知,它目前在應用程序商店中。我想使用內部企業分發證書來退出應用程序,以便在內部進行測試,但仍能夠測試與原始配置文件綁定的服務。這可能嗎?辭職iOS配置文件

回答

29

我終於實現了這一點,這是一個組合: -

1)創建權利的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>application-identifier</key> 
    <string>GBA9L2EABG.com.your.bundle.id.MyApp</string> 
    <key>get-task-allow</key> 
    <false/> 
</dict> 

2)解壓縮IPA

unzip Application.ipa 

3)拆下​​舊的代碼簽名

rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true 

4)更換嵌入式移動的provisioning profile

cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision" 

5)辭職

/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/Application.app" 

6)重新包裝

zip -qr "Application.resigned.ipa" Payload 
+0

一個命令,如果你辭職.app文件可以這樣做:'xcrun -sdk的iPhoneOS PackageApplication -v 「建設/ YourProject-的iPhoneOS/youAppName.app」 -o「output_folder/yourAppName.ipa 「 - 簽名」yourCertificateName「 - 嵌入」your.mobileprovision「' – Xiao 2014-02-27 03:00:01

+0

」GBA9L2EABG.com.your.bundle.id.MyApp「 - 這是您創建的捆綁ID,還是原始的捆綁ID IPA? 如果您更改原始應用的捆綁ID,是否也推送通知? – Leonti 2014-11-14 14:34:08

+0

當我嘗試安裝應用程序獲取錯誤作爲appName的CFBundleExecutable,這是不可執行的。我嘗試了chmod + x命令來appName.app仍然是相同的錯誤。 – Raghav 2015-05-29 07:04:40

1

只是一點點增加科科卡爾的迴應,如果你運行與codesign_allocate問題,當你到了第5步(Resign),請嘗試導出一個shell變量CODESIGN_ALLOCATE,併爲其指定一個iPhone SDK中代碼分配的路徑。要做到這一點,請確保您有安裝(在Xcode首選項/更新)

例如Xcode的命令行工具,我得到的錯誤:

me$ /usr/bin/codesign -f -v -s "iPhone Distribution: Some Company, Inc" --resource-rules "Payload/MyApp.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/MyApp.app" 

輸出:

Payload/MyApp.app: replacing existing signature 
codesign_allocate: object: /Users/mimio/Downloads/Payload/MyApp.app/MyApp malformed object (unknown load command 33) 
Payload/MyApp.app: object file format unrecognized, invalid, or unsuitable 

爲了解決這個問題,我這樣設置變量:

me$ export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate 

然後再次運行我的命令:

me$ /usr/bin/codesign -f -v -s "iPhone Distribution: Some Company, Inc" --resource-rules "Payload/MyApp.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/MyApp.app" 

瞧!一切正常工作與新codign_allocate

4

要辭去一個應用程序比@Koko卡爾說的更容易一點,我們已經適應了浮動腳本,它可以在https://gist.github.com/Weptun/5406993找到。 使這個過程非常簡單:

sh floatsign.sh ~/Downloads/File.ipa "iPhone Distribution: CertificateName" -b new.bundle.id -p /Path/To/Profile/Appstore.mobileprovision App-resigned.ipa 
+0

警告: - 在Mac OS X> = 10.10中不推薦使用--resource-rules! temp/Payload/Application.app/ResourceRules.plist:無法讀取資源 發生錯誤,正在中止! – 2016-07-28 12:55:35

1

當搜索這是stackover流的第一個問題shownup。所以想要用最新的iResign mac應用程序進行更新,這使得使用GUI而非終端中的命令變得非常容易。

iReSign

iReSign允許的iDevice的應用程序包(的.ipa)文件進行簽名或與蘋果公司的數字證書進行分發辭職。它還可以從.xcarchive文件創建簽名的iDevice應用程序包(.ipa)文件。此工具針對企業用戶,企業部署時簽名應用程序的人員與開發應用程序的人員不同。

如何使用

iReSign讓你重新簽署任何未加密的ipa文件與您持有對應私鑰的任何證書。 iResign也可以從xcarchive文件創建一個簽名的ipa文件。

將未簽名的.ipa或.xcarchive文件拖動到頂部框中,或使用瀏覽按鈕。

從Keychain Access輸入您的完整證書名稱,例如底部框中的「iPhone Developer:Firstname Lastname(XXXXXXXXXX)」。

點擊ReSign!並等待。辭職的文件將保存在與原始文件相同的文件夾中。

來源:https://github.com/maciekish/iReSign

+2

對4個不同的問題你有同樣的答案。如果問題可以用相同的答案回答,那麼你應該標記它是重複的,而不是重複的答案。 – NathanOliver 2016-01-08 13:37:43

+0

完美重新簽署發送給AppStore的ipa。只需要找到正確的配置文件和證書(如果你有多個)。我將entitlement.plist留空,似乎創建了一個節奏,如果沒有找到。然後我使用iMazing安裝了我的辭職ipa。現在我可以仔細檢查一下,我提交的應用程序在到達商店和/或等待批准之前會按預期工作。 – 2016-04-11 15:06:01