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
解压后的目录如下:

2、使用python创建一个cocos2dx项目
如何使用python创建cocos2dx项目Google一下哦

项目名为:ShareSDKC2DX
包名为:cn.sharesdk.hellocpp

创建后打开cocos2dx根目录里的projects文件夹

3、把proj.android项目导入到eclipse里

eclipse需要安装cdt插件(cdt是用于在eclipse上编写c++程序的插件),如果eclipse已经可以进行C++开发就不用安装此插件
也可以使用cygwin进行编译C/C++代码,这里演示使用的使用CDT

4、从cocos2dx根目录打开cocos2dx->platform->android->java->src
复制org整个目录到刚新建的cocos2dx项目里的pro.android目录里的src目录下

然后刷新eclipse里的项目

5、重新回到从ShareSDK下载的C2DXSample

复制Class整个目录到在cocos2dx建的项目,覆盖替换Classes目录

在proj.android目录下新建assets目录,把Resources资源复制到assets目录下


6、回到从ShareSDK下载的C2DXSample

进入proj.android->jni复制Android.mk替换eclipse项目里的Android.mk文件

jni目录里的Android.mk文件。

7、右键项目选择属性

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

9、添加一些环境变量

添加COCOS2DX,也就是cocos2dx解压缩的根目录
添加NDK_ROOT,也就是NDK解压缩的根目录
添加NDK_MODULE_PATH,添加cocos2dx的解压缩的根目录后加上\;E:\cocos2dx\cocos2d-x-2.2.1\cocos2dx\platform\third_party\android\prebuilt
具体如何添加请参考图片

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

11、构建项目
选中eclipse里的项目

点击Build Project

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

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

二:进入proj.android目录

三:打开libs目录

除了armeabi目录不用复制其他都要复制到你建的ShareSDKC2DX项目里的libs目录下

复制后如下图:

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

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

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

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

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

19、运行

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

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来更简便完成应用信息配置

更多相关文章

  1. [置顶] Android(安卓)调用js,传对象到js里面使用addJavascriptInt
  2. Android中AsyncTask的简单用法
  3. 我的Android进阶之旅------>Android中解析XML 技术详解---->SAX
  4. 实现三星S3蒲公英水波纹效果(二)——Renderscript准备篇
  5. Android(安卓)应用界面显示流程
  6. Android(安卓)WebView中javascript和java的互相调用
  7. Android(安卓)调试:java 跨工程调试 android 项目
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android onSaveInstanceState和onRestore
  2. android studio 55[2]线程更新UI handler
  3. Android Applications Tutorial 13. Inte
  4. 自定义android 系统映像与皮肤,并运行
  5. Android 录音 与播放本地音乐功能的实现
  6. android安装apk程序
  7. Android PMEM的机制和原理
  8. Android 模拟器检测记录
  9. Speed Up and Back Up Your Rooted Andro
  10. android 打开wifi