1. 程式人生 > >Unity釋出至IOS的流程(踩坑記錄)

Unity釋出至IOS的流程(踩坑記錄)

這篇文章主要用於記錄本人親身經歷過的Unity釋出到IOS平臺所遇到的所有坑(其實也就是一些自己並不明白的強制設定),以便於後續再有類似需求時少走些彎路。

我的環境:

Unity 5.2.2 個人版(破解版)

macOS Sierra 10.12.1

Xcode 8.2

iPhone 6S真機一臺

以上只是我的個人環境,如果因為unity的版本不同或是mac的版本不同,或是xcode的版本不同,很可能會遇到一些未知的坑,這裡我也不可能把所有坑都踩一遍了,所以只能看個人的運氣如何了,運氣好一次就能成功,運氣不好,卡在這裡隨隨便便就是幾天時間過去了,也沒個頭緒。

好吧,那現在開始吧。

第一步:安裝環境

Unity 5.2.2個人版直接在unity官網下載,破解補丁

在此

沒有真機或黑蘋果的話,安裝虛擬機器VM,虛擬機器的安裝流程百度很多,這裡只有一個重點,VM安裝成功以後需要使用對應的unlocker破解,破解以後才能直接安裝apple os系統,這裡有mac os x10.11.1的映象系統,安裝完後可以升級到最新版:http://pan.baidu.com/s/1kUW1ePT 密碼:bc8y

Xcode可以直接在app store下載,當然速度十分不可觀,所以最好還是選擇在蘋果開發者中心下載,百度搜索蘋果開發者中心

第二步:Unity釋出Xcode工程

這裡有兩種方式,第一種是在windows上用Unity釋出,第二種是在Mac上用Unity釋出,這兩種方式的操作流程幾乎沒什麼區別,但某些專案因為引用了特殊外掛的原因釋出可能會失敗,而在windows上釋出失敗的專案在mac上一般都是能成功的,我也不知道這是什麼原因了,只能猜測是windows上缺少某些必要的元件,所以最好還是在mac系統上用unity釋出xcode的工程,無論是真機、黑蘋果還是虛擬機器都行。

1、首先,在Build Setting裡將當前平臺切換至IOS(點選platform中的IOS,選擇switch platform),Run in Xcode as 選擇Release,其他保持預設

2、點選player setting,選擇other setting(其他的設定可以保持預設,splash image 載入背景如果需要的話自行替換)

    Auto Graphics API取消勾選,並取消Metal(選中Metal,點選右邊的減號刪除),讓APP只用OpenGLES2渲染

    Bundle Identfier按照標準的格式com.XXXX.XXXX,注意這裡的XXXX不能寫得太隨意,否則Xcode編譯可能不會通過

    Target SDK選擇Device SDK(真機),因為我這裡是真機測試,模擬器的坑還沒去踩,沒有真機的請選擇另一個(模擬器),不過不敢預測是否有更大的坑

    AOT Compatibility Options 填上字串:nrgctx-trampolines=8096,nimt-trampolines=8096,ntrampolines=4048  參考的這裡,如果你的APP有不知名的閃退情況的話,請加上這條屬性

    其他的保持預設屬性即可,大致如下:


然後就可以直接Build釋出了(mac系統中build and run會在釋出完成後自動開啟xcode),當然這裡可能會報另一個錯(機率性的),如下,大概就是DLL載入不出來的意思,我這裡是unityengine.UI及部分元件載入失敗,這自然是致命性的,除非專案中沒用到UGUI。


解決辦法參考的這裡,思路就是在unity的安裝資料夾中找到這些載入失敗的DLL,將他們全部移出去,然後執行一次unity,記住,千萬不要儲存場景,只執行開啟視窗就可以了,接著關閉unity,將之前移出去的所有檔案再放回原位,然後再開啟unity,奇蹟般的是,這些錯誤不復存在了,之前無法載入的元件已經載入成功了,只能說目前這應該算是一個bug吧。

第三步:用Xcode開啟工程,進行相關設定併發布

1、開啟Xcode,選擇右下角的Open another Project,選擇我們用Unity釋出出來的Xcode工程並開啟

2、到這裡你不清楚要更改哪些配置的話,直接點選上方選單欄Product -> Build生成專案,生成失敗會彈出報錯資訊


3、檢視報錯資訊,點選左側的一個三角感嘆號圖示,並再次點選你的專案配置檔案(專案的名稱),我這裡是Unity-iPhone,顯示所有配置資訊


4、到這裡我們發現報錯的原因是team id為空,所以我們必須為APP指定一個team id


