cocos2d-js 3.1 接plugin-x编译报错,无法生成libcocos2djs.so文件

环境:
Mac 10.10,cocos2d-js 3.1

1、cocos new 命令生成新的项目Plugin
2、cocos run -p android 运行项目,可以成功运行
3、安装官方教程 http://www.cocos2d-x.org/docs/manual/framework/html5/jsb/plugin-x/how-to-use-plugin-x-on-android/zh 在Android项目上集成Plugin-x,遇到以下几个问题

问题:
1、运行frameworks/js-bindings/cocos2d-x/plugin/tools/gameDevGuide.sh脚本,修改项目配置后,再次执行cocos run -p android,报错,信息如下
…(省略一些错误信息,形式类似以下这种)
/Users/XXX/workspace/XXX/frameworks/runtime-src/proj.android/…/…/js-bindings/external/spidermonkey/prebuilt/android/armeabi/libjs_static.a(jscntxt.o)(.text+0x1138): error: undefined reference to ‘vtable for std::basic_ifstream<char, std::char_traits >’
/Users/XXX/workspace/XXX/frameworks/runtime-src/proj.android/…/…/js-bindings/external/spidermonkey/prebuilt/android/armeabi/libjs_static.a(jscntxt.o)(.text+0x1164): error: undefined reference to ‘vtable for std::basic_filebuf<char, std::char_traits >’
/Users/XXX/workspace/XXX/frameworks/runtime-src/proj.android/…/…/js-bindings/external/spidermonkey/prebuilt/android/armeabi/libjs_static.a(jscntxt.o)(.text+0x1168): error: undefined reference to ‘vtable for std::basic_streambuf<char, std::char_traits >’
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

2、在AppDelegate.cpp中添加:
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include “jsb_cocos2dx_pluginx_auto.hpp”
#include “jsb_pluginx_extension_registration.h”
#endif
按照这个添加后,执行 cocos run -p android ,会提示找不到jsb_cocos2dx_pluginx_auto.hpp、jsb_pluginx_extension_registration.h这两个文件。后来我把这两个文件改成相对路径
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include “…/…/js-bindings/cocos2d-x/plugin/jsbindings/auto/jsb_cocos2dx_pluginx_auto.hpp”
#include “…/…/js-bindings/cocos2d-x/plugin/jsbindings/manual/jsb_pluginx_extension_registration.h”
#endif
这样虽然找到了,但是报这个错误
jni/…/…/Classes/AppDelegate.cpp:114: error: undefined reference to ‘register_all_pluginx_protocols(JSContext*, JSObject*)’
jni/…/…/Classes/AppDelegate.cpp:114: error: undefined reference to ‘register_pluginx_js_extensions(JSContext*, JSObject*)’

请问以上这些问题该如何解决,android新手,找不到问题。。。

同上,楼主解决了吗??分享一下经验。。。。

第一个问题算是解决了吧,Application.mk文件第一行应该是这个APP_STL := gnustl_static,但是执行完编译插件的脚本后,貌似被改成了APP_STL := c++_static了,所以导致编译过不去,无法生成.so文件。第二个问题,暂时还没解决。这东西不太好用啊,android新手,遇到问题一头雾水。官方教程写的稍微有点儿简单了。。。

第二个问题,可以这样弄,
在Jni目录下的Android.mk 里的LOCAL_SRC_FILES节加入
…/…/…/js-bindings/cocos2d-x/plugin/jsbindings/auto/
…/…/…/js-bindings/cocos2d-x/plugin/jsbindings/manual/
这两个文件夹的源文件,可以解决第二个问题,不过在APP_STL := c++_static下这个没问题,但第一个问题还在。
在APP_STL := gnustl_static 下可以解决第一个问题,第二个的几个源文件编译不了。
好像有点矛盾。。。。
确实有点不好用,可能是新手吧。:9:

兄弟,要是搞好了,说一声,我也在接google的SDK,谢谢了哈。。。

jni/…/…/Classes/AppDelegate.cpp:114: error: undefined reference to ‘register_all_pluginx_protocols(JSContext*, JSObject*)’
jni/…/…/Classes/AppDelegate.cpp:114: error: undefined reference to ‘register_pluginx_js_extensions(JSContext*, JSObject*)’
我用APP_STL := gnustl_static编译到这里出错了,不清楚哪个配置文件没有写对,这个这两个东西没找到。。。

兄弟,我编译成功了,能不能成功调用插件还没试,第一时间告诉你,共同努力吧。你要接成功了,也告诉下。。。

Jni/Android.mk 这个文件要改下:

#LOCAL_WHOLE_STATIC_LIBRARIES := PluginProtocolStatic (注掉)

include $(BUILD_SHARED_LIBRARY)

$(call import-module,bindings)

#$(call import-module,protocols/android) (注掉)

$(call import-module,plugin/jsbindings) //新加的,看了这个模块的Android.mk,好像包含有注掉的模块,还有上面的函数。

我也好不容易编译成功了,只能用gnustl_c++,但是编译成功后,加载插件的名字怎么填,在哪儿定义的啊。。。

和楼主出现一样的问题,怎么解决?、???

楼主,问题解决了吗,求指教

可以通过JS 调 plugin 吗?