
libluajit 编译后的共享目标文件。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
cocos2dLua3.17.2在出厂时即为Android 11 Version 30手机上出现黑屏、无法正常运行的问题,近期Google发布了一次更新包,并强制要求Android Version必须达到30及以上。我的项目原本使用Android Version 29,由于并未依赖于复杂的外部存储功能,因此我并未特别关注,直接将Android版本号升级至30,通过几台手机进行测试,结果显示没有问题。正如我预料的一般,可以顺利上线发布。然而,上线后的第二天就出现了问题:另一台用于测试的手机下载安装包后无法启动,依然呈现黑屏现象。因此,我感到十分沮丧。其他手机均可正常运行游戏,只有一台设备存在异常。那么究竟是什么原因导致了这种状况呢?
首先,我怀疑是版本升级所造成的。立即将Version降回29后,程序能够顺利运行且没有问题;然而,重新将Version提升至30后再次出现黑屏现象。(最初我认为版本升级是主要原因,但实际上并非如此。)随后我便急忙着手研究存储机制,但未能发现任何异常。
接下来,我考虑是否与权限设置有关。尝试加载动态权限后仍然失败。看来权限问题并非是导致问题的关键因素。那么究竟是什么原因造成了这个问题呢?运行程序时已经成功到达main.lua中,但在执行到 cc.FileUtils:getInstance():purgeCachedEntries() 函数时却没有任何反应,程序也无法继续向下执行。经过仔细分析后似乎明白了问题的所在;
最后, 我想到可能与ccFileUtils调用到的Android存储函数有关联, 并且由于存储机制的变更, 可能需要不同的调用方式. 这一想法让我非常兴奋, 立刻寻找cocos中调用Android存储的函数并进行了修改, 但结果并未见效, 黑屏现象依然存在. 当时的我并没有完全确定原因所在. 在注意到“bad light userdata pointer”这个错误信息时, 我突然联想到luagit库. 随即开始在网上搜索相关信息, 发现arm64架构的Android 11出厂手机中确实存在与luagit库不兼容的问题. 这让我再次感到兴奋, 并决定对luagit进行修改. 于是从Git上下载了最新的luagit库, 并编译生成静态libluagit.a文件以及相应的头文件, 将其替换掉原有的3.17.2版本的arm64-v8a架构中的 libluagit.a文件后重新运行程序。最终恢复了熟悉的界面!真可谓是泪奔不止!
全部评论 (0)


