Cocos2d-JS项目集成Facebook插件时找不到C++文件

我在做一个Cocos2d-JS项目时,要集成Facebook登录/交互功能,尝试用Pluginx 的Facebook模块去做。
我严格按照官方教程(http://www.cocos2d-x.org/docs/manual/framework/html5/facebook-sdk/facebook-sdk-on-android/zh)去做,在Facebook官网上也创建了项目并进行了配置。但是还没有在js中写任何调用Facebook功能,尝试进行打包时(我用Cocos Code IDE打包成APK),出现如下错误:

make.exe: Entering directory `F:/GIT_CC/CocosFB/frameworks/runtime-src/proj.android’
Compile++ thumb: cocos2djs_shared <= AppDelegate.cpp
Compile++ thumb: cocos2djs_shared <= ConfigParser.cpp
Compile++ thumb: cocos2djs_shared <= Runtime_android.cpp
jni/…/…/Classes/AppDelegate.cpp:29:41: fatal error: jsb_cocos2dx_pluginx_auto.hpp: No such file or directory
#include “jsb_cocos2dx_pluginx_auto.hpp”

也就是说找不到在AppDelegate.cpp中include的C++代码。我在Google上搜了一下,有个人也碰到这个问题(https://github.com/cocos2d/cocos2d-js/issues/697),他似乎解决了这个问题,但是他描述的“after remove the import-module with protocols/android”这一句,我一直没搞清楚要在哪里删除哪个东西,官方教程中也没有提及,并且,官方教程中也没有注明该教程针对的是Cocos2d-JS引擎的哪个版本。

我的引擎版本:
Cocos2d-JS: cocos2d-js-v3.2-rc0;
Cocos Code IDE:V1.1.0

想问一下大神,这类问题要怎样才能解决?

请参考js-tests工程的android.mk文件来编辑你的项目中的jni/android.mk

https://github.com/cocos2d/cocos2d-js/blob/develop/samples/js-tests/project/proj.android/jni/Android.mk

重要的是:

  1. 添加pluginx static library
    LOCAL_STATIC_LIBRARIES += jsb_pluginx_static
  2. 引入jsbindings模块,这个模块定义中有包含你缺失的jsb_cocos2dx_pluginx_auto.hpp
    $(call import-module,cocos2d-x/plugin/jsbindings)

问题似乎解决了,至少现在APK打包成功了,说明代码没有错误。至于JS里调用Facebook API,还没有去做。
其实问题还是很简单的,就是我按照官方教程把:
LOCAL_WHOLE_STATIC_LIBRARIES += jsb_pluginx_static
(call import-module,cocos2d-x/plugin/jsbindings) 两句写在一起了,但是事实上第一句应该放在LOCAL_STATIC_LIBRARIES := cocos_jsb_static的后面,第二句放在最后。中间应该隔着一句include (BUILD_SHARED_LIBRARY)
写官方教程的人也真是,这种问题应该有个说明吧,毕竟教程是給菜鸟看的,不是给专家看的。很多cocos2d-js开发者都是第一次接触C++。
就这么个小问题,搞了我一两天时间。这算不算是个坑?

:867: 感谢分享

此外,继续分享一些后续的经验:

1)按官方教程配置好项目代码后,要用命令行编译一次:cocos compile -p android。一开始的时候,我想当然地用Cocos Code IDE进行打包,结果打包成功了,但是运行却没有任何反应。后来才醒悟过来:用Cocos Code IDE打包时,如果不是第一次打包或编译runtime,很多编译C++的步骤都会跳过的。而前面因为修改了很多C++里的配置,所以如果还是用Cocos Code IDE打包,其实刚刚配置的那些代码并没有起作用。当然如果你硬要用Cocos Code IDE打包也行,但是要先把frameworks\runtime-src\proj.android\obj文件夹删除掉,这样才会重新编译C++部分的代码。

2)在项目的project.json文件中添加如下代码:
“modules” : “cocos2d”, “extensions”, “external”],
“plugin”: {
“facebook”: {
“appId” : “829255073798315”, //appId的值改成你自己的appId
“xfbml” : true,
“version” : “v2.0”
}
}

然后就可以在js里写代码调用Facebook API了。
我把整个过程详细地记录下来,http://hi.baidu.com/airroam/item/fcfb7f7a565d190d0d0a07f9,需要的网友可以去查看。

知道cocos2d-js与c++的相互调用怎么做的吗,能否指点一二啊。。。多谢了