碰到很多坑:

1:引用库定义成include $(BUILD_SHARED_LIBRARY),结果生成了两个so文件,应该把库声明为BUILD_STATIC_LIBRARY

2:把库的java放到了项目之下,又把jar文件重复引用,导致Unable to execute dex: Multiple dex files define错误

3:库中用到了exception,所以android编译的时候要加上APP_CPPFLAGS := -frtti -fexception

4:修改application name为android:name="com.soomla.store.SoomlaApp" 同时要service和receiver加上配置,否则,没办法监听购买的消息

5:在游戏入口文件中,OnCreate要设置StoreControllerBridge.initialize(mGLView, new MuffinRushAssets(), "AAA", this);

添加Soomla的付费系统:

--jni

--classes

cocos2dx_StoreController.cpp 商店系统的初始化,以及向运营商发送购买请求buyMarketItem,都是通过JniHelpers::jniCommonVoidCall调用java接口

cocos2dx_StoreInfo.cpp 物品配置信息管理器,获取价格,描述等,也是通过JniHelpers::jniCommonVoidCall调用java接口

cocos2dx_StoreInventory.cpp 游戏内的虚拟物品管理器,通过虚拟货币购买虚拟物品,本地管理,不需交互运营商,也是调用java接口

com_soomla_cocos2dx_store_EventHandlerBridge.cpp 为JNICALL函数,当物品购买成功失败等等的java回调的地方,通过cocos2dx_EventHandlers::getInstance()转发给c++中的EventHandler进行处理

--与其他平台公用的类

--classes

cocos2dx_EventHandlers.cpp 事件分发管理器

EventHandler.cpp 事件处理器,向分发管理器注册自己。

jni

以上文件联合libcocos2dx打包成lib文件,在项目中通过$(call import-module,ccstore_shared)加入项目的动态库中

需要实现的java接口:

需要引用soomlastoreactivity.jar,实现具体的商店系统

--com.soomla.cocos2dx.example

MuffinRushAssets 继承自IStoreAssets,获取商店物品配置信息

--com.soomla.cocos2dx.store

StoreControllerBridge 实现cocos2dx_StoreController调用的接口,最终通过库中StoreController实现

StoreInfoBridge 同上

StoreInventoryBridge 同上

EventHandlerBridge回向BusProvider中注册自己,当购买事件回调的时候,会调用响应的JNICALL函数,把事件转发给c++层

打包成jar文件,在项目中把添加java库依赖,到此商店系统完成。

为cocos2dx添加ndk库的更多相关文章

  1. cocos2d-x 添加 libLocalStorage 库...

    说明:由于libLocalStorage底层是用sqlite实现的,所以要先按上面官方提供的集成sqlite的文档,将sqlite添加到项目中. 重点还是android的编译配置,加粗的是需要增加的配 ...

  2. cocos2dx通过ndk编译c++库

    ndk编译c++库,然后通过jni调用实现重要代码封装,是安卓应用中最常用的技术,一方面可以将重要的代码实现隐藏,防止泄漏,也可以提高打包速度. ndk里面的sample文件夹中有很多实用的例子,其中 ...

  3. NDK 开发实例二(添加 Eigen库)

    上一篇,我已经阐述了如何创建一个简单的NDK实例: NDK 开发实例一(Android.mk环境配置下) 在上一篇的基础上,我们来添加Eigen库,然后做一个简单实例. Eigen是一个高层次的C + ...

  4. Android Studio添加原生库并自动构建

    [时间:2017-09] [状态:Open] [关键词:Android,Android Studio,gradle,native,c,c++,cmake,原生开发,ndk-build] 0 引言 最近 ...

  5. 在VS中添加lib库的三种方法

    注意: 1.每种方法也要复制相应的DLL文件到相应目录,或者设定DLL目录的位置,具体方法为:"Properties" -> "Configuration Prop ...

  6. 向modesim中添加alter库 (或者在每次仿真时将库文件加入仿真文件夹一起编译)

    在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面:    ·Quartus不支持Testbench:    ·调用了megafunction或者lpm库之类的Alte ...

  7. Android驱动入门-Led控制+app+ndk库+底层驱动

    硬件平台: FriendlyARM Tiny4412 Cortex-A9 操作系统: UBUNTU 14.04 LTS 时间:2016-09-20  21:56:48 本次实验使用的是 安卓APP + ...

  8. 在ASP.NET 5中如何方便的添加前端库

    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:ASP.NET 5和之前的ASP.NET版本有很大的不同,其中之一就是对前端库的管理不再使用Nuget,而 ...

  9. Auty自动化测试框架第七篇——添加动作库和常量文件库

    [本文出自天外归云的博客园] 添加动作库 因为有很多调用的action类如果一直保存在utils中会让utils库不可维护,所以规定utils库中只放和框架本身有关的工具类,和脚本内容相关的工具类都放 ...

随机推荐

  1. 【一】仿微信飞机大战cocos2d-x3.0rc1

    參考 [偶尔e网事] 的 [cocos2d-x入门实战]微信飞机大战  cocos2dx 2.0版本号,偶尔e网事他写的很具体,面面俱到,大家很有必要看下.能够通过以下链接跳转: cocos2d-x入 ...

  2. SQL查询重复记录、删除重复记录方法

    查找所有重复标题的记录:SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1 ...

  3. javascript每日一练(十四)——弹性运动

    一.弹性运动 运动原理:加速运动+减速运动+摩擦运动: <!doctype html> <html> <head> <meta charset="u ...

  4. awk内置变量 awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。

    ARGC 命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量的使用 FILENAME awk浏览的文件名 FNR 浏览文件的记录数 FS 设置输入域分隔符,等价于命令行 ...

  5. HDOJ 1272 并查集 不相同父节点

    判断两点:1.任何2点的父节点不能相同->否则会导致2点间有多条通路2.所有点只有1个集合 存在一个小坑,就是第一次输入 0 0 的时候,应该输出 Yes , 否则会WA MY AC Code ...

  6. CentOS6使用第三方yum源安装更多rpm软件包

    引言:       CentOS自带的yum源中rpm包数量有限,很多时候找不到我们需的软件包,(例如:要安装网络连接查看软件iftop,默认设置下无法使用yum命令安装),下面教大家在CentOS ...

  7. c++ 静态成员遇到的坑总结

    新标签页http://74.55.154.136/ c++ 静态成员遇到的坑总结 - linuxfloat - 博客园 c++ 静态成员遇到的坑总结   1.对于类静态变量的初始化,用下面方法. // ...

  8. [034] 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime(转)

    从微信公众平台的消息接口指南中能够看出,每种类型的消息定义中,都包括有CreateTime參数,它表示消息的创建时间,例如以下图所看到的: 上图是消息接口指南中4.1-文本消息的定义.注意Create ...

  9. Surface,送我都不要

    本文作于前几天,由于今天的突发新闻,已作了修订. Nokia的着火史 自从Elop那篇着火的平台备忘录出炉,Nokia的杯具就已经造成,唯一令人不解的就是:Elop为什么还没有被开除? 距离这个备忘录 ...

  10. iphone分辨率终极指南(含有iphone6/6+)

    如文本不清楚.请 "对->图片另存为" 下载大图后, ------------------------- 原文及翻译文本 Points点 At the beginning, ...