发现这个bug是通过clean cocos2d-x项目时出现的,错误信息为make: *** [clean-box2d_static-armeabi] Error 2
而正常build不会出任何问题,问题是由于r8e版的NDK中的build/core/build-binary.mk一处错误导致:
替换49行的:
$(cleantarget): PRIVATE_CLEAN_FILES := ($(my)OBJS)
为:
欢迎留言、转载请注明出处
发现这个bug是通过clean cocos2d-x项目时出现的,错误信息为make: *** [clean-box2d_static-armeabi] Error 2
而正常build不会出任何问题,问题是由于r8e版的NDK中的build/core/build-binary.mk一处错误导致:
替换49行的:
$(cleantarget): PRIVATE_CLEAN_FILES := ($(my)OBJS)
为:
先说出这问题时的周遭环境:
Android SDK Tools r12
Android SDK Platform-tools r6
Android NDK r6
HTC G10 DesireHD(root)
Eclipse 3.7 Indigo
ADT 12.0.0
Windows XP SP3
问题描述:按着Sequoyah Native Debug的教程走,到执行ndk-gdb起服务的时候,提示”found running pid:0 could not extract pid of application…”说找不到程序的PID(顺带一提,之前还有一次是提示could not extract package’s data directory…,经查发现原因应该是设备没有root),执行adb shell ps发现要调试程序的进程就在那里,PID也看到正常,为什么ndk-gdb说获取不到PID呢?
自从升级到NDK r6以后,一执行编译就会提示这些东西:
Android NDK: WARNING: Rebuilding STLport libraries from sources!
Android NDK: You might want to use $NDK/build/tools/build-
stlport.sh
Android NDK: in order to build prebuilt versions to speed up your
builds!
说用到的STL port可以用它说的sh进行prebuilt来提高编译速度,虽然没发现有什么太大的影响,但每次提示都很烦人,尤其是ndk-gdb执行的时候居然也会有这些提示,于是决定想办法解决一下!
最近在研究Box2D物理引擎在Android上的应用时,发现直接用NDK移植C++版本时遇到了一些STL库的问题,类似b2BroadPhase.h中的:
// Sort the pair buffer to expose duplicates.
std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan);
这里,其它地方通过直接替换标准c函数还好解决,这种需要STL库的用法就不好办了。在Box2D的论坛上发现有人提到有个叫CrystaX的第三方版本的NDK,整合了C++标准库,可以直接在不修改任何源码的情况下编译Box2D!
下载地址:http://www.crystax.net/android/ndk.php