5、點選這個team輸入框後面的藍色按鈕,選擇Add an Account,彈出一個視窗後,這裡會提示你用Apple ID登入,有賬號的話就直接登入,沒有的話就點選左下角Create Apple ID去申請一個,這是免費申請的,過程很簡單就不再描述了


6、選中我們登入的ID,可以在右下角(根據網路問題可能會載入緩慢)看到ID預設就有的一個個人團隊證書


7、好,我們關閉這個視窗,這下直接在team輸入框後面的藍色按鈕的下拉框中就可以選擇我們的個人團隊證書了


8、我們再次biuld專案,如果不出意外應該可以直接build成功,但據說是因為unity版本問題,這裡還會報這一個錯,如下,解決的辦法在這裡,很簡單,直接刪除NORETURN就可以了,這算是個bug吧,unity更新到5.3.2就修復了這一bug


9、然後,到這裡再次build專案的話應該就能成功了,不過如果專案用到了攝像機以及定位之類的,還需要在配置資訊中闡明使用的理由,不然釋出到真機就會黑屏或閃退,在xcode編輯介面的左側點選一個資料夾圖示,展開專案的工程目錄,選中info.plist,在Information Property List選項後面點選加號,在新生成的行的key值中選擇:Privacy - Camera Usage Description  ,value值選項中輸入要使用攝像機的理由,內容隨意,只是使用者在開啟app的時候會看到這個string,如果寫得太不友好,使用者自然有可能會拒絕app訪問攝像頭,然後你就沒轍了


10、然後用資料線連線上真機,在xcode編輯介面左上方選擇我們的iPhone裝置


11、現在就可以再次biuld,成功以後點選左上角的三角箭頭執行圖示,當顯示Running XXX on iPhone的時候,就可以開啟你的iPhone,app就能自動運行了,不能自動的手動點選圖示執行就可以了


這裡其實就是最麻煩的,很多做unity開發的並沒有接觸過IOS開發,自然也對xcode的一些標準配置完全就不清楚,當然我這裡也並沒有釋出至App store,只是釋出到真機的測試版,後面有時間再添加發布到app store的流程。

相關推薦

Unity釋出IOS流程記錄

這篇文章主要用於記錄本人親身經歷過的Unity釋出到IOS平臺所遇到的所有坑(其實也就是一些自己並不明白的強制設定),以便於後續再有類似需求時少走些彎路。我的環境:Unity 5.2.2 個人版(破解版)macOS Sierra 10.12.1Xcode 8.2iPhone

回顧vue開發spa記錄

url 如果 after 本質 {} spa 不能 cnblogs 所有     使用vueJS開發前端頁面差不多也有大半多年了。由於項目後臺管理頁面最早都是使用JQ進行開發的,剛開始使用vue的時候,只能是直接在頁面裏面引入vueJS框架進行開發,期間把項目後臺的編輯頁面

解決使用IE瀏覽器進行上傳ajaxFileUpload後,瀏覽器會提示下載的問題記錄

最近做一個上傳功能,前端使用的是ajaxFileUpload,後臺程式碼不規範,response沒有設定contentType,除了chome之外,firefox和IE瀏覽器都會報錯,即能進入後臺服務正常進行業務邏輯,但是返回都落在error:function{ }裡。由於後

Unity 釋出IOS,Android的各種

Unity 釋出到IOS的注意事項1.開發環境 MAC環境:Xcode環境 7.2.1 Unity環境:Unity5.3 2.基本說明 首先,我說一下,這是我在對Unity釋出到IOS的實際使用中,總結出來的經驗!如果你想一次就釋出成功,如果你想少走彎路,請仔細看我的說明。因為坑比較多! 由於Unity釋出

vue移動端

不想寫專案了,總結一下今天學的...............................   1 搭建專案 生成vue-cli腳手架 components:包含所有的頁面元件 vuex:包含vuex相關檔案 modules:存放每個頁面單獨的state和muta

如何使用sublime3愉快的編寫vue專案總結

前段時間開始編寫一個vue專案,因為發現很多人使用sublime編輯器,所以我也選擇使用sublime,但是使用的過程並不順利,出現了一些問題,在網上查了很多資料,自己除錯了很多次總算弄好了,記錄下來希望可以幫到有需要的人。 1.sublime3的下載 sublime3的

微信jssdk批量新增卡券介面經驗

1)首先是官方介面文件: 2)坑一:接入準備   1、需要在微信公眾號平臺裡配置“JS介面安全域名”,位置:公眾號設定-》功能設定-》JS介面安全域名;   2、配置“網頁授權域名”(獲取openid時需要用到,怎麼獲取這裡就不說了),位置同上:公眾號設定-》功能設定-》網頁授權域名 3)坑二:ap

