Unity導(dǎo)出ios工程如何減小運(yùn)行內(nèi)存屯断、安裝包(ipa)文虏、以及安裝后大小(概說)

轉(zhuǎn)自http://blog.csdn.net/qq15233635728/article/details/44785765?locationNum=5

Unity導(dǎo)出ios工程如何減小運(yùn)行內(nèi)存殖演、安裝包(ipa)氧秘、以及安裝后大小(概說)

最近項(xiàng)目遇到些問題趴久,就是因?yàn)轫?xiàng)目里面彩色圖片素材比較多丸相,尺寸也比較大,制作人還不接受把壓縮圖片質(zhì)量降低很明顯彼棍。于是導(dǎo)致unity導(dǎo)出到iOS設(shè)備上出現(xiàn)了幾個(gè)問題灭忠。

1、?????運(yùn)行內(nèi)存過大座硕;在低配版的iphone4s弛作,ipad2等512m老機(jī)型機(jī)器上面,當(dāng)加載資源過多時(shí)华匾,容易引起內(nèi)存溢出映琳,導(dǎo)致應(yīng)用閃退。

2、?????Unity導(dǎo)出的ios工程過大萨西,xcode編譯出來的ipa包還算ok有鹿,但是安裝到ios設(shè)備上就大的離譜。例如60m的ipa原杂,安裝到設(shè)備上居然有700M印颤。

3、?????就是ipa導(dǎo)出包偏大穿肄。要求盡量減小到本身資源+unity空包(七八兆)左右大小年局。

以上問題,1咸产、2屬于比較嚴(yán)重的問題矢否。3 屬于進(jìn)一步優(yōu)化的問題。

針對上述問題我們采取了一系列方案脑溢,下面就其解決方案簡單闡述僵朗,所述不周之處還請指正。

一屑彻、減少程序運(yùn)行內(nèi)存验庙,更好兼容低內(nèi)存機(jī)器

程序內(nèi)存消耗過大,導(dǎo)致內(nèi)存溢出社牲,大多由于資源一次性加載過多粪薛,或者未及時(shí)清理,根源在于資源過大搏恤。

1违寿、首先,對于資源過大的問題:

音頻:我們可以盡量采用ogg格式熟空,低采樣率的音頻代替wav藤巢、MP3等高采樣率音頻。采樣率低也就代表著音頻質(zhì)量低息罗,你可以利用音頻轉(zhuǎn)換軟件掂咒,將音頻調(diào)整到可以接受的質(zhì)量。

圖片:如果需要較高質(zhì)量阱当,可多采用jpg格式俏扩,如果對質(zhì)量沒過多要求,可以保存為web格式弊添。如果有透明色那就只能png了。

這里推薦一個(gè)圖片壓縮網(wǎng)站捌木,基本上處理后油坝,他的壓縮率會達(dá)到50%以上,而且看不出有太多的失真。

https://tinypng.com/

2澈圈、其次彬檀,當(dāng)我們將資源導(dǎo)入unity中,unity會對資源做一些特殊的處理瞬女,例如圖片在web平臺下窍帝,默認(rèn)會使用texture、compressed壓縮诽偷。此時(shí)坤学,jpg格式或者大體成2的n次方的png圖片幾乎都可以被壓縮。

之前报慕,我們?yōu)榱藞D片效果完美深浮,一直用:gui、truecolor格式圖片眠冈,這樣確實(shí)在設(shè)備上畫面表現(xiàn)很好飞苇。

但是這樣就導(dǎo)致一個(gè)問題,一張?jiān)局挥?7k大小的圖片蜗顽,使用這個(gè)設(shè)置后會被渲染變得4m大小布卡。

當(dāng)運(yùn)行程序時(shí),它所占據(jù)的內(nèi)存就為4m雇盖,而非87k忿等。尤其是我們項(xiàng)目中,一個(gè)界面中有很多這種高質(zhì)量圖片刊懈,而且再加上有很多序列幀動(dòng)畫这弧,并且這個(gè)動(dòng)畫單張比較大,幀數(shù)還比較多虚汛。那這個(gè)內(nèi)存占據(jù)就非池依耍可怕了。我們的低配置機(jī)器僅僅512內(nèi)存卷哩,如果不合理編寫資源管理器蛋辈。那崩潰的幾率確實(shí)很大。

