我所理解的cocos2d x-x3.2中怎么做ShareSdk的步骤

Cocos2d-x 3.0中集成社交分享ShareSDK的详细步骤和常见问题解决
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Cocos2d-x 3.0中集成社交分享ShareSDK的详细步骤和常见问题的解决方法以及需要注意的问题,需要的朋友可以参考下
给自己的手机游戏增加些社交分享功能,有助于游戏宣传和提升知名度,是一种不错的社交营销手段。国内这方面的第三方插件有不少,比如ShareSDK、友 盟分享组件、Baidu分享组件等,之前在研究2.2.2版本时,集成了ShareSDK这个组件,这次迁移到Cocos2d-x 3.0rc2依旧选择集成ShareSDK,这里就来说说集成的过程,遇到的一些问题以及解决方法。这里仅以Android平台游戏集成为例。
一、功能描述、SDK版本和帐号准备
功能大致是这样的:在游戏中设置一个按钮,点击这个按钮,弹出知名社交平台的分享图标集窗口,用户选择分享目标后,相关信息分享到对应的社交平台。分享结果通知通过Toast显示在屏幕的下方。
这次依旧使用ShareSDK for Android 2.3.7版本(ShareSDK-Android-2.3.7),Cocos2d-x的版本为3.0rc2。
集成前,你需要有一个基于Cocos2d-x 3.0rc2的可运行的Android平台游戏project,我们的集成就基于该project,这里我们的project名为GameDemo,GameDemo的源码结构大致是: 代码如下:GameDemo/&&& – Classes/&&& – proj.android/&&& – Resources/&&& – cocos2d/&&& – CMakeLists.txt&&& – … …
使用ShareSDK前,你需要在各大主流社交平台(微信、微博)申请开发者帐号以及游戏接入权限(app_key、app_secret)等,当然在ShareSDK站点也应该有自己的帐号和应用AppKey,这些申请的审核需要几个工作日,甚至更长。
二、ShareSDK集成步骤
按照ShareSDK官方manual说法,Cocos2d-x集成ShareSDK有三种方式,之前在Cocos2d-x 2.2.2引擎中采用的是专用组件集成的方式,该组件(C2DXShareSDKSample)可以在这里下载(/ShareSDKPlatform/C2DXShareSDKSample,该组件近期已经fix了我之前发现的bug)。
1.jar包集成
这次我们主要做微博、微信的社交分享,因此只需要微博、微信相关jar包。在C2DXShareSDKSample/proj.android/libs下,我们找到以下几个jar包: 代码如下:& -rw-rw-r– 1 tonybai tonybai& 97K& 4月& 8 18:10 mframework.jar& -rw-rw-r– 1 tonybai tonybai 112K& 4月& 8 17:39 ShareSDK-Core-2.3.7.jar& -rw-rw-r– 1 tonybai tonybai& 19K& 4月& 8 17:39 ShareSDK-SinaWeibo-2.3.7.jar& -rw-rw-r– 1 tonybai tonybai 4.3K& 4月& 8 17:39 ShareSDK-Wechat-2.3.7.jar& -rw-rw-r– 1 tonybai tonybai& 29K& 4月& 8 17:39 ShareSDK-Wechat-Core-2.3.7.jar& -rw-rw-r– 1 tonybai tonybai 4.6K& 4月& 8 17:39 ShareSDK-Wechat-Favorite-2.3.7.jar& -rw-rw-r– 1 tonybai tonybai 4.4K& 4月& 8 17:39 ShareSDK-Wechat-Moments-2.3.7.jar把这些jar包文件Copy到GameDemo/proj.android/libs下。
2. 配置文件与资源部分集成
修改GameDemo/proj.android/AndroidManifest.xml文件,在application标签下,添加如下Activity标签: 代码如下:&&&&&&& &activity&&&&&&&&&&& android:name="cn.sharesdk.framework.ShareSDKUIShell"&&&&&&&&&&& android:configChanges="keyboardHidden|orientation|screenSize"&&&&&&&&&&& android:screenOrientation="portrait"&&&&&&&&&&& android:theme="@android:style/Theme.Translucent.NoTitleBar"&&&&&&&&&&& android:windowSoftInputMode="stateHidden|adjustResize" &&&& &/activity&&&& &activity&&&&&&&&&&& android:name=".wxapi.WXEntryActivity"&&&&&&&&&&& android:configChanges="keyboardHidden|orientation|screenSize"&&&&&&&&&&& android:exported="true"&&&&&&&&&&& android:screenOrientation="portrait"&&&&&&&&&&& android:theme="@android:style/Theme.Translucent.NoTitleBar" /&
将C2DXShareSDKSample/proj.android/res下的如下目录中的文件复制到GameDemo/proj.android/res下: 代码如下:&& drawable-hdpi/& drawable-ldpi/& drawable-mdpi/ && drawable-xhdpi/& layout/& values/& values-en/
注意,类似icon.png这种文件就不要复制了,自己做一下判断就好。
3. C++部分代码集成
将C2DXShareSDKSample/Classes下的C2DXShareSDK文件夹Copy到GameDemo/Classes下面。
由于Cocos2d-x 3.0rc2的类命名发生了变化,我们需要对C2DXShareSDK中使用到的引擎中的类名以及方法名进行修改。但实际上Cocos2d-x 3.0rc2考虑到了一些兼容性的问题,大部分名字通过cocos2d/cocos/deprecated/CCDeprecated.h中定义的typedef得以保留,虽然这些名字已经被建议deprecated了。rc2中CCObject被改名为Ref了,这个我们需要手工在C2DXShareSDK进行修改。
另外ShareSDK组件在实现时大量使用了CCDictionary、CCArray和CCString,而这三个类在Cocos2d-x 3.0rc2中均被deprecated了,但我们依然可以使用,所以我们可以不做修改。但以后随着cocos2d-x版本的演进,这些类很可能被彻底移除出引擎,我们就需要重新使用其替代品进行实现了。
此外我们还需要手工修改一下C2DXShareSDK/Android/JSON/CCJSONConverter.cpp文件中的getObjJson方 法,因为rc2中CCDictionary、CCString、CCArray这些类的真实名称都已经换成了__Dictionary、__String 和__Array,CCDictionary、CCString、CCArray只是些typedef,因此要像下面这样做些修改(如果你是集成 cocos2d-x 2.x.x版本,则无需做下面修改): 代码如下:cJSON * CCJSONConverter::getObjJson(Ref * obj){&&& std::string s = typeid(*obj).name();&&& if(s.find("__Dictionary")!=std::string::npos){&&&&&&& cJSON * json = cJSON_CreateObject();&&&&&&& convertDictionaryToJson((CCDictionary *)obj, json);&&&&&&&&&& }else if(s.find("__Array")!=std::string::npos){&&&&&&& cJSON * json = cJSON_CreateArray();&&&&&&& convertArrayToJson((CCArray *)obj, json);&&&&&&&&&& }else if(s.find("__String")!=std::string::npos){&&&&&&& CCString * s = (CCString *)&&&&&&& cJSON * json = cJSON_CreateString(s-&getCString());&&&&&&&&&& }else if(s.find("CCNumber")!=std::string::npos){&&&&&&& CCNumber * n = (CCNumber *)&&&&&&& cJSON * json = cJSON_CreateNumber(n-&getDoubleValue());&&&&&&&&&& }else if(s.find("CCNull")!=std::string::npos){&&&&&&& cJSON * json = cJSON_CreateNull();&&&&&&&&&& }&&& CCLog("CCJSONConverter encountered an unrecognized type");&&& return NULL;}
CCNumber和CCNull是ShareSDK组件自己实现的类名,这里无需修改。
接下来我们需要在AppDelegate.cpp中对ShareSDK做初始化了: 代码如下:bool AppDelegate::applicationDidFinishLaunching() {&&& … …&&& initShareSDK();&&& … ..}
void AppDelegate::initShareSDK(){&&& // sina weibo&&& CCDictionary *sinaConfigDict = CCDictionary::create();&&& sinaConfigDict-&setObject(CCString::create("YOUR_WEIBO_APPKEY"), "app_key");&&& sinaConfigDict-&setObject(CCString::create("YOUR_WEBIO_APPSECRET"), "app_secret");&&& sinaConfigDict-&setObject(CCString::create(""), "redirect_uri");&&& C2DXShareSDK::setPlatformConfig(C2DXPlatTypeSinaWeibo, sinaConfigDict);
&&& // wechat&&& CCDictionary *wcConfigDict = CCDictionary::create();&&& wcConfigDict-&setObject(CCString::create("YOUR_WECHAT_APPID"), "app_id");&&& C2DXShareSDK::setPlatformConfig(C2DXPlatTypeWeixiSession, wcConfigDict);&&& C2DXShareSDK::setPlatformConfig(C2DXPlatTypeWeixiTimeline, wcConfigDict);&&& C2DXShareSDK::setPlatformConfig(C2DXPlatTypeWeixiFav, wcConfigDict);
&&& C2DXShareSDK::open(CCString::create("YOUR_SHARESDK_APPKEY"), false);}
在Share按钮的事件回调函数中调用ShareSDK的接口进行社交平台分享: 代码如下:void GameScene::menuShareCallback(Ref* sender){&&& Dictionary *content = Dictionary::create();
&&& content-&setObject(String::create("ShareSDK for Cocos2d-x 3.0rc2社交分享测试。")&&&&&&&&&&&&&&&&&&&&&&& , "content");&&& content-&setObject(String::create("ShareSDK分享测试"), "title");&&& content-&setObject(String::create(""), "titleUrl");&&& content-&setObject(String::create(""), "url");&&& content-&setObject(String::create("Tony Bai"), "site");&&& content-&setObject(String::create(""), "siteUrl");&&& content-&setObject(String::createWithFormat("%s", YOUR_LOCAL_IMAGE_PATH)&&&&&&&&&&&&&&&&&&&&&& , "image");&&& content-&setObject(String::createWithFormat("%d", C2DXContentTypeNews)&&&&&&&&&&&&&&&&&&&&&& , "type");
&&& C2DXShareSDK::showShareMenu(NULL, content, CCPointMake(100, 100),&&&&&&&&&&&&&&&&&&&&&&&&& C2DXMenuArrowDirectionLeft, shareResultHandler);}
void shareResultHandler(C2DXResponseState state,&&&&&&&&&&&&&&&&&&&&&&& C2DXPlatType platType,&&&&&&&&&&&&&&&&&&&&&&& Dictionary *shareInfo,&&&&&&&&&&&&&&&&&&&&&&& Dictionary *error){&&& AppDelegate *app = (AppDelegate*)Application::getInstance();&&& switch (state) {&&&&&&& case C2DXResponseStateSuccess:&&&&&&&&&&& CCLog("Share Ok");&&&&&&&&&&& app-&showShareResultToast("分享成功");&&&&&&&&&&&&&&&&&& case C2DXResponseStateFail:&&&&&&&&&&& app-&showShareResultToast("分享失败");&&&&&&&&&&& CCLog("Share Failed");&&&&&&&&&&&&&&&&&& default:&&&&&&&&&&&&&& }}
showShareResultToast实现如下: 代码如下:void AppDelegate::showShareResultToast(const char *msg){&&& JniMethodI&&& if (JniHelper::getStaticMethodInfo(t, "YOUR_ACTIVITY_NAME",&&&&&&& "showShareResultToast", "(Ljava/lang/S)V")) {&&&&&&& jstring jmsg = t.env-&NewStringUTF(msg);&&&&&&& t.env-&CallStaticVoidMethod(t.classID, t.methodID, jmsg);&&&&&&& if (t.env-&ExceptionOccurred()) {&&&&&&&&&&& t.env-&ExceptionDescribe();&&&&&&&&&&& t.env-&ExceptionClear();&&&&&&&&&&&&&&&&&& }&&&&&&& t.env-&DeleteLocalRef(t.classID);&&& }}
4. Java部分代码集成
在GameDemo/proj.android/src下面建立cn/sharesdk路径,将C2DXShareSDKSample /proj.android/src/cn/sharesdk下的onekeyshare和ShareSDKUtils.java Copy到GameDemo/proj.android/src/cn/sharesdk下面。
将ShareSDK-Android-2.3.7.zip解压后的ShareSDK for Android/Src/wxapi Copy到GameDemo/proj.android/src/com.tonybai.game/下。
修改GameDemo/proj.android/src/com.tonybai.game/GameDemoActivity.java文件: 代码如下:import android.widget.Timport cn.sharesdk.ShareSDKU…
public class GameDemoActivity extends Cocos2dxActivity {
&&& private static C
&&& private static Handler notifyHandler = new Handler() {&&&&&&& public void handleMessage(Message msg) {&&&&&&&&&&& switch (msg.what) {&&&&&&&&&&&&&&& case 1:&&&&&&&&&&&&&&&&&&& String message = (String) msg.&&&&&&&&&&&&&&&&&&& Toast.makeText(context, message,&&&&&&&&&&&&&&&&&&&&& Toast.LENGTH_SHORT).show();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& default:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&& }&&& };
&&& @Override&&& protected void onCreate(Bundle savedInstanceState) {&&&&&&& super.onCreate(savedInstanceState);&&&&&&& context =&&&&&&& ShareSDKUtils.prepare();&&&&&&& ShareSDKUtils.initSDK("YOUR_SHARESDK_APPKEY", true);&&& }
&&& public static void showShareResultToast(String result) {&&&&&&& Message msg = new Message();&&&&&&& msg.what = 1;&&&&&&& msg.obj =&&&&&&& notifyHandler.sendMessage(msg);&&& }
&&& @Override&&& public void onDestroy() {&&&&&&& ShareSDKUtils.stopSDK();&&&&&&& super.onDestroy();&&& }}
三、问题与解决方法
按照上面的集成方法修改后,通过cocos编译app,在模拟器运行GameDemo,点击Share,理论上屏幕下方会出现ShareSDK的分享窗口,选择“新浪微博”图标,会打开“图文分享”内容窗口,点击窗口右上角的“分享”即可。
【问题1】“图文分享”窗口内容可编辑,并且总是弹出软键盘,影响体验。&期望:内容不可编辑,默认不弹出软键盘&解决方法:&&&&& 打开proj.android/src/cn/sharesdk/onekeyshare/EditPage.java,做如下修改:
&&&&& 将窗口的软输入方式默认改为SOFT_INPUT_STATE_HIDDEN。 代码如下:&&&&& public void setActivity(Activity activity) {&&&&&&& super.setActivity(activity);&&&&&&& if (dialogMode) {&&&&&&&&&&& activity.setTheme(android.R.style.Theme_Dialog);&&&&&&&&&&& activity.requestWindowFeature(Window.FEATURE_NO_TITLE);&&&&&&& }&&&&&&& activity.getWindow().setSoftInputMode(&&&&&&&&&&&&&&&&&& //WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);&&&&&&&&&&&&&&&&&& WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);//default: hidden&&& }&&& 在initPageView中增加一行:etContent.setKeyListener(null)。让窗口内容无法修改。 代码如下:&&& private void initPageView() {&&&&&&&& … …&&&&&&& // 文字输入区域&&&&&&& etContent = new EditText(getContext());&&&&&&& etContent.setGravity(Gravity.LEFT | Gravity.TOP);&&&&&&& etContent.setBackgroundDrawable(null);&&&&&&& etContent.setText(String.valueOf(reqData.get("text")));&&&&&&& etContent.setKeyListener(null);//make the edittext uneditable&&&&&&& etContent.setLayoutParams(lpEt);&&&&&&& … …&&& }【问题2】向微博分享,点击“分享”后,过一会程序异常停止。
&原因分析:&&&&&&& 通过调试观察,发现ShareSDK在解析从Weibo收到的Json包时出现内存违法访问。具体位置是在解析一个数组对象时出现的问题。 ShareSDK用CCArray来存储Json中的数组对象。该问题在cocos2d-x 2.2.2版本中不会出现,但在cocos2d-x 3.0rc2版本中会出现。经代码对比发现,3.0rc2版本中的CCArray的实现与2.2.2 CCArray实现有很大不同,似乎是做了较大重构,暂不能确定是否是3.0rc2版本中CCArray实现的bug。
&解决方法:由于后续的分享结果通知成功与否只需要根据分享的状态来决定,因此我们只需解析出"status"、“action”和“platform” 这三个CCNumber类型字段的值即可。CCArray类型的对象我们并不需要,因此我们只需绕过对Array类型字段的解析和存储即可,修改如下: 代码如下:// Classes/C2DXShareSDK/Android/JSON/CCJSONConverter.cpp
void CCJSONConverter::convertJsonToDictionary(cJSON *json, CCDictionary *dictionary){&&& dictionary-&removeAllObjects();&&& cJSON * j = json-&&&& while (j) {&&&&&&& if (j-&type == cJSON_Number) {&&&&&&&&&&& Ref * obj = getJsonObj(j);&&&&&&&&&&& dictionary-&setObject(obj, j-&string);&&&&&&& }&&&&&&& j = j-&&&& }}
在使用ShareSDK做社交分享时,注意下面两个现象:1) 第一次进行微博或微信分享时,会打开授权页面,授权后才能分享成功;2) 微信分享窗口只有在手机联网状态下才能打开。如果手机无法联网,那微信好友、朋友圈和收藏分享将无法打开分享窗口,也不会有什么提示。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具cocos2dx项目如何集成shareSDK分享
Colin-Liao 个人原创,欢迎转载,转载请注明地址。Colin-Liao的专栏地址https://blog.csdn.net/focusdeveloper
/cocos2d-x快速集成指南
/_快速集成指南
/iOS快速集成指南
然后下载所谓的适合cocos2dx的demo(既文档一中的demo),先吐吐槽,这个demo写得真是粗糙,还有官网的文档也写得好不是很仔细啊,第一次弄集成真的要仔细了。不过这个SDK用起来还是不错。
先说集成android项目吧,到文档2中下载android集成的sdk,然后参照文档2的指南,将MainLibs和OnekeyShare项目导入到工程中。完成之后,应该如文档一中说的那样
(1)快捷分享的java
(2)如果您集成微信或者易信,应该具备wxapi或者yxapi的包
(3)您的资源文件夹中应该已经添加了Share SDK和OnekeyShare的图片和文字资源
(4)您项目的libs目录下应该已经具备Share SDK的jar包。
(5)assets目录下,除了cocos2d-x的资源以外,还有一个ShareSDK.xml的文件
然后到文档android的shareSDK中拷贝出shareSDK.xml加入到自己项目的assets目录下。这个xml是配置你需要集成哪些平台的,其中xml每一个平台有一个参数,如果要集成则为真,不集成则为假。
然后是配置好AndroidManifest.xml这个xml,配置如文档2中所说。
之后到文档1中的cocos2dx的demo中的pro.android文件夹下面拷贝出cn.sharesdk.ShareSDKUtils.java,这个文件(保留前两级文件夹的名字)到自己项目的src目录下。然后在项目的cocos2dxactivity.java类的oncreate函数中加入ShareSDKUtils.prepare()
文档中到这里就完了,项目运行到这里也就崩溃。报出sharesdk没有初始化的错误。这里应该到ShareSDKUtils.java类中将prepare()函数改为public static void prepare() {
UIHandler.prepare();
if (context == null) {
context = Cocos2dxActivity.getContext().getApplicationContext();
ShareSDK.initSDK(context);
}完成android的sharesdk的集成之后再照文档1中加入iOS和android公有部分。这样android的shareSDK就集成好了。深入理解 cocos2d-x 坐标系
弄懂坐标系是开始开发的重要的一步,为了不让大家头晕,现在我深入的为大家讲解一下,
首先我们添加两个测试精灵(宽:27,高:40)到场景里面:
CCSprite *sprite1 = CCSprite::create(player.png);
sprite1-&setPosition(ccp(20, 40));
sprite1-&setAnchorPoint(ccp(0, 0));
this-&addChild(sprite1);
CCSprite *sprite2 = CCSprite::create(player.png);
sprite2-&setPosition(ccp(-15, -30));
sprite2-&setAnchorPoint(ccp(1, 1));
this-&addChild(sprite2);
然后调试,在场景中大概是下图这样显示(以左下角为坐标原点,从左到右为x方向,从下到上为y方向,废话了:)):
在cocos2d-x中,每个精灵都有一个锚点,以后对精灵的操作(比如旋转)都会围绕锚点进行,我们暂且可以看作是精灵的中心位置,一般来说有每个方向有三种可能的值:0,0.5,1。上图中红色圆点即为各自的锚点,sprite1 锚点为 (0,0) 左下角,sprite2锚点为(1,1)在右上角。
现在我们来看看坐标系转换,同样地,我们先写点测试代码:
CCPoint p1 = sprite2-&convertToNodeSpace(sprite1-&getPosition());
CCPoint p2 = sprite2-&convertToWorldSpace(sprite1-&getPosition());
CCPoint p3 = sprite2-&convertToNodeSpaceAR(sprite1-&getPosition());
CCPoint p4 = sprite2-&convertToWorldSpaceAR(sprite1-&getPosition());
接着,再打印出各点的x,y值:
CCLog(p1:%f,%f, p1.x, p1.y);
CCLog(p2:%f,%f, p2.x, p2.y);
CCLog(p3:%f,%f, p3.x, p3.y);
CCLog(p4:%f,%f, p4.x, p4.y);
现在开始分析这四个常用坐标系转换函数转换后的值(有兴趣的同学可以先算一算)。
由于cocos2d-x的坐标系(本地坐标系)是以左下角为坐标原点的,所以 sprite1和sprite2的坐标原点在上图的位置分别是(20,40)、(-42,-70),那么很明显的:
p1就是sprite1锚点相对于sprite2原点来说在sprite2坐标系中的位置,经过对比上图,我们可以得到(20-(-42),40-(-70))即(62,110)
p2就是sprite1锚点相对于sprite2原点来说在上图坐标系中的位置,这样我们可以计算出sprite1在sprite2坐标系中的位置:(20+(-42),40+(-70)),即(-22,-30)
p3就是sprite1锚点相对于sprite2锚点来说在sprite2坐标系中的位置,也就是(20-(-15),40-(-30)),即(35,70)
p4就是sprite1锚点相对于sprite2锚点来说在上图坐标系中的位置,也就是(20+(-15),40+(-30)),即(5,10)
现在我们可以知道,计算方法都是用sprite1的坐标去加减sprite2的坐标,针对本地坐标系就用减法,针对世界坐标系就用加法。
好了,方法出来了,有兴趣的可以做计算一下以下几个坐标的值(先不要上机调试),然后回复我,差不多10个回复后我会贴出正确答案:
CCPoint p1 = sprite1-&convertToNodeSpace(sprite2-&getPosition());
CCPoint p2 = sprite1-&convertToWorldSpace(sprite2-&getPosition());
CCPoint p3 = sprite1-&convertToNodeSpaceAR(sprite2-&getPosition());
CCPoint p4 = sprite1-&convertToWorldSpaceAR(sprite2-&getPosition());cocos2d-x集成sharesdk做微信分享android,ios - CSDN博客
cocos2d-x集成sharesdk做微信分享android,ios
这些天做了一下cocos2d-x的微信分享功能,稍有心得,整理了一下,出了个文档,欢迎大家点击查看
本文已收录于以下专栏:
相关文章推荐
第一:集成微信,
社交分享功能有助于游戏宣传和提升知名度,是一种不错的社交营销手段。 
        ShareSDK是一种社会化分享组件,为iOS、Android、WP8 的APP提供社会化功能,集成了一些常用的...
http://blog.csdn.net/song_hui_xiang/article/details/
社交分享功能有助于游戏宣传和提升知名度,是一种不错的社交营销...
分享的原理很简单与iOS或Android下没有什么太大的区别。这篇是iOS平台的之后再写一篇Android平台的。
需要注意的C++如何去调用OC的方法,解决这个问题就解决了。
我们先说一下思路C...
(二)集成Facebook分享:
他的最新文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)cocos2dx项目如何集成shareSDK分享 - CSDN博客
cocos2dx项目如何集成shareSDK分享
cocos2dx项目如何集成shareSDK分享
Colin-Liao 个人原创,欢迎转载,转载请注明地址。Colin-Liao的专栏地址http://blog.csdn.net/focusdeveloper
1、 /cocos2d-x快速集成指南
2、 /Android_快速集成指南
3、 /iOS快速集成指南
然后所谓的适合cocos2dx的demo(既文档一中的demo),先吐吐槽,这个demo写得真是粗糙,还有官网的文档也写得好不是很仔细啊,第一次弄集成真的要仔细了。不过这个SDK用起来还是不错。
先说集成android项目吧,到文档2中下载android集成的sdk,然后参照文档2的指南,将MainLibs和OnekeyShare项目导入到工程中。完成之后,应该如文档一中说的那样
(1)快捷分享的java源码
&(2)如果您集成微信或者易信,应该具备wxapi或者yxapi的包
&(3)您的资源文件夹中应该已经添加了Share
SDK和OnekeyShare的图片和文字资源
&(4)您项目的libs目录下应该已经具备Share
SDK的jar包。
&(5)assets目录下,除了cocos2d-x的资源以外,还有一个ShareSDK.xml的文件
然后到文档android的shareSDK中拷贝出shareSDK.xml加入到自己项目的assets目录下。这个xml是配置你需要集成哪些平台的,其中xml每一个平台有一个参数,如果要集成则为真,不集成则为假。
然后是配置好Manifest.xml这个xml,配置如文档2中所说。
之后到文档1中的cocos2dx的demo中的pro.android文件夹下面拷贝出cn.sharesdk.ShareSDKUtils.java,这个文件(保留前两级文件夹的名字)到自己项目的src目录下。然后在项目的cocos2dxactivity.java类的oncreate函数中加入ShareSDKUtils.prepare()
文档中到这里就完了,项目运行到这里也就崩溃。报出sharesdk没有初始化的错误。这里应该到ShareSDKUtils.java类中将prepare()函数改为
prepare() {
&&&&&&&&UIHandler.prepare();
&&&&&&&&if
(context == null)
&&&&&&&&&&&&context
= Cocos2dxActivity.getContext().getApplicationContext();
&&&&&&&&&&&&ShareSDK.initSDK(context);
完成android的sharesdk的集成之后再照文档1中加入iOS和android公有部分。这样android的shareSDK就集成好了。
本文已收录于以下专栏:
相关文章推荐
因为以前对接过C++版的ShareSDK,所以这次对接起来比较轻松,然而这次对接lua版本的,所以就没有采用cocos2dx的文档,而是IOS和Android分开对接的。
先说一下IOS平台:
一、前提条件
1.微信开放平台已经创建应用
2.shareSDK中创建IOS应用
二、项目配置
1.cocos2dx工程能够运行并没有错误
2.下载shareSDK IOS和 coc...
官方教程贴: 
/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/#.E5.8F.AF.E9...
主AppControlller下增加AGViewDelegate类, 后面提供代码
AppControlller.h
#import &AGViewDelegate.h&
+(AGViewDel...
使用VS插件在VS上编辑和调试Quick-Cocos2d-x的Lua代码
原文出处:/sslin/archive//3022684.html
1:C++中调用js方法:
问题:ios中当用户通过ho...
他的最新文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 cocos2d x下载 的文章

 

随机推荐