隨着項目越來越大,碰到的很難解決的Bug也越來越多了。兩個月之前,偶然發現遊戲APK打開的時候會拋出錯誤然後崩潰:
03-08 12:21:18.201: A/mono(6873): * Assertion at mini-arm.c:2634, condition `pdata.found == 1' not met
不用想了 這就是Unity的Bug。
但是當我更新了一個Unity的版本之後,發現這個Bug依舊,而且Unity論壇上也沒有技術人員進行反饋,所以一直擱置。
但是隨着項目越往後,發現遊戲崩潰越來越頻繁了,切場景就崩潰,組隊也崩潰。讓我很難受。
那段時間正好弄熱更,所以就把Mono的源代碼修改了一下,將 mini-arm.c 裏面exit的地方註釋掉了,轉爲打出一個log。
這樣遊戲崩潰少了,但是轉而就變成遊戲各種無響應。
轉自http://blog.csdn.net/huutu http://www.thisisgame.com.cn http://www.liveslives.com
這就和微軟解決了藍屏的問題一樣。
對於這個問題,我也比較無奈,一直到這兩天同事頻繁反饋遊戲在登錄界面卡住,一直在Loading轉圈圈。這才發現問題的所在。
首先是對比下正常的發包 和 不正常卡住狀態下的發包,發現在Loading卡住的情況下,Protobuf 序列化出錯了,反序列化也出錯了。
這才意識到可能和Protobuf有關係。
我們項目中的Protobuf是預編譯成DLL的,所以我猜想,可能是Mono在讀取DLL進行解釋運行的時候,出了問題,可能是DLL文件太大?或者文件內容格式有什麼不對。
於是我花了半個小時換成了直接使用cs 文件。再次出包測試就可以了。
轉自http://blog.csdn.net/huutu http://www.thisisgame.com.cn http://www.liveslives.com
所以如果出現這種崩潰問題,很可能是 dll 出了問題哦。