zoukankan      html  css  js  c++  java
  • 为cocos2dx添加ndk库

    碰到很多坑:

    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库依赖,到此商店系统完成。

  • 相关阅读:
    Windows7下安装golang语言开发环境和revel框架
    Go实战--通过gin-gonic框架搭建restful api服务(github.com/gin-gonic/gin)
    Go语言web框架 gin
    最好的6个Go语言Web框架
    mac:Go安装和配置+GoLand安装和使用之完整教程
    Goland软件使用教程(二)
    Goland软件使用教程(一)
    http_load常见问题及解决方案
    定义类和接口
    关于 xftp 上传文件时,仅仅是上传了0字节的问题
  • 原文地址:https://www.cnblogs.com/pangblog/p/3293890.html
Copyright © 2011-2022 走看看