MySQL5.0和Oracle11g中char型別區別

1:mysql中charCHAR資料型別是MySQL中固定長度的字元型別。 我們經常宣告CHAR型別,其長度指定要儲存的最大字元數。 例如,CHAR(20)最多可以容納20個字元。如果要儲存的資料是固定大小,則應使用CHAR資料型別。在這種情況下,與VARCHAR相比,您將獲

Linux下使用docker搭建STF成功

自從經歷了Mac下docker的失敗後,一直在查詢原因,也開始自學docker。為了搞懂docker,還在某東上買了James Turnbull的書《THE DOCKER BOOK》來研究。這裡介紹的是使用Linux環境來使用docker,不過也確實是,docker本身跑的

Mysql Workbench--配合Mysql Server 8.0.11 安裝教程教學

第一步:下載Mysql Workbench第二步:點開下載的exe檔案基本就是無腦下一步就裝好了。第三步:開啟Mysql Workbench嘗試連線。報錯,查詢問題後發現可能是兩個依賴沒有裝:重啟。連線成功。

03、Swagger2和Springmvc整合詳細記錄記錄

component 效果 ges context tex ron 問題 package amp 時間 內容 備註 2018年6月18日 基本使用 spirngmvc整合swagger2 開始之前這個系列博文基本是,在項目的使用中一些模塊的內容記錄,但是

Vue2.0搭建vue腳手架記錄

安裝node.js 從node官網下載並安裝node,安裝步驟很簡單,只要一路“next”就可以了。 安裝完成後,開啟命令列工具輸入命令node -v,如下圖,如果出現對應版本號,就說明安裝成功了。 我們所需要的npm包管理器,是整合在node中的,所以,直接

Laya載入unity場景記錄AS3語言

1.千萬不要用高版本的unity使用laya的外掛,因為他們目前最新的2.0的外掛也就支援到unity5.6.x,不然迎接你的將會是最少兩個錯誤。 2.如果之前用的1.x版本的laya轉成2.x版本的引擎的話將會出現一片bug,因為2.x很多api不向下相容,甚至Dicti

JAVA實用案例之文件導出JasperReport實錄

十分 bytearray message remove 除了 只需要 老婆 不同 內存泄露問題 寫在最前面 想想來新公司也快五個月了,恍惚一瞬間。 翻了翻博客,因為太忙,也有將近五個多月沒認真總結過了。 正好趁著今天老婆出門團建的機會,記錄下最近這段時間遇到的大坑-J

配置taBar所遇見的問題之路

分享圖片 type http 效果圖 navi src 之路 com nbsp 目前效果圖: 問題:我遇見一個問題,點擊每周關註的時候,他應該跳轉到哪一個頁面。在沒有設置taBar還是可以跳轉的。 解決方法是: 修改 open-type=‘navig

webpack記錄

有著 安裝webpack package 頁面 如圖所示 ins 部分 二次 令行 博客還是要簡單記錄一下的,美劇看完了,於是決定學習,想起來webpack還沒學啊,大物就先放一放,然後就開始找教程,慕課上某免費視頻。 那webpack是啥呢? 如圖所示: 是不

jmeter分布式壓測實踐及記錄linux壓力機

分享 server 以及 rop lib 記錄 src 連接拒絕 hit 1、分布式機器需要調度機以及壓力機都安裝好jmeter 1) 因為本機是mac,所以直接把本機器的jmeter壓縮打包,上傳到服務器解壓即可。或者在服務器上自行下載安裝jmeter。配置壓力機的j

jmeter分散式壓測實踐及記錄linux壓力機

1、分散式機器需要排程機以及壓力機都安裝好jmeter   1) 因為本機是mac,所以直接把本機器的jmeter壓縮打包,上傳到伺服器解壓即可。或者在伺服器上自行下載安裝jmeter。配置壓力機的jmeter系統變數: p.p1 { margin: 0.0px 0.0px 0.0px 0.0p

SpringBoot專案(單模組、多模組)使用docker容器執行jar包映象

SpringBoot專案(單模組、多模組)使用docker容器執行jar包映象(踩坑) 1.mavem docker外掛配置 <!--docker 外掛配置--> <build> <finalName>生成jar包的名稱</

cookie猜數字遊戲---------------思路分析

說明:使用者第一次請求頁面的時候,同時會產生一個隨機數,使用者點提交表單的時候,會將輸入的數字與第一次請求產生的數字進行一個對比。 問題一:如何儲存使用者每次提交的資料  我們常見的在伺服器中儲存資料的方式是通過file_put_content()函式,將使用者輸入