因此我們試驗(yàn)了幾種不同圖片格式将谊,在ios設(shè)備上冷溶,pvrtc 4bit 這種格式的圖片相對來說,內(nèi)存占據(jù)量不算高尊浓,也不是很失真逞频。不建議追求極致的圖片質(zhì)量,而消耗很大的內(nèi)存栋齿。

3苗胀、然后我們使用了動(dòng)態(tài)資源加載襟诸。

將一系列資源(圖、圖集的預(yù)設(shè))打包成為assetbundle基协,將其放置在只讀目錄StreamingAssets文件夾下歌亲。

當(dāng)使用這個(gè)資源時(shí),利用www讀取本地資源澜驮,加載到內(nèi)存陷揪。

然后馬上卸載掉鏡像。

當(dāng)不再使用這個(gè)資源時(shí)即銷毀這個(gè)對象杂穷。

但是悍缠,實(shí)際測試在真實(shí)ios設(shè)備上內(nèi)存監(jiān)測到的并非立刻降低,因此這個(gè)場景中如果資源需要比較多亭畜,還不能全部加再進(jìn)來扮休。而是要根據(jù)需要分批次加載進(jìn)來。

此外在場景切換過程中還需要經(jīng)常調(diào)用系統(tǒng)函數(shù)Resources.UnloadUnusedAssets();來清理一下? 游離的未使用 資源拴鸵。以保證內(nèi)存回收玷坠。

4、資源打包這里不再詳細(xì)敘述劲藐。詳細(xì)可以參考以下內(nèi)容:

http://www.xuanyusong.com/archives/2405

注意的是單獨(dú)寫腳本時(shí)八堡,注意最后打包參數(shù)。不同平臺打出的資源不通用聘芜。

Android上:

BuildPipeline.BuildAssetBundle(obj, null, targetPath,BuildAssetBundleOptions.CollectDependencies,BuildTarget.android)

IOS上:

BuildPipeline.BuildAssetBundle(obj, null, targetPath,BuildAssetBundleOptions.CollectDependencies,BuildTarget.iPhone)

另外兄渺,電腦上和手機(jī)上打出來的Assetbundle不能混用,不同平臺只能用自己的汰现。

5挂谍、其實(shí),資源打包針對于內(nèi)存優(yōu)化的影響并不是很大瞎饲。影響大的是資源使用的格式口叙、數(shù)量的多少。以及對資源使用的管理嗅战。

不過妄田,資源打包也有不少好處。就是:1驮捍、資源的加密型比較好疟呐;2、可以很大的減小安裝到手機(jī)上面的用量东且。3启具、加載、銷毀比較清晰珊泳,可控性較好富纸。4囤踩、加載未完成時(shí)可以了利用loading界面遮蓋旨椒,防止界面轉(zhuǎn)換時(shí)閃黑屏晓褪。

二、ipa包導(dǎo)出后安裝到真機(jī)上占據(jù)空間巨大

1综慎、我們的項(xiàng)目在開始時(shí)涣仿,并沒有多少資源師打成Assetbundle的形式的。至少場景示惊、序列幀動(dòng)畫開始的時(shí)候都沒有打好港。

后來就遇到了這個(gè)問題:

1、? 我們在windows上編譯出xcode工程時(shí)米罚,發(fā)現(xiàn)居然有700多m钧汹,覺得很奇怪,檢查了一下录择,有個(gè)data的文件夾 ? ? ? ? 比較大拔莱。

2、? 整個(gè)工程打成zip壓縮包僅僅100m

3隘竭、? 然后又在mac上面編譯出來的工程居然又達(dá)到700m

4塘秦、? 制作出來的ipa文件卻又不太大,60m左右

5动看、? 但是安裝到真機(jī)上尊剔,軟件用量卻十分大,大約700多m

