天天看點

Cocos2d-x shareSDK

Android部分內建步驟(不內建Android分享可略過此部分)

注意:

本節介紹的是結合Jni将Share SDK內建到coco2d-x的方式,如果您想查詢“純Java方式”的內建方法,請點選這裡參考“Android 示例項目”條目的相關内容,如果您想查詢“plugin-x”的內建方法,請點選這裡參考“Android 示例項目”條目的相關内容。

內建步驟

內建到你的cocos2dx裡要做的是

1:把ShareSDK的cocos2dx的sample項目裡的libs架包複制到你的項目裡,除了armeabi目錄不用複制其他都要。

2:把ShareSDK的cocos2dx的sample項目裡的Classes目錄下的檔案都複制到你的項目裡的Classes目錄下。

3:把ShareSDK的cocos2dx的sample項目裡的res裡的drawable-xhdpi和values目錄下的oks_string.xml、ssdk_string.xml複制到你的項目裡的res目錄下,values-en是國際化需要用到的

4:把ShareSDK的cocos2dx的sample項目裡的AndroidManifest.xml裡的<activity android:name="cn.sharesdk.framework.ShareSDKUIShell" />的屬性和<user-permission>都複制到你的項目裡的AndroidManifes.xml裡,如果需要內建微信分享還需要設定微信的回調activity,具體如何寫可以查閱http://wiki.sharesdk.cn/Android_快速內建指南 的配置AndroidManifes.xml節點。

5:添加代碼把ShareSDKUtils.java一定要放在cn.sharesdk目錄下,onekeyshare是做快捷分享,onekeyshare也在cn.sharesdk下建立變成cn.sharesdk.onekeyshare,然後把onekeyshare代碼複制到你的項目裡

6:在主activity裡的onCreate方法裡添加ShareSDKUtils.prepare()方法。

這裡示範的是一個小的Demo內建ShareSDK cocos2dx的分享插件的內建步驟(使用的cocos2dx的版本為2.2.1)

1、從官網下載下傳cocos2dx專用元件 http://sharesdk.cn/Download

解壓後的目錄如下:

Cocos2d-x shareSDK

2、使用python建立一個cocos2dx項目

如何使用python建立cocos2dx項目Google一下哦

Cocos2d-x shareSDK

項目名為:ShareSDKC2DX

包名為:cn.sharesdk.hellocpp

建立後打開cocos2dx根目錄裡的projects檔案夾

Cocos2d-x shareSDK

3、把proj.android項目導入到eclipse裡

Cocos2d-x shareSDK

eclipse需要安裝cdt插件(cdt是用于在eclipse上編寫c++程式的插件),如果eclipse已經可以進行C++開發就不用安裝此插件

也可以使用cygwin進行編譯C/C++代碼,這裡示範使用的使用CDT

Cocos2d-x shareSDK

4、從cocos2dx根目錄打開cocos2dx->platform->android->java->src

複制org整個目錄到剛建立的cocos2dx項目裡的pro.android目錄裡的src目錄下

Cocos2d-x shareSDK

然後重新整理eclipse裡的項目

Cocos2d-x shareSDK

5、重新回到從ShareSDK下載下傳的C2DXSample

Cocos2d-x shareSDK

複制Class整個目錄到在cocos2dx建的項目,覆寫替換Classes目錄

Cocos2d-x shareSDK

在proj.android目錄下建立assets目錄,把Resources資源複制到assets目錄下

Cocos2d-x shareSDK
Cocos2d-x shareSDK

6、回到從ShareSDK下載下傳的C2DXSample

Cocos2d-x shareSDK

進入proj.android->jni複制Android.mk替換eclipse項目裡的Android.mk檔案

Cocos2d-x shareSDK

jni目錄裡的Android.mk檔案。

7、右鍵項目選擇屬性

Cocos2d-x shareSDK

8、選擇C/C++ builder,在build command處填入NDK存放路徑\ndk-build.cmd

ndk要使用r9d或者更高版本

Cocos2d-x shareSDK

9、添加一些環境變量

Cocos2d-x shareSDK

添加COCOS2DX,也就是cocos2dx解壓縮的根目錄

添加NDK_ROOT,也就是NDK解壓縮的根目錄

添加NDK_MODULE_PATH,添加cocos2dx的解壓縮的根目錄後加上\;E:\cocos2dx\cocos2d-x-2.2.1\cocos2dx\platform\third_party\android\prebuilt

具體如何添加請參考圖檔

10、設定一下資源的環境變量

Cocos2d-x shareSDK

 添加COCOS2DX,也就是cocos2dx解壓縮的根目錄

11、建構項目

選中eclipse裡的項目

Cocos2d-x shareSDK

點選Build Project

Cocos2d-x shareSDK

12、複制ShareSDK下載下傳的C2DX項目的字元串資源和圖檔資源到eclipse項目裡

複制values、values-en、drawable-xhdpi資源

