文档章节

Cocos2d-x shareSDK

piggybear
 piggybear
发布于 2015/02/16 10:32
字数 1933
阅读 19
收藏 0

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

本文转载自:http://blog.csdn.net/aa294194253/article/details/38481269

共有 人打赏支持
piggybear
粉丝 3
博文 237
码字总数 37552
作品 0
西安
技术主管
ShareSDK微信、QQ登录,直接代码可用

ShareSDK都封装好第三方登录的方法了,非常方便调用,直接拷贝下面的方法,即可实现第三方登录。 1、微信登录方法 - (void)clickedWxLogin { if ([ShareSDK hasAuthorized:SSDKPlatformTypeW...

远航Yang
2017/10/25
0
0
利用插件化技术调用ShareSDK减小应用体积

一 引言: ShareSDK是非常棒的移动社会化分享和评论工具,相信我们在开发应用过程中都离不开它。但是当我们集成ShareSDK时候同样会遇到一些问题。 1. ShareSDK包比较大,组合国内多家分享平台...

梁大帅
2015/03/30
0
2
Android进阶之使用第三方平台ShareSDK实现新浪微博的一键分享功能

在公司最近的一个项目中,需要实现一键分享功能,在这里我使用的是第三方平台ShareSDK,将使用经验与大家分享 先看效果图 主界面 分享界面 由于第一次使用,所以需要先进行新浪授权,授权界面...

墨梅
2014/05/08
0
12
ShareSDK [iOS常见问题] 关于使用QQ做第三方登录的问题!

注意:QQ本身没有授权功能,所以想要使用QQ做第三方登录必须通过QQ空间来实现! 第一步:集成ShareSDK(步骤同集成分享的一样,如果已经集成过就不用再重新集成了),这里需要注意的是,由于...

SoulJa
2015/07/27
0
0
Unity3D接入ShareSDK的微信分享功能

因为项目中需要加一个分享的功能,所以使用了ShareSDK(吐槽下,官网下载速度太慢了)。当然,shareSDK提供的功能要比这个要多很多,比如短信验证码,第三方登录等等。官网链接地址:https:/...

tel17610887670
04/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring 容器实现对bean的管理(注解方式解析,源码阅读)

因为最近在研究学习spring boot,所以这里想详细学习回顾了一下spring 容器对bean的一些管理方式和部分源码学习。 首先初始类AnnotationConfigApplicationContext,简单源码查看,支持两个参...

小海bug
13分钟前
0
0
数据结构:二分查找 java

二分查找的前提是有序存储,利用顺序存储和元素排序 /** * 二分查找,查找成功,返回下标记 * @param values * @param begin * @param end * @param key * @param <T> * @ret...

京一
31分钟前
0
0
@SpringBootApplication 注解

@SpringBootApplication注解是一个组合注解,包含以下注解 @Target(ElementType.TYPE) 注解的作用目标 @Retention(RetentionPolicy.RUNTIME) Reteniton的作用是定义被它所注解的注解保留多久,...

java.刘
44分钟前
0
0
sentinel自定义DataSource实战

序 本文主要研究一下如何自定义sentinel的DataSource,这里以jdbc为例。 maven <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sen......

go4it
今天
1
0
xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?

问题: 用xgboost/gbdt在在调参的时候把树的最大深度调成6就有很高的精度了。但是用DecisionTree/RandomForest的时候需要把树的深度调到15或更高。用RandomForest所需要的树的深度和Decisio...

tantexian
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部