cocos2d-x 移动MM平台SDK接入

来源:互联网 发布:hp打印机墨盒清零软件 编辑:程序博客网 时间:2024/05/01 13:44

注意: cocos2d-x 3.x版本后可以使用AnySDK来接入第三方SDK, 比下面介绍的方法方便很多, AnySDK官网

cocos2d-x版本:2.2

开发平台:Windows

官方Wiki介绍了如何接入第三方SDK, 不过是英文的, 我在此更详细的介绍下.官方Wiki地址:点击打开链接

打开ADT(Android Develop Tool, 就是你用来开发Android的Eclipse), 导入cocos2d-x/plugin文件夹下的所有项目, 如图:
这些项目中项目名Hello开头的都是官方的示例, 其中HelloIAP和HelloIAP-JS是和付费相关的示例, 剩余Hello开头的是与广告平台和社交平台的示例. 剩下lib开头的项目中, libPluginProtocol这个项目中是供其他lib开头项目使用的. 还有一个91SDK开头的项目, 这个项目存放了91平台使用过程中的一些UI文件, 如果要使用91平台进行付费, 就必须在你的项目中引入这个项目. 最后还需要libcocos2dx这个项目, 选择导入目录的时候使用cocos2d-x/cocos2dx即可, eclipse会自动寻找.
导入工作完成后, 项目文件上有可能会感叹号或者叉叉, 修改下项目的属性即可.
确保项目文件夹上没有叉叉或者感叹号就可以继续下一步了.
新建一个Android项目, 这里我取名为libPluginMobileMM. 注意这里的包名一定要使用org.cocos2dx.plugin
点击下一步, 此处设置项目为Library, 然后点完成.
设置下新建项目的属性, 将libPluginProtocol这个项目引入到项目中.
在此项目中新建一个文件夹, 取名为sdk(注意大小写), 然后将移动MM SDK文件夹中的.jar文件拷贝到sdk中, 剩下的两个.so文件先不管. 右键刚刚拷贝进来的.jar文件, Build Path -> Add to Build Path. 现在可以开始在新建的项目中写代码了. 新建一个类, 这个类必须实现且只能实现一个接口InterfaceIAP, 代码可以参考libPluginNd91和移动MM给的Demo项目中代码来写. 
package org.cocos2dx.plugin;public class AnalyticsFlurry implements InterfaceAnalytics {        ...        public AnalyticsFlurry(Context context) {        mContext = context;    }}

代码写好后记得生成一下, 然后在项目中添加一个文件ForManifest.xml, 此文件可以去libPluginNd91中拷贝一份, 不过里面的内容需要修改. 打开ForManifest.xml文件, 将<applicationCfg>节点中的内容和<permissionCfg>节点中的内容替换成移动MM的, 可以去移动MM Demo项目的AndroidManifest.xml中找. 然后再在项目中添加一个build.xml文件, 这个文件同样可以去其他项目中去拷贝, build.xml文件中开头project name的值要改成自己的项目名称, 比如:
<?xml version="1.0" encoding="UTF-8"?><project name="libPluginMobileMM" default="plugin-publish">   ...</project>

以上这些都做好后, 打开cocos2d-x/plugin/plugins文件夹, 在此建一个文件夹, 我这里取名mobilemm, 在mobilemm文件夹中新建文件夹proj.android, 将刚刚写好的libPluginMobileMM文件夹下中的内容全部拷贝到proj.android中.
接下来修改cocos2d-x/plugin/tools/config.sh这个文件, 用记事本方式打开, 将mobilemm文件夹名添加到ALL_PLUGINS中:
export ALL_PLUGINS=("protocols" \"flurry" "umeng" \"alipay" "nd91" "mobilemm")
接下来双击运行(或者使用Cygwin控制台)cocos2d-x/plugin/tools下的publish.sh文件. 运行中可能会要求你输入NDK的目录地址, Android SDK的目录文件夹地址和ant的地址. 输入完成后等待处理完成. 处理完成后再运行cocos2d-x/plugin/tools下的gameDevGuide.sh, 输入你的项目的Android项目目录地址, 选择mobilemm或者你要使用的其他插件, 然后下一步, 等待处理完成即可. 这部分官方也有Wiki:点击打开链接
接着, 还需要在你的C++代码和java代码中添加一些代码:
protected void onCreate(Bundle savedInstanceState){    super.onCreate(savedInstanceState);PluginWrapper.init(this); // for plugins// If you want your callback function can be invoked in GL thread, add this line:PluginWrapper.setGLSurfaceView(Cocos2dxGLSurfaceView.getInstance());}

C++部分如何使用可以参考HelloIAP这个项目.
还记得有两个.so文件吗, 将这两个放到你游戏项目的jni文件夹中, 如图:
然后修改上图中的Android.mk文件, 我把我自己的Andorid.mk贴出来, 照着修改就行了.
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := casdkjniLOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libcasdkjni.soinclude $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := identifyappLOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libidentifyapp.soinclude $(PREBUILT_SHARED_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := cocos2dcpp_sharedLOCAL_MODULE_FILENAME := libcocos2dcppMYSRC_ROOT := $(LOCAL_PATH)/../../ClassesFILE_LIST += $(wildcard $(MYSRC_ROOT)/*.cpp)LOCAL_SRC_FILES := hellocpp/main.cppLOCAL_SRC_FILES += $(FILE_LIST:$(LOCAL_PATH)/%=%)LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../ClassesLOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static \PluginProtocolStaticLOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_staticLOCAL_WHOLE_STATIC_LIBRARIES += box2d_staticLOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_staticLOCAL_WHOLE_SHARED_LIBRARIES += casdkjniLOCAL_WHOLE_SHARED_LIBRARIES += identifyapp#LOCAL_SHARED_LIBRARIES := casdkjni identifyapp include $(BUILD_SHARED_LIBRARY)$(call import-module,cocos2dx)$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)$(call import-module,CocosDenshion/android)$(call import-module,extensions)$(call import-module,external/Box2D)$(call import-module,external/chipmunk)$(call import-module,plugin/publish/protocols/android)

重新编译一下游戏Android项目, 至此, 移动MM SDK的接入就完成了. 如果有疏漏或者其他问题, 欢迎留言.