最近遇到一個需求,要把別人做好但憑證己過期的ipa檔案,用我們自己的apple帳號重新簽署發行,原本以為不可行,原來還真的可以,記錄一下參考來源及步驟
本篇參考這篇文章的作法:http://dev.mlsdigital.net/posts/how-to-resign-an-ios-app-from-external-developers/
建立APP ID
首先如果你沒有App ID你必需申請一個新的app ID,因為我們拿別人的ipa檔所以它的app ID是綁在對方的帳號裡,為了要重新簽署,所以我們要新增一個自己的app ID,在apple developer portal下點選左邊的Identitifiers->App IDs功能選項進行到App ID的管理頁面,點選右上的"+"來新增App ID
依指示輸入App ID的名稱
App ID Suffix選擇Explicit App ID
並輸入Bundle ID,Bundle ID不能跟原來的一模一樣哦,因為這個app ID必需是唯一的,名稱取一樣apple也不會給你過的
下方的App Services依你的需求來做選擇,如果需要推播就把Push Notification選項給勾起來,好了以後就可以點選下面的Continue來完成新增App ID
新增Provisioning Profiles
接下來用剛才新增的App ID來建立Provisioning Profile,點選portal左邊的Provisioning Profile選項進行到管理頁面,點選右上的"+"來新增Provisioning Porfile
設定好你要的Profile發布方式,然後按Continue
接下來選取剛才新增的App ID,然後按Continue
,完成新增Provisioning Profile
新增完成後就可以點選Download來把Provisioning Profile下載回來,點二下安裝到Xcode裡
建立Entitlements Plist
在你的mac本機裡,開啟你最愛的編輯器新增一個檔案,檔名為entitlements.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>PREFIX.yourappBundleID</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>PREFIX.yourappBundleID</string>
</array>
</dict>
</plist>
再回到Apple Developer portal裡的App IDs選項裡,找到你新增的那筆App ID,點開後可以看到PREFIX及BundleID的值,把這二個值取代掉entitlements.plist的PREFIX.yourappBundleID的值
# 執行iReSign app
到GitHub下載iReSign程式
iReSign
下載後直接點二下執行程式,依程式指示輸入你的ipa的路徑、Provisioning profile的路徑、entitlements.plist的路徑,如果Bundle ID有改的話,請把Change ID打勾並在左邊輸入新的Bundle ID(這裡要跟你上面申請新的Bundle ID一致),下拉選單選擇你要執行簽署的apple帳號,設定完成後按下ReSign!
如果沒有問題的話就可以在原本ipa的路徑下找到被Resign過新的ipa檔案,可以直接把ipa放你的新的裝置上測試看看囉~
沒有留言:
張貼留言