前几天学接sdk,以前从来没有接触过这些东西。突然要接sdk,无从下手的感觉瞬间来袭,没有办法硬着头皮上了。
首先从uc开发者平台下载要接入的sdk文档。UC 优视游戏 SDK 开发参考说明书 。
打开下载的sdk目录,在客户端开发的demo里找到cocos2dx的接入sdk例子。
打开cocos2d-x-sdk-readme.txt可以查看sdk的目录说明。
目录说明:
├── cocos2d-x-sdk-readme.txt //当前说明文件
├── UCSimpleGame_v3
│ ├── Classes //Cocos2dx的场景文件等
│ ├── proj.android //android demo工程
│ │ ├── AndroidManifest.xml
│ │ ├── jni
│ │ │ ├── Android.mk //可以参考,里面有注释
│ │ │ ├── Application.mk
│ │ │ └── hellocpp
│ │ │ └── main.cpp //测试库
│ │ ├── libs
│ │ │ ├── alipay_MobileSecSdk.jar
│ │ │ ├── alipay_sdk.jar
│ │ │ ├── alipay_utdid4all-1.0.4.jar //以上三个都是宝支付插件
│ │ │ ├── armeabi
│ │ │ └── UCGameSDK-3.5.3.1.jar //九游SDK接入包
│ │ └── src
│ │ ├── cn
│ │ │ └── uc
│ │ │ └── gamesdk
│ │ │ └── jni //九游SDK提供的cocos2d-x接入的java层代码,在uc.sdk/java目录下,接入时复制也好引用也好只要能找到就可以了
│ │ └── org
│ │ └── cocos2dx
│ │ └── cpp //demo文件,主入口
│ └── uc.sdk //包含九游SDK提供的java层与native层的接入代码
│ ├── java //包含九游SDK提供给cocos2d-x的java层代码,与游戏的java层代码共同编译
│ │ └── cn
│ │ └── uc
│ │ └── gamesdk
│ │ └── jni
│ │ ├── EnterUIListener.java
│ │ ├── ExitListener.java
│ │ ├── FloatMenuListener.java
│ │ ├── GameUserLoginOperation.java
│ │ ├── InitResultListener.java
│ │ ├── JniCallback.java
│ │ ├── LoginResultListener.java
│ │ ├── LogoutListener.java
│ │ ├── PayListener.java
│ │ ├── UCGameSdk.java
│ │ ├── UPointChargeListener.java
│ │ └── UserCenterListener.java
│ └── jni //编译游戏的native库时需要引用的jni代码
│ ├── Android.mk
│ ├── Application.mk
│ ├── cn_uc_gamesdk_jni_JniCallback.cpp
│ ├── CUCGameSdk.cpp
│ ├── includes //九游头文件
│ │ ├── cn_uc_gamesdk_jni_JniCallback.h
│ │ ├── CUCGameSdk.h
│ │ ├── CUCStatusCode.h
│ │ ├── UCSdkCallback.h
│ │ └── UCSdk.h
│ ├── jsoncpp //jsoncpp库源码
│ ├── UCSdkCallback.cpp
│ └── UCSdk.cpp
└── UCSimpleGame_v3.apk //测试demo
文件中已经详细的说明了各文件的功能,也给出了详细的接入教程。
接入流程及注意事项:
1. 本demo基于cocos2d-x v3.7.1 构建,以下假设已经安装好cocos2d-x
2. 先把uc.sdk目录复制到游戏项目中,游戏的项目结构可以参考UCSimpleGame_v3目录(具体路径其实无太大关系,引用适当修改即可)
3. 修改proj.android,让项目引用uc.sdk/java中的代码(或者直接复制到 游戏项目/proj.android/src中)
4. 修改proj.android/jni/Android.mk,让其引用uc.sdk/jni中的代码(可以参考UCSimpleGame_v3/proj.android/jni/Android.mk中注释)
5. 将UCSimpleGame_v3/proj.android/libs中的几个库(支付宝3个,九游SDK一个)制到游戏项目中的proj.android/libs
6. 修改proj.android的AndroidManifest.xml文件
权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
声明activity:
<activity
android:name="cn.uc.gamesdk.SdkActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="cn.uc.gamesdk.sdkweb" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
可以参考UCSimpleGame_v3/proj.android/AndroidManifest.xml
7. 修改proj.android/jni/Android.mk中关于cocos2d的路径,demo包中没有提供3.7.1的引擎文件,可以将引擎文件目录(如cocos2d-x-3.7.1)复制到游戏项目根目录中,与proj.android同级,并修改文件名为cocos2d
或者将proj.android/jni/Android.mk中的关于cocos2d的目录引向引擎文件目录,如
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
修改$(LOCAL_PATH)/../../cocos2d 指向你的引擎目录
8. 在游戏项目根目录中执行
cocos compile -p android
即可可以开始构建(假如没cocos命令需要先行安装cocos2d-x)
该文件已经详细的说明了如何接入九游sdk了,重要的一步我们要实现sdk的初始化。
在项目文件夹/proj.android/src/org/cocos2dx/cpp/下的AppActivity.java文件中添加。
01 |
protected void onCreate(Bundle savedInstanceState) { |
02 |
03 |
super .onCreate(savedInstanceState); |
04 |
UCGameSdk.setCurrentActivity( this ); |
05 |
06 |
// JniCallback.nativeInitResultCallback(1, "OK"); |
07 |
} |
08 |
09 |
@Override |
10 |
protected void onDestroy() { |
11 |
System.out.println( "============onDestroy=============" ); |
12 |
UCGameSdk.destroyFloatButton(); //销毁悬浮按钮 |
13 |
UCGameSdk.exitSDK(); |
14 |
super .onDestroy(); |
15 |
} |
具体的功能,我们要调用uc.sdk文件里的功能文件。例如获取登录用户的会话标识sid。
我们只需要实现接口的调用即可。
第一次接触这玩意,有点混乱,这里就随随便便写了下,大致就是这个样子,今天正式踏入程序员行列,第一天上班加班到晚上九点,现在实在是太困了今晚大致这样,明天还要研究小米sdk,关于sdk的一些使用等我以后研究透了再来完善吧。。