2菱皆、針對這個(gè)問題我們研究發(fā)現(xiàn)须误,主要是資源文件夾下resourcedata,再經(jīng)過調(diào)查仇轻,是因?yàn)槔锩娴膱D片的問題京痢。

3、當(dāng)初為了保證圖片高質(zhì)量拯田,無論jpg還是png历造,我們都采用了gui、truecolor的設(shè)置船庇。

在上面實(shí)驗(yàn)中吭产、87k大小的文件,被渲染成4m左右大小的資源鸭轮。

我們通過解壓發(fā)現(xiàn)臣淤,編譯安裝后,ios沒有做到很好的壓縮與支持窃爷,而是將這個(gè)圖片直接轉(zhuǎn)換成tga格式存儲邑蒋。這就導(dǎo)致占據(jù)用量巨大姓蜂。

4、也就是說:運(yùn)行時(shí)他占據(jù)4m內(nèi)存

安裝時(shí)他也同樣占據(jù)著4m的硬盤用量

5医吊、針對于此钱慢,我們首先將圖片格式轉(zhuǎn)換成上述ios支持比較好的pvrtc? 4bit? 形式。

但是這種格式也有缺點(diǎn)卿堂,就是需要觀察哪些可以壓縮束莫,那些不能壓縮。經(jīng)試驗(yàn)草描,接近2的n次方的近似方形的圖片或者圖集能夠壓縮览绿,而不會圖片變形。經(jīng)過這樣的處理我們的用量初步降低為300m穗慕。

6饿敲、然后我們發(fā)現(xiàn)僅僅將資源打包還不夠,剩下的界面逛绵、場景等的預(yù)設(shè)上面還關(guān)聯(lián)了很多的圖片以及圖集怀各。如果場景不打包讓然會有很大的用量。于是我們將場景進(jìn)一步打包暑脆。除了攝像機(jī)的預(yù)設(shè)渠啤,全部打包。這樣我們的用量徹底降低了下來添吗,大約有80m多沥曹。

7、這種方式不適用初期開發(fā)碟联,因?yàn)槊慨?dāng)修改一次預(yù)設(shè)或者調(diào)整界面妓美,都要重新打包。并修改資源目錄鲤孵。著實(shí)費(fèi)力壶栋。

8、在實(shí)驗(yàn)中普监,還發(fā)現(xiàn)贵试。預(yù)設(shè)、圖片打包后凯正,就不能仍舊放在Resource目錄下毙玻,否則即使你不再引用,他依然能夠編譯到工程里面去廊散,從而不會減小最終產(chǎn)出的工程桑滩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市允睹,隨后出現(xiàn)的幾起案子运准,更是在濱河造成了極大的恐慌幌氮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胁澳,死亡現(xiàn)場離奇詭異该互,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)听哭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門慢洋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陆盘,你說我怎么就攤上這事“苊鳎” “怎么了隘马?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長妻顶。 經(jīng)常有香客問我酸员,道長,這世上最難降的妖魔是什么讳嘱? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任幔嗦,我火速辦了婚禮,結(jié)果婚禮上沥潭,老公的妹妹穿的比我還像新娘邀泉。我一直安慰自己,他們只是感情好钝鸽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布汇恤。 她就那樣靜靜地躺著,像睡著了一般拔恰。 火紅的嫁衣襯著肌膚如雪因谎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天颜懊,我揣著相機(jī)與錄音财岔,去河邊找鬼。 笑死河爹,一個(gè)胖子當(dāng)著我的面吹牛匠璧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昌抠,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼患朱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了炊苫?” 一聲冷哼從身側(cè)響起裁厅,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤冰沙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后执虹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拓挥,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年袋励,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侥啤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茬故,死狀恐怖盖灸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情磺芭,我是刑警寧澤赁炎,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站钾腺,受9級特大地震影響徙垫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜放棒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一姻报、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧间螟,春花似錦吴旋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溉奕,卻和暖如春褂傀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背加勤。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工仙辟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鳄梅。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓叠国,卻偏偏與公主長得像,于是被迫代替她去往敵國和親戴尸。 傳聞我的和親對象是個(gè)殘疾皇子粟焊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容