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

  • 相关阅读:
    紧急情况下测试周期被压缩该如何测试?
    测试人员提高业务掌握度的方案
    Android客户端性能测试(一):使用APT测试Android应用性能
    转载:员工价值——如何体现自己价值,如何被自己的领导认可
    如何提高测试用例复用性和完善测试用例
    如何理解栈(栈的实现方式)
    Android 自动化测试—robotium(七) 使用Junit_report测试报告
    Android 自动化测试—robotium(八) 拖拽
    解决ADT升级报错
    敏捷测试的关键理念
  • 原文地址:https://www.cnblogs.com/pangblog/p/3293890.html
Copyright © 2011-2022 走看看