芒果

【随笔】搭建cocos2d-x游戏项目碰到的一些坑
创建cocos2d-x工程 cd /Users/chenling/Documents/JSGamePrj/...
扫描右侧二维码阅读全文
01
2019/09

【随笔】搭建cocos2d-x游戏项目碰到的一些坑

创建cocos2d-x工程

    cd /Users/chenling/Documents/JSGamePrj/thunder_2/ltfj/client/cocos2d-x-2.2.1/tools/project-creator
    ./create_project.py  -project YUGame -package com.ioschen.game -language cpp

I fixed it by putting:

TARGET_ARCH_ABI := armeabi-v7a
at the very beginning of Android.mk.

../cocos2dx/Android.mk

由于每次native-build都会重新从cocos2dx文件夹整个静态编译,其中有个依赖的库文件没有source,所以暂时将这一行注释掉了
        # LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libxml2_static
    像这样的依赖,由于下面有call import-module 做编译所以没有问题
        LOCAL_WHOLE_STATIC_LIBRARIES := cocos_libpng_static
        ...
        ...
        $(call import-module,libpng)

../project/ldzzmkx/proj.android/jni/Android.mk

面向windowsApp用的支付相关代码,在mac下没有编译过去,由于也用不到,所以注释掉
        # ../../Classes/pay/pay_win.cpp

../Classes/pay_proxy.cpp

同上,由于pay_win.cpp没有进行编译,所以预编译代码也要删掉,否则编译时会提示找不到对象
        // #if ( CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID )
             _payInterface = new CPayAndroid();
        // #elif ( CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 )
        //   _payInterface = new CPayWin();
        // #endif

../2222/fenghuazhanji/build/build.gradle

解决安卓运行时中文乱码,在android{}中添加指定字符集的设定       
        compileOptions {
            encoding "GBK"
        }

NDK natiave make 时的一些错误

cocos2dx2.2.1 编译时提示cule 错误 ,解决方案, 下载更低版本的ndk r10, 重新编译即可
提示obj文件夹下面请求的文件cgwin啥的不存在,原因是这些obj是之前别人在windows的cgwin下编译的,手动将obj文件夹下面的所有文件删除再重新编译即可

../project/ldzzmkx/proj.android/jni/Applcation.mk

安卓运行时提示找不到libcocos2dcpp.so
这是因为在我们的libs文件夹下缺少了armeabi-v7a文件夹。只要我们在Application.mk文件中添加如下两句
编译时会自动在libs文件夹中生成对应平台所需的libcocos2dcpp.so文件,如果只在安卓真机上运行,那么只需要armeabi即可
如果需要在安卓模拟器中运行,则x86是必须的。
        TARGET_CPU_API := armeabi
        APP_ABI := armeabi,armeabi-v7a,x86
        <网上找的说明>
            在使用NDK编译过程中发现针对不同的CPU架构,部分支持编译调试,部分不支持调试,故记录下来,以防忘记
            在Application.mk文件中有个预定义命令参数APP_ABI,是指明编译与调试的CPU架构。
            目前Android系统支持以下七种不同的CPU架构:ARMv5,ARMv7(从2010年起),x86(从2011年),MIPS(从2012年),ARMv8,MIPS64和x86_64(从2014年),每一种都对应相应的ABI。

            CPU架构   ABI 
            ARMv5   armeabi 32位,从2010年
            ARMv7   armeabi-v7a 32位,从2010年
            x86 x86 32位,从2011年
            MIPS    mips    32位,从2012年
            ARMv8   arm64-v8a   64位,从2014年
            MIPS64  mips64  64位,从2014年
            x86_64  x86_64  64位,从2014年
            相应生成arm64-v8a,mips64,x86_64下的文件需要NDK_r10以上版本支持。在Application.mk文件里配置APP_ABI的内容。例如指明某个具体的CPU架构

            APP_ABI := arm64-v8a
            或者直接生成所有的版本
            APP_ABI := all
            注意:根据不同的NDK版本,APP_ABI := all仅能生成当前版本支持的ABI信息库文件,如果需要生成最新的必须更新相应的NDK版本。

            或者明确写明支持的CPU架构

            APP_ABI := armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64

            建议采用该方法

            注意:由于目前版本支持的问题,采用Eclipse+NDK+Windows集成方式开发,对应编译生成对应CPU架构的so文件是没有问题的。但是不一定可以执行调试工作,启动NDK调试模式时将会提示无法识别对应的ABI。

            注意:(1)、目前模拟器只有x86_64的没有arm64-v8a的;(2)、在用真机测试armv8-a时,最好先通过adb shell, cat  /proc/cpuinfo ,来查看下真机是否是支持armv8-a;(3)、arm32和arm64有些配置参数不能共存,如-msoft-float仅在arm32位下支持,在arm64位下是不支持的. 
        </网上找的说明>

在xcode里面调试

首先从别的工程生成一个ios工程目录,然后拷贝到当前游戏目录下(跟android.proj相同阶层)
然后用xcode打开
class目录右键删除红色的参照,右键添加当前游戏class目录中所有的cpp和h文件,不能有子文件夹(比如pay文件夹内的文件也要直接添加在class阶层下)
resouce目录也是同样处理
然后修改工程属性,默认编译target是4.0 , 修改为6.0
即可编译成功
调试使用iphone7模拟器
Last modification:October 13th, 2019 at 06:25 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment