cocos2d-x 3.0 beta建立的工程proj.android不可以调试,自己动手丰衣足食吧,在此记一下解决过程
安装cdt插件
转换cdt工程
先试试能不能运行,若Run as-》Android Application出现以下错误[2014-03-24 11:25:12 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
[2014-03-24 11:25:12 - MyGame555] Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value>-C ${ProjDirPath} NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/prebuilt -j2</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>${ProjDirPath}/ANDROID_NDK/ndk-build</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>false</value>
</dictionary>
</arguments>
</buildCommand>
选中工程F5刷新,工程右键-》Property-》Builder可以看到多了个cdt builder,将cdt builder移到最上
代码编译
jni/Android.mk:22: *** Android NDK: Aborting. . Stop.
Android NDK: jni/Android.mk: Cannot find module with tag '2d' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?
没找到路径就自己加,在jni/Android.mk里添加如下字段
COCOS2DX:=$(LOCAL_PATH)/../../cocos2d
$(call import-add-path, $(COCOS2DX)/cocos)
$(call import-add-path, $(COCOS2DX)/external)
再次编译,出现一堆错误(不能马上终止编译差评)
jni/../../cocos2d/cocos/2d/CCEventListenerTouch.h:78:48: error: expected ';' at end of member declaration
jni/../../cocos2d/cocos/2d/CCEventListenerTouch.h:78:50: error: 'override' does not name a type
jni/../../cocos2d/cocos/2d/CCEventListenerTouch.h:79:33: error: expected ';' at end of member declaration
jni/../../cocos2d/cocos/2d/CCEventListenerTouch.h:79:35: error: 'override' does not name a type
仔细看看都是c++ 11里新加的“关键字”,显然没添加编译参数std=c++11,查看jni/Application.mkAPP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1 -std=c++11 -fsigned-char已添加-std=c++11
再查看 jni/../../cocos2d/cocos/2d/没有 Application.mk。新建jni/../../cocos2d/cocos/2d/ Application.mk也许能解决。。。,不过先参考一下build_native.py怎么做比较好。查看build_native.py看到如下注释
'''Because ndk-r8e uses gcc4.6 as default. gcc4.6 doesn't support c++11. So we should select gcc4.7 when
54 using ndk-r8e. But gcc4.7 is removed in ndk-r9, so we should determine whether gcc4.7 exist.
55 Conclution:
56 ndk-r8e -> use gcc4.7
57 ndk-r9 -> use gcc4.8
在jni/Application.mk里添加字段
NDK_TOOLCHAIN_VERSION = 4.8
重新编译成功
C/C++基本配置
再做一些基本配置,工程右键-》property-》C/C++ Build修改Default编译配置,Build command改成ndk-build -j4加快编译速度
再新建一个debug编译配置
Manage Configurations-》New-》对话框里添加新配置debug
修改Debug编译配置,Build command改成ndk-build NDK_DEBUG=1 -j4
调试
[2014-03-24 15:17:18 - MyGame888] Unknown Application ABI:
[2014-03-24 15:17:18 - MyGame888] WARNING:
[2014-03-24 15:17:18 - MyGame888] Unknown Application ABI:
[2014-03-24 15:17:18 - MyGame888] APP_PLATFORM
[2014-03-24 15:17:18 - MyGame888] Unknown Application ABI:
[2014-03-24 15:17:18 - MyGame888] android-19
[2014-03-24 15:17:18 - MyGame888] Unknown Application ABI:
[2014-03-24 15:17:18 - MyGame888] is
[2014-03-24 15:17:18 - MyGame888] Unknown Application ABI:
[2014-03-24 15:17:18 - MyGame888] larger
[2014-03-24 15:17:18 - MyGame888] Unknown Application ABI:
[2014-03-24 15:17:18 - MyGame888] than
[2014-03-24 15:17:18 - MyGame888] Unknown Application ABI:
[2014-03-24 15:17:18 - MyGame888] android:minSdkVersion
[2014-03-24 15:17:18 - MyGame888] Unknown Application ABI:
[2014-03-24 15:17:18 - MyGame888] 9
解决办法:修改AndroidManifest.xml-》AndroidManifest.xml < uses-sdk android:minSdkVersion = "19" />
[2014-03-24 15:25:11 - MyGame888] gdbserver output:
[2014-03-24 15:25:11 - MyGame888] run-as: Package 'com.MyCompany.AwesomeGame' is unknown
[2014-03-24 15:25:11 - MyGame888] Verify if the application was built with NDK_DEBUG=1
[2014-03-24 15:48:22 - MyGame888] gdbserver output:
[2014-03-24 15:48:22 - MyGame888] run-as: Package 'com.MyCompany.AwesomeGame' is unknown
[2014-03-24 15:48:22 - MyGame888] Verify if the application was built with NDK_DEBUG=1
if build_mode is None:
149 build_mode = 'debug'
150 elif build_mode != 'release':
151 build_mode = 'debug'
152
153#do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,android_platform,build_mode)
154