Cocos2d-x shareSDK

Android部分集成步骤(不集成Android分享可略过此部分)

注意:
本节介绍的是结合Jni将Share SDK集成到coco2d-x的方式,如果您想查询“纯Java方式”的集成方法,请点击这里参考“Android 示例项目”条目的相关内容,如果您想查询“plugin-x”的集成方法,请点击这里参考“Android 示例项目”条目的相关内容。

集成步骤

集成到你的cocos2dx里要做的是
1:把ShareSDK的cocos2dx的sample项目里的libs架包复制到你的项目里,除了armeabi目录不用复制其他都要。
2:把ShareSDK的cocos2dx的sample项目里的Classes目录下的文件都复制到你的项目里的Classes目录下。
3:把ShareSDK的cocos2dx的sample项目里的res里的drawable-xhdpi和values目录下的oks_string.xml、ssdk_string.xml复制到你的项目里的res目录下,values-en是国际化需要用到的
4:把ShareSDK的cocos2dx的sample项目里的AndroidManifest.xml里的<activity android:name="cn.sharesdk.framework.ShareSDKUIShell" />的属性和<user-permission>都复制到你的项目里的AndroidManifes.xml里,如果需要集成微信分享还需要设置微信的回调activity,具体如何写可以查阅http://wiki.sharesdk.cn/Android_快速集成指南 的配置AndroidManifes.xml节点。
5:添加代码把ShareSDKUtils.java一定要放在cn.sharesdk目录下,onekeyshare是做快捷分享,onekeyshare也在cn.sharesdk下创建变成cn.sharesdk.onekeyshare,然后把onekeyshare代码复制到你的项目里
6:在主activity里的onCreate方法里添加ShareSDKUtils.prepare()方法。


这里演示的是一个小的Demo集成ShareSDK cocos2dx的分享插件的集成步骤(使用的cocos2dx的版本为2.2.1)
1、从官网下载cocos2dx专用组件 http://sharesdk.cn/Download
解压后的目录如下:
QQ图片20140422221823.jpg

2、使用python创建一个cocos2dx项目
如何使用python创建cocos2dx项目Google一下哦
QQ图片20140423093006.jpg
项目名为:ShareSDKC2DX
包名为:cn.sharesdk.hellocpp

创建后打开cocos2dx根目录里的projects文件夹
QQ图片20140422225933.jpg

3、把proj.android项目导入到eclipse里
QQ图片20140422230212.jpg
eclipse需要安装cdt插件(cdt是用于在eclipse上编写c++程序的插件),如果eclipse已经可以进行C++开发就不用安装此插件
也可以使用cygwin进行编译C/C++代码,这里演示使用的使用CDT
QQ图片20140424093725.jpg

4、从cocos2dx根目录打开cocos2dx->platform->android->java->src
复制org整个目录到刚新建的cocos2dx项目里的pro.android目录里的src目录下
QQ图片20140422231806.jpg
然后刷新eclipse里的项目
QQ图片20140423012720.jpg

5、重新回到从ShareSDK下载的C2DXSample
QQ图片20140422232239.jpg

复制Class整个目录到在cocos2dx建的项目,覆盖替换Classes目录
QQ图片20140422232406.jpg

在proj.android目录下新建assets目录,把Resources资源复制到assets目录下
QQ图片20140423013837.jpg
QQ图片20140423013935.jpg


6、回到从ShareSDK下载的C2DXSample
QQ图片20140422232239.jpg
进入proj.android->jni复制Android.mk替换eclipse项目里的Android.mk文件
QQ图片20140423012926.jpg
jni目录里的Android.mk文件。

7、右键项目选择属性
QQ图片20140422233452.jpg

8、选择C/C++ builder,在build command处填入NDK存放路径\ndk-build.cmd
ndk要使用r9d或者更高版本
QQ图片20140423013139.jpg

9、添加一些环境变量
QQ图片20140423013240.jpg
添加COCOS2DX,也就是cocos2dx解压缩的根目录
添加NDK_ROOT,也就是NDK解压缩的根目录
添加NDK_MODULE_PATH,添加cocos2dx的解压缩的根目录后加上\;E:\cocos2dx\cocos2d-x-2.2.1\cocos2dx\platform\third_party\android\prebuilt
具体如何添加请参考图片

10、设置一下资源的环境变量
QQ图片20140422235010.jpg 添加COCOS2DX,也就是cocos2dx解压缩的根目录

11、构建项目
选中eclipse里的项目
QQ图片20140422235256.jpg
点击Build Project
QQ图片20140423003309.jpg

12、复制ShareSDK下载的C2DX项目的字符串资源和图片资源到eclipse项目里
复制values、values-en、drawable-xhdpi资源
QQ图片20140423004421.jpg

