创建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模拟器