ToLua(LuaFramework_UGUI_V2)在Android11(TragetSDK=30)报错问题

前几天发布了一个Google更新包,谷歌要求TragetSDK必须不小30,发布更新包后,许多用户反馈,进不去游戏。我们采用的LuaFramework_UGUI_V2进行开发的,在部分Android11机子上luajit会报错bad light userdata pointer。这就需要重新编译libtolua.so。

需要的工具:

1.luajit

2.tolua_runtime_v2

3.编译教程

这里我主要讲一讲报错的问题。

1.第一个报错,执行sh build_arm(64).sh

解决方法:

对比luajit/src/lauxlib.h末尾添加如下代码:

#define lua_unref(L,ref)        luaL_unref(L, LUA_REGISTRYINDEX, (ref))

#define lua_getref(L,ref)       lua_rawgeti(L, LUA_REGISTRYINDEX, (ref))

 2.执行sh build_arm(64).sh编译成功,没有libtolua.so生成

解决方法:手动创建目录

1.Plugins/Android/libs/arm64-v8a

2.Plugins/Android/libs/armeabi-v7a

3.Plugins/Android/libs/x86

 

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值