13、复制ShareSDK的jar包到ShareSDKC2DX项目里
一:打开从ShareSDK下载的cocos2dx的Sample目录如下
QQ图片20140425102038.jpg

二:进入proj.android目录
QQ图片20140425102106.jpg

三:打开libs目录
QQ图片20140425102110.jpg
除了armeabi目录不用复制其他都要复制到你建的ShareSDKC2DX项目里的libs目录下

复制后如下图:
QQ图片20140425102606.jpg

14、复制ShareSDK下载的C2DX项目里的ShareSDKUtils.java和onekeyshare到eclipse里的项目
ShareSDKUtils.java一定要放在cn.sharesdk目录下
QQ图片20140425101732.jpg

15、打开ShareSDK下载的C2DX项目里的AndroidManifest.xml文件
复制如下属性到eclipse里的cocos2dx项目里的AndroidManifest.xml配置文件
QQ图片20140423005649.jpg

16、项目要使用utf-8编码格式
设置方法为右击项目选择properties选择Resource
修改Text file encoding为utf-8
QQ图片20140425174750.jpg

17、打开ShareSDK下载的C2DX项目里assets目录
复制ShareSDK.xml配置文件到eclipse里的cocos2dx项目里的assets目录下
QQ图片20140423005940.jpg

18、添加代码
在eclipse里的cocos2dx项目里的启动的activity里的onCreate方法里添加ShareSDKUtils.prepare()代码
QQ图片20140423010235.jpg

19、运行
QQ图片20140423010509.jpg

点击分享正常显示此图就表明集成ShareSDK C2DX成功了,恭喜你
QQ图片20140423012001.jpg

20、ShareSDK.xml配置文件说明
里面配置的信息是你的应用到各个分享平台注册你的应用时所返回的注册信息,把项目的注册信息填写到ShareSDK.xml
详细的JAVA代码说明和配置信息说明请查阅 http://wiki.sharesdk.cn/Android_快速集成指南
此demo不能执行分享功能,因为没有到各个分享平台里注册此应用信息,所以要你的应用到各个分享平台里注册应用信息后把相关的注册信息填写到ShareSDK.xml就能执行分享了,祝你顺利。

分享过程中出现异常请查阅
http://wiki.sharesdk.cn/Android_常见问题

各个平台可以分享那些参数请查阅
http://wiki.sharesdk.cn/Android_不同平台分享内容的详细说明

java层代码解释

java层代码基本上只有ShareSDKUtils一个类,而且java层的代码也仅仅需要调用这个类的prepare方法,此外的可以不理会。但是如果您想修改分享的参数(github上的例子提供的分享参数很少),则需要涉及下面的方法:

 nativeMapToJavaMap(HashMap<String, String>)
 这个方法是将从native层传递上来的分享数据的名称修改为java层可以理解的名称,如果您在native层添加了分享的参数,则需要修改这个方法,将这些参数“翻译”为Java层可以理解的字段,
 这些字段实际上就是不同平台ShareParams的字段,完整列表,可以参考这里
 onekeyShare(HashMap<String, String>)
 这个方法是调用java层快捷分享GUI模块的入口,和上面的方法一样,如果您修改了native层的分享参数,这个方法里面的方法也需要增删。

需要特别注意的是,ShareSDKUtils.prepare()必须在主线程中调用,而且需要在触发Share SDK的任何操作前触发,否则会因为没有初始化ShareSDKUtils而导致错误。

native层代码解释

直接使用jni的方式集成Share SDK并不是Android平台所推荐的做法,实践证明,这种方式需要涉及大量的native-java反射操作,低效且容易发生错误,但是这种方法可以在编写c/c++代码时屏蔽平台差异,也可以当作是对Plugin-x的补充。
native层的代码基本上是反射操作,开发者可以完全不理会其实现,直接调用C2DXShareSDK上的方法完成需要的功能即可,如果需要修改其中的功能,可以到ShareSDKUtils中改动,但是需要注意下面的方法:

 Java_cn_sharesdk_ShareSDKUtils_onCancel
 Java_cn_sharesdk_ShareSDKUtils_onComplete
 Java_cn_sharesdk_ShareSDKUtils_onError
 这三个方法是java层的操作回调,不应该修改方法的名称
 hashmapToCCDictionary及其引用的方法
 这个方法的用途主要是将包含操作返回的json容器hashmap转成ccdictionary
 CCDictionaryToHashMap
 这个方法是hashmapToCCDictionary的逆操作,但事实上这个方法只能转换key和value都是string的数据
 setPlatformDevInfo
 这不是Android平台所必需的方法,可以通过ShareSDK.xml来更简便完成应用信息配置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值