cocos2dLua3.17.2當在出廠就為 Android11 Version30的手機上黑屏,無法運行的問題


記錄一下:

  前段時間發布Google更新包,被強制要求Android Version必須30+,我的項目是29,由於沒有涉及到那些外部存儲功能啥的,我也沒在意,直接升級Android版本號到30,用幾台手機測試了一下,沒有問題。和我想象中的一樣,可以直接上線了,然后,就上線了。上線后的當天就發現了問題,我的另一台測試機,下載下來包體后,運行不起來,黑屏,於是,我麻了,其他手機都可以,只有一台不能運行游戲。什么原因?

  第一個想到的就是升級Version導致的,馬上把Version降回29,運行成功,沒有問題;在將version升到30,運行黑屏。(自以為找到問題了,就是升級版本導致的,事實上確實也有些關系,但是不是主要原因。)於是我趕緊去研究存儲機制,感覺沒發現問題。

  第二個想着會不會是權限導致的呢?然后加載動態權限。運行失敗。看來跟權限沒太大的關系。

那么跟什么有關系呢,運行發現已經跑到了main.lua中,但是在執行到  cc.FileUtils:getInstance():purgeCachedEntries() 后就沒有反應了,也不向下執行了。好像明白了;

  第三個想到 會不會是ccFileUtils調用到了android的存儲函數,而由於存儲機制更改,可能需要不同的調用呢,嗯,想着這個邏輯很接近啊,有點興奮了,趕緊找到cocos調用android的存儲的函數,改了一下,發現沒啥用啊,還是黑屏,還是運行到那。

也不知道當時是想到了什么。在看到bad light userdata pointer這個錯誤的時候,突然想到了luagit。想到它后,無法控制的到網上搜了一下,發現arm64的android11的出廠手機中,確實與luagit有些不兼容,哇,又興奮了,要去改luagit, git上下載最新的luagit,編譯靜態libluagit.a文件,頭文件。替換掉3.17.2的arm64-v8a中 libluagit.a文件,運行。熟悉的界面,終於出來了!淚奔!!

  整整一天的時間,一直到晚上10點多,才解決這個問題,測試后,沒有問題,趕緊打包提審。一天多,又流失了很多用戶,太可惜了。

  記錄一下,也給同樣遇到此問題的朋友一個思路。如果需要這個.a文件,可以 自己下載 https://download.csdn.net/download/tianduanhun/65482969

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM