2011年7月5日 星期二

Unity and iOS SDK 4.3

許多Unity使用者要將製作好的iOS 4.3應用程式,發佈到AppStore時卻發生了一些問題。在當時,這是一個非常複雜的問題,因為全部的問題都是發生在,軟體送交給Apple的AppStore後端處理上。這裡只有幾種無效的方法來進行追蹤。我們也寄信給全部有註冊的Unity iOS開發者,告知該如何將他們的應用程式發佈至AppStore上。


信件內容:

親愛的Unity iOS開發者,

不幸的,許多(或許是全部)Unity iOS以iOS SDK4.3為基礎建立的應用程式,在開發者的裝置上都可以成功執行,但是AppStore的審查過程卻都失敗了。我們已經聯繫Apple有收到此問題,並且得到他們最優先處理的確認。我們的iOS團隊正在研究解決方案,但是因為這是一個複雜的問題,將會需要比預期還要長的時間來妥善解決。目前唯一的解決方法是繼續使用iOS SDK 4.2 。

許多的使用者回報,如果是使用Xcode 3.2.5與iOS SDK 4.2所開發的應用程式,是可以順利通過Apple的審核流程。iOS SDK 4.2是沒有被公開在iOS 開發者網站上,但是它還是可以從此鏈接直接下載。鏈接網址(https://developer.apple.com/devcenter/download.action?path=/ios/ios_sdk_4.2__final/xcode_3.2.5_and_ios_sdk_4.2_final.dmg

我們可以向各位開發者保證,以iOS SDK 4.2所建立的應用程式,都可以支援全部Unity iOS有在運作的功能,並且證明可以在舊的設備(iOS 3.x ~ iOS 4.2.X),以及較新的設備(iOS 4.3.X ,例如iPad2)都可以正常的運作。

如果你的應用程式發佈到App Store有任何問題,請隨時跟我們聯繫。

在那之後,我們已經花了很多時間聽取各位在論壇上的討論,分析你們建構的應用程式,並且嘗試一些方法。最後我們確定了問題的發生原因:iOS SDK 4.3的一個小問題,在計算應該由AppStore保護的本機端機械程式碼,這部份的計算出現錯誤。當AppStore的保護機制適用於此應用程式時,這個問題就會被暴露出來。

最近,一些使用者在論壇上面回報,他們已經成功提交iOS SDK 4.3的應用程式到AppStore上。這引導了我們的解決的方案(我們想大聲的感謝論壇的網友「susantio」和「ratrodstudio」),我們調查了他們的專案內容,發現都有共同使用的特殊連結器標誌〝 - all_load 〞(這是需要一些第三方ObjC插件)。使用此標誌來強制iOS SDK 4.3的機器碼連接器,可以正確計算保護代碼的大小,因此它解決了這個問題。

即將發佈的Unity3.4版本,將會默認這個特殊標誌。如果你無法等待,可以透過手動修改Xcode專案,來修正個問題 。


應該如何在Xcode 3.2.6(SDK 4.3)添加此標誌:

1. 開啟你的Xcode專案。
2. 在Xcode選項中選擇Project → Edit Active Target。
3. 在Configuration選項中,選擇「Release」。
4. 在搜尋欄位中輸入「linker」。
5. 找到欄位名稱為「Other Linker Flags」,接著雙擊此欄位。如下圖所示。
 

6. 點選「+」,並且加入「-all_load」。如下圖所示。
7. 清理所有目標。


應該如何在Xcode 4/4.0.2(SDK 4.3)添加此標誌:

1. 開啟你的Xcode專案。
2. 在項目選單中,點選你的專案。
3. 在接下來的視窗中,點選「Unity-iPhone」下的目標。
4. 在接下來的視窗中,點選「Build Settings」。
5. 在搜尋欄位中輸入「linker」。
6. 找到欄位名稱為「Other Linker Flags」,並且在「Release」的配置附近點兩下。如下圖所示。











7. 點選「+」,並且加入「-all_load」。如下圖所示。







8. 清除全部目標。
9. 點選「Product」→「Build For」→「Build For Archiving」來製作一個發佈的版本。(注意. 不要使用「Product」→「Build」,因為這樣會使debug模式,建立在預設模式,就不會包括「-all_load」這個標誌)。


我們已經收到許多論壇用戶的回覆,確定已經可以使用iOS SDK 4.3來發佈應用程式到AppStore上面。此外我們也將研究的結果與Apple分享,我們希望這將有助於,編入下一個SDK版本的更新內容。


原文出處:http://blogs.unity3d.com/2011/06/15/unity-and-ios-sdk-4-3/


沒有留言: