使用的版本号是coco2d-x 3.15,用lua制作的游戏
由于近期谷歌要求64位版本,所以制作了64位包体
之前的谷歌崩溃率率很低,只有0.12%
但制作了64位包体上传后出现了大量崩溃,
崩溃率一路飙升到2.6% (谷歌的中间值是1.1%)
后台收集到的内容是
backtrace:
#00 pc 0000000000d7d0dc /data/app/com.droidhang.dr2.gp-ltb_qxq4hDbbLOaE4eTkqg==/lib/arm64/libcocos2dlua.so (cocos2d::Texture2D::updateWithData(void const*, int, int, int, int)+20)
#01 pc 0000000000dd06e8 /data/app/com.droidhang.dr2.gp-ltb_qxq4hDbbLOaE4eTkqg==/lib/arm64/libcocos2dlua.so (cocos2d::FontAtlas::prepareLetterDefinitions(std::basic_string const&, <char32_t, std::char_traits<char32_t>, std::allocator, <char32_t>>)+1468)
#02 pc 0000000000ca3304 /data/app/com.droidhang.dr2.gp-ltb_qxq4hDbbLOaE4eTkqg==/lib/arm64/libcocos2dlua.so (cocos2d:
:alignText()+72)
#03 pc 0000000000ca08ac /data/app/com.droidhang.dr2.gp-ltb_qxq4hDbbLOaE4eTkqg==/lib/arm64/libcocos2dlua.so (cocos2d:
:updateContent()+292)
#04 pc 0000000000c9eab8 /data/app/com.droidhang.dr2.gp-ltb_qxq4hDbbLOaE4eTkqg==/lib/arm64/libcocos2dlua.so (cocos2d:
:visit(cocos2d::Renderer*, cocos2d::Mat4 const&, unsigned int)+468)
#05 pc 0000000000cb5fc4 /data/app/com.droidhang.dr2.gp-ltb_qxq4hDbbLOaE4eTkqg==/lib/arm64/libcocos2dlua.so (cocos2d::Node::visit(cocos2d::Renderer*, cocos2d::Mat4 const&, unsigned int)+324)
#06 pc 0000000000cb5fc4 /data/app/com.droidhang.dr2.gp-ltb_qxq4hDbbLOaE4eTkqg==/lib/arm64/libcocos2dlua.so (cocos2d::Node::visit(cocos2d::Renderer*, cocos2d::Mat4 const&, unsigned int)+324)
#07 pc 0000000000cb5fc4 /data/app/com.droidhang.dr2.gp-ltb_qxq4hDbbLOaE4eTkqg==/lib/arm64/libcocos2dlua.so (cocos2d::Node::visit(cocos2d::Renderer*, cocos2d::Mat4 const&, unsigned int)+324)
是字体渲染这个地方出问题
visit开始递归渲染每个字体(我这个是ttf字体)
label里面继续调用updateContent() -> alignText() -> prepareLetterDefinitions()
最后怀疑的点在prepareLetterDefinitions函数中的
或者这个地方
因为他的类型是一个std::unordered_map<ssize_t, Texture2D*> _atlasTextures;
指针。我怀疑有特殊情况导致这个指针指向的区域被回收或者破坏了。
但一直没有找到地方
大量崩溃的机型都是 三星或者htc的安卓9.0版本。。
由于做了海外版本,韩国市场。我也怀疑可能是韩国字体库ttf导致的
但没有具体定位
有没有大大遇到同样的问题,并且解决的