Cocos2d-x shareSDK

13、複制ShareSDK的jar包到ShareSDKC2DX項目裡

一:打開從ShareSDK下載下傳的cocos2dx的Sample目錄如下

Cocos2d-x shareSDK

二:進入proj.android目錄

Cocos2d-x shareSDK

三:打開libs目錄

Cocos2d-x shareSDK

除了armeabi目錄不用複制其他都要複制到你建的ShareSDKC2DX項目裡的libs目錄下

複制後如下圖:

Cocos2d-x shareSDK

14、複制ShareSDK下載下傳的C2DX項目裡的ShareSDKUtils.java和onekeyshare到eclipse裡的項目

ShareSDKUtils.java一定要放在cn.sharesdk目錄下

Cocos2d-x shareSDK

15、打開ShareSDK下載下傳的C2DX項目裡的AndroidManifest.xml檔案

複制如下屬性到eclipse裡的cocos2dx項目裡的AndroidManifest.xml配置檔案

Cocos2d-x shareSDK

16、項目要使用utf-8編碼格式

設定方法為右擊項目選擇properties選擇Resource

修改Text file encoding為utf-8

Cocos2d-x shareSDK

17、打開ShareSDK下載下傳的C2DX項目裡assets目錄

複制ShareSDK.xml配置檔案到eclipse裡的cocos2dx項目裡的assets目錄下

Cocos2d-x shareSDK

18、添加代碼

在eclipse裡的cocos2dx項目裡的啟動的activity裡的onCreate方法裡添加ShareSDKUtils.prepare()代碼

Cocos2d-x shareSDK

19、運作

Cocos2d-x shareSDK

點選分享正常顯示此圖就表明內建ShareSDK C2DX成功了,恭喜你

Cocos2d-x shareSDK

20、ShareSDK.xml配置檔案說明

裡面配置的資訊是你的應用到各個分享平台注冊你的應用時所傳回的注冊資訊,把項目的注冊資訊填寫到ShareSDK.xml

詳細的JAVA代碼說明和配置資訊說明請查閱 http://wiki.sharesdk.cn/Android_快速內建指南

此demo不能執行分享功能,因為沒有到各個分享平台裡注冊此應用資訊,是以要你的應用到各個分享平台裡注冊應用資訊後把相關的注冊資訊填寫到ShareSDK.xml就能執行分享了,祝你順利。

分享過程中出現異常請查閱

http://wiki.sharesdk.cn/Android_常見問題

各個平台可以分享那些參數請查閱

http://wiki.sharesdk.cn/Android_不同平台分享内容的詳細說明

java層代碼解釋

java層代碼基本上隻有ShareSDKUtils一個類,而且java層的代碼也僅僅需要調用這個類的prepare方法,此外的可以不理會。但是如果您想修改分享的參數(github上的例子提供的分享參數很少),則需要涉及下面的方法:

nativeMapToJavaMap(HashMap<String, String>)
 這個方法是将從native層傳遞上來的分享資料的名稱修改為java層可以了解的名稱,如果您在native層添加了分享的參數,則需要修改這個方法,将這些參數“翻譯”為Java層可以了解的字段,
 這些字段實際上就是不同平台ShareParams的字段,完整清單,可以參考這裡。
      
onekeyShare(HashMap<String, String>)
 這個方法是調用java層快捷分享GUI子產品的入口,和上面的方法一樣,如果您修改了native層的分享參數,這個方法裡面的方法也需要增删。
      

需要特别注意的是,ShareSDKUtils.prepare()必須在主線程中調用,而且需要在觸發Share SDK的任何操作前觸發,否則會因為沒有初始化ShareSDKUtils而導緻錯誤。

native層代碼解釋

直接使用jni的方式內建Share SDK并不是Android平台所推薦的做法,實踐證明,這種方式需要涉及大量的native-java反射操作,低效且容易發生錯誤,但是這種方法可以在編寫c/c++代碼時屏蔽平台差異,也可以當作是對Plugin-x的補充。

native層的代碼基本上是反射操作,開發者可以完全不理會其實作,直接調用C2DXShareSDK上的方法完成需要的功能即可,如果需要修改其中的功能,可以到ShareSDKUtils中改動,但是需要注意下面的方法:

Java_cn_sharesdk_ShareSDKUtils_onCancel
 Java_cn_sharesdk_ShareSDKUtils_onComplete
 Java_cn_sharesdk_ShareSDKUtils_onError
 這三個方法是java層的操作回調,不應該修改方法的名稱
      
hashmapToCCDictionary及其引用的方法
 這個方法的用途主要是将包含操作傳回的json容器hashmap轉成ccdictionary
      
CCDictionaryToHashMap
 這個方法是hashmapToCCDictionary的逆操作,但事實上這個方法隻能轉換key和value都是string的資料
      
setPlatformDevInfo
 這不是Android平台所必需的方法,可以通過ShareSDK.xml來更簡便完成應用資訊配置