• cocos2dx3.2升级Android5的坑


    虽然已经转到服务端,但是对客户端的事情,偶尔还看看。公司的游戏用的是cocos2dx 3.2的版本,

    然而在Android 5 上却无法运行。

    先是没有触摸事件。

    在stackoverflow上看到,原因是没有加载编译生成的so文件。可是看了一下AndroidManifest.xml已经加载了。

    于是对比了一下高版本的2dx,发现Application.mk文件上的APP_STL使用的是gnustl_static

    另外ndk版本修改为4.9

    还得修改build_native.py的select_toolchain_version函数

    def select_toolchain_version():
        '''Because ndk-r8e uses gcc4.6 as default. gcc4.6 doesn't support c++11. So we should select gcc4.7 when
        using ndk-r8e. But gcc4.7 is removed in ndk-r9, so we should determine whether gcc4.7 exist.
        Conclution:
        ndk-r8e  -> use gcc4.7
        ndk-r9   -> use gcc4.8
        '''
    
        ndk_root = check_environment_variables()
        if os.path.isdir(os.path.join(ndk_root,"toolchains/arm-linux-androideabi-4.9")):
            os.environ['NDK_TOOLCHAIN_VERSION'] = '4.9'
            print "The Selected NDK toolchain version was 4.9 !"
        elif os.path.isdir(os.path.join(ndk_root,"toolchains/arm-linux-androideabi-4.8")):
            os.environ['NDK_TOOLCHAIN_VERSION'] = '4.8'
            print "The Selected NDK toolchain version was 4.8 !"
        elif os.path.isdir(os.path.join(ndk_root,"toolchains/arm-linux-androideabi-4.7")):
            os.environ['NDK_TOOLCHAIN_VERSION'] = '4.7'
            print "The Selected NDK toolchain version was 4.7 !"
        else:
            print "Couldn't find the gcc toolchain."
            exit(1)

    之后一切好使,过了一段时候后,发现ios正常,而Android却莫名其妙崩溃。

    经过不断的排查,发现居然是stl的排序函数引起的,compare函数的值必须返回大于,不能是大于等于。

  • 相关阅读:
    最短路回顾
    树链剖分【模板】
    grep 、find 、tree 新发现
    网口划VLAN
    JDK安装
    网口做trunk
    PXE搭建
    C# 生成DLL文件
    在form窗体里面 寻找当前焦点的控件
    在屏幕右下方显示提示信息(winform窗体)(借鉴)
  • 原文地址:https://www.cnblogs.com/xdao/p/cocos2dx_android5.html
Copyright © 2020-2023  润新知