碰到很多坑:

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. AsyncTask delay延迟执行 或者顺序执行 问题

    惯用AsyncTask的朋友可能会发现AsyncTask的坑: Android executes AsyncTask tasks before Android 1.6 and again as of ...

  2. Hadoop源码解析之: TextInputFormat如何处理跨split的行

    我们知道hadoop将数据给到map进行处理前会使用InputFormat对数据进行两方面的预处理: 对输入数据进行切分,生成一组split,一个split会分发给一个mapper进行处理. 针对每个 ...

  3. SQL Server 基础 04 函数与分组查询数据

    函数与分组查询数据 系统函数分 聚合函数.数据类型转换函数.日期函数.数学函数 . . . 1. 聚合函数 主要是对一组值进行计算,然后返回一个值. 聚合函数包括 sum(求和).avg(求平均值). ...

  4. SDK Hello world(直接使用SDK封装)

    前言 将代码拆分了一下, 如果处理更多的消息也不怕看的眼花 SDK编程就是对各种Windows消息的处理 实验工程 /// @file exam_1.cpp /// @brief 查阅本地MSDN,  ...

  5. [置顶] 搭建apache+tomcat+memcached集群环境

    一.搭建apache server服务器 1.apache server图示:(加载图片要一张一张,所以可以到下面网站下载带图片的word) http://download.csdn.net/user ...

  6. 公司需求知识学习-WCF

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...

  7. Java I/O流-PipedInputStream、PipedOutputStream

    一.整体代码图 PipedStreamDemo.java import java.io.*; class PipedStreamDemo { public static void main(Strin ...

  8. Swift - 表格图片加载优化(拖动表格时不加载,停止时只加载当前页图片)

    列表的单元格中包含有图片在开发中很常见.通常我们可以直接在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIn ...

  9. 使用aidl绑定远程服务

    一.服务端 1.清单文件,因为要远程调用,所以要配个action <service android:name="com.example.alipayservice.AliPayServ ...

  10. static在C和C++中的用法和区别

    static主要有三个作用: (1)局部静态变量 (2)外部静态变量/函数 (3)静态数据成员/成员函数 前两种C和C++都有,第三种仅在C++中有,下面分别作以下介绍: 一.局部静态变量 在C/C+ ...