Cocos2d-Lua(Quick-Cocos2d-x)集成第三方SDK(一)

在我們實際開發過程中,經常會遇到需要使用第三方SDK的情況。比如我們常用的:友盟,TalkingData之類的統計分析SDK;移動MM,電信愛遊戲之類的計費SDK;個推,百度推送之類的推送SDK。諸如此類的在iOS平臺也有一大堆。那麼在使用Quick-Cocos2d-x的過程中怎麼把它們接入到遊戲中呢?我們這幾篇文章就來介紹下。

  • 引擎版本: Quick-Cocos2d-x 3.3
  • 開發系統: Windows 7 64bit

目前接入方式

目前接入SDK的方式有很多種,我們這裏只說下對Cocos2d-x常用的幾種:

  1. 使用AnySDK來接入;
  2. 使用第三方SDK提供的Cocos2d-x版本來接入;
  3. 使用第三方SDK提供的Java或者OC版本。

AnySDK是Cocos2d-x官方提供的一套很完善的接入第三方SDK的工具。它接入簡單、方便、快捷,而且支持衆多的SDK,能夠實現一鍵式的接入。官網請點擊這裏,另外它還有非常詳盡的文檔,請點擊這裏。如果是企業用戶的話,推薦使用AnySDK,它本身已經支持了諸如斯凱、移動遊戲基地、GooglePlay、91等渠道,也支持用戶、支付、廣告、分享、統計和推送的大量SDK。對於打包和加固也基本上是一次配置,全程通用了。因爲企業渠道的打包往往是幾十上百個包,如果使用AnySDK,在一次配置完成之後,每次都只需要輕輕一點就能夠在旁邊喝茶。這樣無疑爲企業節約了大量的開發時間和人力成本。

anysdk

anysdkchannel

anysdksdks

而對於個人或者小團隊來說,往往支持的渠道有限,限於開發成本的原因,需要支持的SDK比較少,而且對包的限制也會比較大,這種時候使用2,3種方式相對來說顯得更爲經濟和簡單,並且也更爲靈活和方便。難點在於需要自己編寫集成代碼。對於第2種方法,如果是使用C++語言的話來編寫遊戲的話使用會很方便,如果是使用Lua的話,需要自己寫一層C++到Lua的封裝。而目前很多的第三方SDK都提供了Cocos2d-x的版本。大部分時候我們都只需要下載一個第三方SDK的C++版本。然後簡單的集成一下,就可以在C++代碼中直接調用了。

但是又的情況下第三方SDK C++版本對接口的支持可能不如對原生平臺版本(Java或者OC)支持的完善,那麼這個時候我們更多的可能會使用原生平臺版本,中間自己提供一層接口來供C++調用,這也就是我們這裏的第3種方式。

接入示例

接下來我們以友盟爲例來講下怎麼使用。AnySDK的講解我們在這裏先不講,大家可以參考官方網站上的文檔。

接入Cocos2d-x版本的友盟

首先我們來看下怎麼接入友盟的Cocos2d-x版本。

  1. 註冊賬號

    打開友盟官方網站:http://www.umeng.com/。註冊賬號並且申請一個應用,如果所示:

    creatgame

    這裏需要注意的是如果你是使用Cocos2d-x版本的話最好把那個“使用Cocos2dx插件”的選項勾上,避免產生不必要的錯誤。

    信息填寫完成後點擊“提交併獲取AppKey”,會顯示一些創建出來的遊戲的信息。

    appkey

    這裏的信息就是我們需要在遊戲裏使用的appkey。

  2. 下載SDK

    在賬號註冊完成後,我們打開友盟的SDK下載界面:http://dev.umeng.com/game_analytics/game-c2d/sdk-download,點擊“SDK下載”,下載SDK到本地。

  3. 集成到C++裏

    • Android

      • 將libMobClickCpp文件夾複製到[COCOS2DX_ROOT]/external目錄下,並且將mobclickcpphelper.jar複製到Android工程的libs目錄中,

      • 改你的工程Android.mk文件在LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static後添加LOCAL_WHOLE_STATIC_LIBRARIES += mobclickcpp_static,在$(call import-module,cocos2dx)後添加$(call import-module,libMobClickCpp)。如果你的工程沒有使用libcurl庫,還要在相應位置添加$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)(cocos2d-x 3.0以上請替換爲$(call import-module,curl/prebuilt/android))和LOCAL_WHOLE_STATIC_LIBRARIES += cocos_curl_static

      • 添加權限

      在AndroidMainfest.xml文件中添加以下權限

      1
      2
      3
      4
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
      <uses-permission android:name="android.permission.INTERNET"></uses-permission>
      <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
      • 添加Java代碼
      1
      MobClickCppHelper.init(this);
      • 在遊戲主main.cpp中加入如下代碼:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
        #include "MobClickJniHelper.h"
       ...
      extern "C"
      {
          jint JNI_OnLoad(JavaVM *vm, void *reserved)
          {
              JniHelper::setJavaVM(vm);
              umeng::MobClickJniHelper::setJavaVM(vm);
              return JNI_VERSION_1_4;
          }
      }
    • iOS

      iOS的集成就簡單很多了。

      • 所需文件: libMobClickCpp.a(請查看C++ Standard Library的設置,xcode默認的Compiler Default是libstdc++,如果您的項目正在使用libc++編譯請使用libMobClickCppWithLibCpp.a) MobClickCpp.h

      • 請在你的工程目錄結構中,右鍵選擇Add->Existing Files…,選擇這兩個文件。或者將這兩個文件拖入XCode工程目錄結構中,在彈出的界面中勾選Copy items into destination group's folder(if needed), 並確保Add To Targets勾選相應的target。 如果你的工程沒有使用libcurl庫,還要把[COCOS2DX_ROOT]/external/curl/prebuilt/ios/libcurl.a)按照上面的方法加入到工程中。

    集成到這裏就算搞定了,接下來的就是使用了。使用的話可以直接參考官方的API文檔。

好了,我們先說到這裏,後面的章節我們將會將怎麼把C++接口轉成Lua接口,和怎麼在Lua中直接調用Java版本的友盟。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章