將Unity 3D遊戲提交到Mac應用商店
經過三個月的週末開發,我們的Unity 3D遊戲已經準備好發布並部署到App Store。然而,這個過程並不直觀。我花了一整夜來解決它。經過許多嘗試和錯誤,我決定在這裡記錄一些關鍵的步驟:
![./2016-05-29.png]
1. Unity生成設置
在Unity中,齁到”檔案” > “建立設置” > “平台: PC, Mac與Linux獨立” > “目標平台: Mac OS”。
點擊”玩家設置…“,並配置以下選項:
默認為全屏=真
默認是原生分辨率=真
抓取單一螢幕=假
顯示分辨率對話框=假
Mac應用商店驗證=真
2. Info.plist
在Finder中,右擊遊戲應用並選擇’顯示包內容’。在內容文件夾中,編輯Info.plist文件。確保:
- CFBundleGetInfoString是一個有效的字符串。
- CFBundleIdentifier和CFBundleSignature的值與bundle id(稍後解釋)匹配。
- CFBundleShortVersionString和CFBundleVersion的格式為x.x.x,例如1.0.0。
- 新增一個
<key>LSApplicationCategoryType</key>
,值為<string>public.app-category.games</string>
。
以下面的例子為例:
<?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>
<!-- ... your keys and values here ... -->
</dict>
</plist>
3. 授權資訊
在你的Build文件夾中,創建一個名為GAMENAME.entitlements
的文件,添加一個sandbox鍵,如下所示:
<?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>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
4. Apple開發者帳戶
假設你已經有一個付費的Apple開發者帳戶,訪問 Apple Developer Account。然後,轉到證書並選擇”OS X”的下拉列表。點擊”+”按鈕創建新的證書。你需要完成兩次這個過程以獲取”Mac應用分發”和”Mac安裝程序分發”證書。將它們保存到你的鑰匙鏈以供日後使用。
然後,轉到”識別碼”並選擇”應用ID”標籤。創建一個萬用應用ID,但要確保它與前一步驟中的bundle ID值匹配。例如,我的是unity.victorleungtw.*
5. iTunes Connect
登錄到 iTunes Connect,轉到 我的應用 > “+” > “新的Mac應用”,並填寫所需的欄位。確定 Bundle ID 與前一階段的配置相符。前綴欄位應為遊戲名稱,例如在我的情況下,它是ufo。
你也需要拍攝屏幕截圖,並將它們修剪到正確的大小。只允許以下的尺寸:
- 1280 x 800 像素
- 1440 x 900 像素
- 2560 x 1600 像素
- 2880 x 1800 像素
6. 應用加載器
下載並安裝最新的應用加載器,用來提交應用。完成以下步驟:
在終端機中填寫內容權限:
chmod -R a+xr "/path/to/GAMENAME.app"
用第三步中創建的授權信息文件簽署應用:
codesign -f -s '3rd Party Mac Developer Application: DEVELOPER NAME' --entitlements "GAMENAME.entitlements" "/AppPath/GAMENAME.app"
你可能會遇到以下的錯誤:
code object is not signed at all
這是因為子元件沒有簽署。你可以逐個簽署它們,包括libmono.0.dylib
和libMonoPosixHelper.dylib
,但個更簡單的方法是使用深度簽名命令,如下所示:
codesign -f -s '3rd Party Mac Developer Application: DEVELOPER NAME' --entitlements "GAMENAME.entitlements
" "/AppPath/GAMENAME.app" --deep
然後,構建.pkg
文件:
productbuild --component GAMENAME.app /Applications --sign "3rd Party Mac Developer Installer: DEVELOPER NAME" GAMENAME.pkg
從你的機器中刪除所有已存在的遊戲應用。然後你可以用下面的命令驗證原則:
sudo installer -store -pkg GAMENAME.pkg -target /
最後,打開應用加載器,選擇’提交你的應用’,並選擇GAMENAME.pkg
。如果一切正常,上傳應該會成功。否則,根據相應的錯誤來解決問題。這個過程需要一些時間。
7. 選擇構建
如果你收到了包含如下問題的郵件:
> **無效簽名** — 主應用包game在路徑GAMENAME.app有以下簽名錯誤:在架構i386中的Info.plist無效(plist或簽名已被修改)。
這可能是你的某個子元件沒有正確簽署。你可能需要參考蘋果的文件尋找進一步的指導。
否則,返回到iTunes Connect,選擇已上傳的構建,並將狀態從”準備審查”變更為”等待審查” > “審查” > “銷售準備就緒”。
我希望這個博客文章對你有所幫助,也希望可以為你節省一些時間!:)