如何在Cocos2d-x中集成安卓版微信SDK
方法/步骤
1.如果能在Cocos2d-x中集成微信SDK,让游戏能分享给好友或者朋友圈,那对游戏推广将会是非常有利的。好了,本文就是手把手地教大伙如何在Cocos2d-x中集成微信SDK。
先看下效果分享给好友,点击即可跳转链接:
分享到朋友圈,点击即可跳转链接:
2.环境
OS: Mac OSX
IDE: Xcode v5.11 and Eclipse ADT v22.3
Android SDK:4.3
Adnroid NDK:r9d
Cocos2d-x 3.2release
3.创建Cocos2d-x工程这里不再详述,网上的资料多如牛毛了。这里我按自己习惯的方式来。(1)命令行创建Cocos2dxWechat项目
$ cocos new -p com.fusijie.cocos2dxwechat -l cpp -d . Cocos2dxWechat
(2)交叉编译生成so文件
$ cd Cocos2dxWechat/proj.android/
$ ./build_native.py
(3)导入Eclipse生成APK导入libcocos2dx项目和Cocos2dxWechat项目到Eclipse中。在真机中成功运行Cocos2dxWechat.apk。4.申请创建微信应用这一步主要是在微信开放平台上申请创建移动应用,获取AppID。微信开放平台的网址(1)注册帐号,进入管理中心,点击创建移动应用。(2)第一步是填写应用名,描述,图标等等。如下图。
(3)填写应用官网,勾选Android应用,填写签名,包名等等。如下图。
注意:这里需要特别注意的是应用签名这一项。在第三步的时候,真机中成功运行Cocos2dxWechat.apk之后,我们需要从微信开放平台下载一个签名生成软件GenSignature
安装签名生成后,打开软件输入游戏包名获取即可。
这里的签名和游戏的包名和keystore是相关联的,如果修改了包名或者更换了keystore,必须同步更新微信开放平台管理中心的信息,防止失效。本示例采用的是debug签名。在完成以上工作后,提交审核即可。说是7天,实际上一般1~2天就审核过了。5.集成微信SDK刚才都是铺垫,这里开始才是进入主题了。要在Cocos2d-x调用微信安卓SDK,Jni跑不掉的。这里只演示如何进行分享到朋友圈和分享给好友,微信SDK还有很多高级的功能,如支付,收藏等等接口,有需要自行参考文档(移动应用开发)进行开发。
这里主要分成3部分来解释:
微信SDK下载,jar包导入
Android代码
C++代码
(1)下载微信SDK
(2)打开下载的Android_SDK.zip。解压,将lib目录下的libammsdk.jar拷到Cocos2dxWechat项目下的libs目录。(3)右键单击工程,选择Build Path中的Configure Build Path...,选中Libraries这个tab,并通过Add Jars...导入工程libs目录下的libammsdk.jar文件。
(4)在AppActivity中添加成员变量
private static final String APP_ID = "wx81115d2aa55710fa";//AppID,从第四步获取
private static IWXAPI api;//微信API接口
private static AppActivity instance;//类静态实例,为了方便后面静态函数的调用
(5)注册到微信打开AppActivity,在onCreate()中调用regToWX()注册到微信
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
instance = this;
regToWX();
}
private void regToWX(){
api = WXAPIFactory.createWXAPI(this, APP_ID, true);
api.registerApp(APP_ID);
}
(6)由于这里采用的分享示例传递了一张icon,所以需要额外的一个bitmap的解析类Util类,这个类可以到微信官方SDK demo下载,也可以在本示例中下载(早期的SDK版本这个类是集成在微信SDK中)。icon放在res目录下的drawable目录,我这里偷个懒直接使用了应用icon。(7)分享给好友
public static void sendMsgToFriend(){
if(api.openWXApp())
{
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = "";
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = "Tittle";
msg.description = "Description";
Bitmap thumb = BitmapFactory.decodeResource(instance.getResources(), R.drawable.icon);
msg.thumbData = Util.bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;
api.sendReq(req);
}
else
{
Toast.makeText(instance, "未安装微信", Toast.LENGTH_SHORT).show();
}
}
(8)分享到朋友圈
public static void sendMsgToTimeLine(){
if(api.openWXApp())
{
if(api.getWXAppSupportAPI() >= 0x21020001)
{
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = "";
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = "Tittle";
msg.description = "Description";
Bitmap thumb = BitmapFactory.decodeResource(instance.getResources(), R.drawable.icon);
msg.thumbData = Util.bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneTimeline;
api.sendReq(req);
}
else{
Toast.makeText(instance, "微信版本过低", Toast.LENGTH_SHORT).show();
}
}
else
{
Toast.makeText(instance, "未安装微信", Toast.LENGTH_SHORT).show();
}
}
其中buildTransaction()用于生成一个唯一的会话标识符。
private static String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
}
代码不难,所以不再逐行解释,可以参考SDK文档。(9)JNI调用在Classes目录下新建一个WeixinShare类,主要包含2个静态函数:
void WeiXinShare::sendToFriend()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/cpp/AppActivity","sendMsgToFriend", "()V");
if (!isHave) {
log("jni:sendMsgToFriend is null");
}else{
//调用此函数
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
}
#endif
}
void WeiXinShare::sendToTimeLine()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台
JniMethodInfo minfo;
bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/cpp/AppActivity","sendMsgToTimeLine", "()V");
if (!isHave) {
log("jni:sendMsgToTimeLine is null");
}else{
//调用此函数
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
}
#endif
}
(10)Cocos2d-x使用这个就比较简单了,只要包含这个WeiXinShare类,调用这两个静态函数即可。
void HelloWorld::menuCloseCallback(Ref* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
//WeiXinShare::sendToFriend();
WeiXinShare::sendToTimeLine();
#endif
}
(11)Android.mk的修改最后不要忘记修改Android.mk文件。
复制代码
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp \
../../Classes/WeiXinShare.cpp
(12)重新交叉编译,打包为APK即可6.总结本文写的比较详细,但是也忽略了比如如何接收微信的请求及返回值的说明以及如何进行混淆等等,算是一个初级教程吧。主要是面向对jni调用,第三方安卓sdk集成不太了解的朋友。这里虽然只是针对微信sdk的部分功能集成进行说明,但是道理都是共通的,如何集成微博分享,如何集成第三方广告等等,用类似的方法都可以实现。
(和豪勇14754038844)cocos2d - x 3.0怎么安装 - ______ 操作步骤如下: 一win764位系统搭建Android开发环境需要的软件 1.cocos2d-x3.3beta0 2.VisualStudio2012/2013 安装完占硬盘空间近10G,VisualStudio2012/2013是需要注册码. 4.AndroidSDK(其中包括Eclipse) 5.AndroidNDK 6.Ant 7....
(和豪勇14754038844)谁能提供cocos2d - x +lua 怎样编译成安卓的文件 - ______ 呃,其实oc里面很多东西是需要Java来完成的coos2d主要在游戏方面用的比较多 其是都差不多了 安坐里面所有的方法都是打点调用 字符串不要家@, 代码开头不要加oc里面的前缀 没有导入头文件一说,安卓里面是导入类文件,基本上其他的就没区别了 有时间可以去慕课网看看.请教一下很快就能学会的!祝你成功!
(和豪勇14754038844)cocos2dx3.10 怎么运行cocos2dx库 - ______ 一、通用准备工作1、安装Cocos2d-x 3.1 在Cocos2d官网上下载 Cocos2d-x 3.2+引擎 ,下载后解压缩.2、安装Eclipse与Android SDK 这个在Mac上或是PC上开发都是可以通用的.Eclipse 在其官网下载( 官网地址 ).Android SDK 在...
(和豪勇14754038844)cocos2d - x3.9怎样安装 - ______ cocos2d-x 引擎包是不需要安装的,直接解压即可使用.若需要创建工程,则需要使用命令行工具终端,cd到引擎包解压文件,运行setup.py文件(命令:./setup.py), 之后使用命令cocos new 工程名 -p 包命 -l cpp -d 新建工程保存路径 命令创建工程.具体的你可以看看引擎包解压文件夹内README.md文件.
(和豪勇14754038844)cocos2d - x集成anychat行不行 - ______ 一、功能描述、SDK版本和帐号准备功能大致是这样的:在游戏中设置一个按钮,点击这个按钮,弹出知名社交平台的分享图标集窗口,用户选择分享目标后,相关信息分享到对应的社交平台.分享结果通知通过Toast显示在屏幕的下方.这次...
(和豪勇14754038844)cocos2dx怎样打包成ipa - ______ 关于自动编译iOS工程,生成app及ipa文件的方法1.所需语句(可直接在命令行中执行) xcodebuild -configuration Release 进入所在工程的根目录文件夹,执行上面的语句,即可开始自动使用release模式build该工程文件.注意:文件必须添加...
(和豪勇14754038844)如何在coco2d - x - ______ coco2d-x如何创建工程 不知道coco2d-x从那个版本开始用python创建工程,一句话搞定,确实省去了好多麻烦. 首先定位到coco2d-x的目录到cocos2d-x-2.2.3\cocos2d-x-2.2.3\tools\project-creator.前提你要装python软件,python是一种面向对象...
(和豪勇14754038844)如何把一个cocos2dx的项目集成到ios普通项目中 - ______ 您需要使用Objective-C和C++的混合编译.个人认为如果您的工程是游戏,需要调用部份Cocoa的API,可以创建Cocos2d-x的工程,加入UIKit.反之,最好建立Cocoa工程,加入cocos2d的视图.
(和豪勇14754038844)怎么在vs上搭建cocos2d - x - ______ 到官网下载Cocos2d-x安装文件包,这里我们选择下载了最新的安装包cocos2d-x-3.4 解压安装包文件,并在目录cocos2d-x-3.4\build下找到cocos2d-win32.vc2012.sln双击运行此解决方案 右击如下项目名称,选择“设为启动项目” 按下快捷键CTRL+F5编译并运行程序,系统会完成Cocos2d-x的相关配置,此过程大约五分钟左右.运行成功后会有如下提示,并会打开一个Hello World窗口.
(和豪勇14754038844)androidstudio打开cocos2dx - lua工程,怎么配置 - ______ 第一步:先关闭vs,双击下载下来的BabeLua.vsix,双击按照提示安装 第二步:新建一个lua工程,先在vs环境下运行生成.exe文件,我的lua工程的目录是G:Cocos2d-xcocos2d-x-2.2.3cocos2d-x-2.2.3projectsLuaTest 第三步:打vs,安装成功的话...