約 2 分鐘閱讀

Read in English →

將Unity 3D遊戲提交到Mac應用商店

經過三個月的週末開發,我們的Unity 3D遊戲已經準備好發布並部署到App Store。然而,這個過程並不直觀。我花了一整夜來解決它。經過許多嘗試和錯誤,我決定在這裡記錄一些關鍵的步驟:

經過三個月的週末開發,我們的Unity 3D遊戲已經準備好發布並部署到App Store。然而,這個過程並不直觀。我花了一整夜來解決它。經過許多嘗試和錯誤,我決定在這裡記錄一些關鍵的步驟:

![./2016-05-29.png]

1. Unity生成設置

在Unity中,齁到”檔案” > “建立設置” > “平台: PC, Mac與Linux獨立” > “目標平台: Mac OS”。

點擊”玩家設置…”,並配置以下選項:

默認為全屏=真
默認是原生分辨率=真
抓取單一螢幕=假
顯示分辨率對話框=假
Mac應用商店驗證=真

2. Info.plist

在Finder中,右擊遊戲應用並選擇’顯示包內容’。在內容文件夾中,編輯Info.plist文件。確保:

  1. CFBundleGetInfoString是一個有效的字符串。
  2. CFBundleIdentifier和CFBundleSignature的值與bundle id(稍後解釋)匹配。
  3. CFBundleShortVersionString和CFBundleVersion的格式為x.x.x,例如1.0.0。
  4. 新增一個<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,選擇已上傳的構建,並將狀態從”準備審查”變更為”等待審查” > “審查” > “銷售準備就緒”。

我希望這個博客文章對你有所幫助,也希望可以為你節省一些時間!:)

繼續探索這個主題

  • 新興市場的企業管治

    對全球投資者與企業擁有人而言,企業管治早已不再只是合規或附屬議題,而是資本配置、風險管理與長期價值創造的核心。中國、巴西與南韓提供了三種截然不同、卻同樣具啟發性的企業管治發展路徑。這些路徑深受歷史、所有權結構與監管選擇所塑造,放在一起觀察,有助我們理解企業管治如何演進、其內在張力何在,以及投資者與控股家族可汲取的實務經驗。

  • 溝通如何塑造全球資產管理中的信任與治理

    企業治理很少是在戲劇化的董事會瞬間中被決定的。它往往是在更安靜、更持續的層面上被塑造——體現在董事收到的資訊品質、決策被呈現與討論的紀律,以及組織與其股東、監管機構、客戶和員工溝通的一致性之中。董事會有效性的「六個 C」——能力、投入、貢獻、質疑、協作與文化——並非抽象的理想,而是最清楚地反映在溝通之中,因為溝通揭示了董事會選擇透明化的內容、選擇加以管…

  • 什麼才是真正界定一位高效能董事的關鍵?

    企業治理的成敗,最終取決於圍繞董事會桌旁的那一群人。制度、守則與架構固然重要,但它們的效能,終究取決於董事所具備的判斷力、誠信與專業能力。在當今環境下,董事會同時被期望監督策略、風險、企業文化與信任,董事的遴選與行為,理應受到比單純檢視履歷與名聲更嚴謹的對待。

返回文章列表