上文中已介绍了环境与软件的安装配置(参见该网址:http://www.cnblogs.com/laohaizei/p/6723490.html),以后咱们就能够开始学习接入渠道了,html
UC已和豌斗夹渠道合并,更名叫阿里游戏java
我这边演示用DEMO的下载的为融合版,看一下下载下来后有些什么东西吧android
具体里面的东西如何使用,咱们晚点再说web
在接入以前,需先在渠道后台建立游戏,获取一些接入参数。算法
客户端所须要参数包括:cpId、gameId、serverId。参数基本是初始化时所须要传入的参数。json
准备工做作为,正式开始接入,首先确定是把所须要的资源如JAR包之类的复制到个人工程中去。api
我这边的接入环境是Eclipse服务器
那首先咱们得先建立一个demo工程,打开咱们的Eclipse,新建一个工程,名为demoapp
建立完成以后以下图,会发现咱们左侧栏会有两个新工程ide
很明显如今是有问题的,有两个大大的感叹号,那有些东西咱们是不须要的,就直接大胆的delete掉 ,先删除appcompat v7 选中appcompat v7按delete键,记得打勾以下图红色标记处,而后按肯定
如今咱们发现打叉叉的地方有这几个地方
首先咱们去values里面把错误的地方删除
以后咱们发现错误的地方只有一处了
咱们双击MainActivity.java打开这个类
而后咱们把除了第一行外全部的代码都删除,以后我会把整个类的代码写在后面,你们只须要把整个类的代码复制进这个类里就行
而后咱们clean咱们的工程,选中demo
而后把下图中红框里的三个目录都delete删除
一样重复刚刚的步骤,clean咱们的工程
一样打开下图中报错的文件
删除文字下方带红色波浪线的
再次clean一下咱们的demo工程后发现没有地方再报错了
打开咱们下载好解压出来的文档目录找到所须要依赖的JAR包
红框所示就是咱们Eclipse所须要的jar包了。
把alipay.jar复制到咱们工程的libs目录下就行。
.arr是studio中用的相似于Eclipse的.jar,但其中整合了其余资源,因此,咱们须要把arr文件的后缀名改为rar或者zip把的解压出来获取咱们须要的资源文件。
而后解压
解压出来的目录格式:
其中,咱们须要是上图中两个红框中的。
把ucgamesdk.jar复制到咱们工程的libs目录下
把assets目录下的全部文件复制到咱们工程的assets目录下。
至此,咱们已经把全部须要的东西都复制到了咱们的工程中,clean 一下咱们的demo工程,接下来个上代码了。
首先咱们打开咱们工程的AndroidManifest.xml文件。
而后复制如下代码
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.demo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" /> <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.AUTHENTICATE_ACCOUNTS" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="cn.uc.gamesdk.activity.ProxyActivity" 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> <!-- alipay sdk begin --> <activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:exported="false" android:screenOrientation="behind" > </activity> <activity android:name="com.alipay.sdk.auth.AuthActivity" android:configChanges="orientation|keyboardHidden|navigation|screenSize" android:exported="false" android:screenOrientation="behind" > </activity> <!-- alipay sdk end --> <!-- 游戏的横竖屏配置 --> <meta-data android:name="ali_screen_orientation" android:value="landscape" /> </application> </manifest>
而后到咱们demo工程的AndroidManifest.xml全选替换粘贴
以上AndroidManifest.xml修改好了。
作完以上步骤,接下来,咱们开始接入SDK的接口。
首先打开咱们的MainActivity.java
刚刚我让你们把这个文件里的代码都删了,如今应该除了第一行是没有东西的,而后把下面的代码复制进去,注意别把第一行的代码覆盖了。
import android.app.Activity; import android.os.Bundle; import android.util.Log; import cn.uc.gamesdk.UCGameSdk; import cn.uc.gamesdk.even.SDKEventKey; import cn.uc.gamesdk.even.SDKEventReceiver; import cn.uc.gamesdk.even.Subscribe; import cn.uc.gamesdk.exception.AliLackActivityException; import cn.uc.gamesdk.exception.AliNotInitException; import cn.uc.gamesdk.open.GameParamInfo; import cn.uc.gamesdk.open.OrderInfo; import cn.uc.gamesdk.open.UCLogLevel; import cn.uc.gamesdk.open.UCOrientation; import cn.uc.gamesdk.param.SDKParamKey; import cn.uc.gamesdk.param.SDKParams; public class MainActivity extends Activity { final static String TAG = "demo"; UCGameSdk sdk; int cpId = 0; int gameId = 0; int serverId = 0; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UCGameSdk.defaultSdk().registeSDKEventReceiver(eventReceiver); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); UCGameSdk.defaultSdk().unregisterSDKEventReceiver(eventReceiver); sdk = UCGameSdk.defaultSdk(); } private void init() { // TODO Auto-generated method stub GameParamInfo gameParamInfo = new GameParamInfo(); gameParamInfo.setCpId(cpId);// 上文提到的游戏参数 参数类型int gameParamInfo.setGameId(gameId);// 上文提到的游戏参数 参数类型int gameParamInfo.setServerId(serverId);// 上文提到的游戏参数 参数类型int // 设置是否支持查询充值历史和显示切换帐号功能, // 若是不设置,默认具备查询充值历史记录,不具备切换帐户功能 gameParamInfo.setEnablePayHistory(true);// 开启查询充值历史功能 gameParamInfo.setEnableUserChange(true);// 开启帐号切换功能 // 设置SDK屏幕方向 // LANDSCAPE:横屏,横屏游戏必须设置为横屏,PORTRAIT:竖屏 gameParamInfo.setOrientation(UCOrientation.PORTRAIT); SDKParams sdkParams = new SDKParams(); sdkParams.put(SDKParamKey.LOG_LEVEL, UCLogLevel.DEBUG);// 日志等级 sdkParams.put(SDKParamKey.GAME_PARAMS, gameParamInfo); // FIXME always debug // 是否打开调试模式。 // 在为true的时候,会链接到联调测试环境(sdk.test4.9game.cn), // 当为false的时候则会链接到正式环境(sdk.g.9game.cn)。 sdkParams.put(SDKParamKey.DEBUG_MODE, false); try { sdk.initSdk(MainActivity.this, sdkParams); } catch (AliLackActivityException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void login() { try { sdk.login(MainActivity.this, null); } catch (AliLackActivityException e) { // TODO Auto-generated catch block activity为空,异常处理 e.printStackTrace(); } catch (AliNotInitException e) { // TODO Auto-generated catch block 未初始化,异常处理 e.printStackTrace(); } } private void pay() { SDKParams sdkParams = new SDKParams(); sdkParams.put(SDKParamKey.CALLBACK_INFO, "{\"test\":true}"); sdkParams.put(SDKParamKey.SERVER_ID, "1"); sdkParams.put(SDKParamKey.ROLE_ID, "AAA"); sdkParams.put(SDKParamKey.ROLE_NAME, "BBB"); sdkParams.put(SDKParamKey.GRADE, "grade1"); sdkParams.put(SDKParamKey.NOTIFY_URL, ""); sdkParams.put(SDKParamKey.AMOUNT, "2.33"); sdkParams.put(SDKParamKey.CP_ORDER_ID, "20160000101001"); sdkParams.put(SDKParamKey.ACCOUNT_ID, "123"); sdkParams.put(SDKParamKey.SIGN_TYPE, "MD5"); sdkParams.put(SDKParamKey.SIGN, "游戏服务器根据以上信息签名后的结果"); // 以上字段的值都须要由游戏服务器生成 try { UCGameSdk.defaultSdk().pay(MainActivity.this, sdkParams); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block 参数错 e.printStackTrace(); } catch (AliLackActivityException e) { // TODO Auto-generated catch block activity null e.printStackTrace(); } catch (AliNotInitException e) { // TODO Auto-generated catch block 未初始化 e.printStackTrace(); } } private void sendUserInfo() { SDKParams sdkParams = new SDKParams(); sdkParams.put(SDKParamKey.STRING_ROLE_ID, "roleId"); sdkParams.put(SDKParamKey.STRING_ROLE_NAME, "roleName"); sdkParams.put(SDKParamKey.LONG_ROLE_LEVEL, 1); sdkParams.put(SDKParamKey.STRING_ZONE_ID, "zoneId"); sdkParams.put(SDKParamKey.STRING_ZONE_NAME, "serverId"); sdkParams.put(SDKParamKey.LONG_ROLE_CTIME, 1456397360); try { sdk.submitRoleData(MainActivity.this, sdkParams); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (AliNotInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (AliLackActivityException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void logout(){ try { sdk.logout(MainActivity.this, null); } catch (AliLackActivityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (AliNotInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void exit() { try { sdk.exit(MainActivity.this, null); } catch (AliLackActivityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (AliNotInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } } SDKEventReceiver eventReceiver = new SDKEventReceiver() { @Subscribe(event = SDKEventKey.ON_INIT_SUCC) private void onInitSucc() { // 初始化成功 Log.d(TAG, "init success"); } @Subscribe(event = SDKEventKey.ON_INIT_FAILED) private void onInitFailed(String data) { // 初始化失败 Log.d(TAG, "init failed:" + data); } @Subscribe(event = SDKEventKey.ON_LOGIN_SUCC) private void onLoginSucc(String sid) { // 登陆成功 // sid为用户的登陆会话标识,用于给游戏服务器校验用户登陆状态使用。 Log.d(TAG, "login success:sid:" + sid); } @Subscribe(event = SDKEventKey.ON_LOGIN_FAILED) private void onLoginFailed(String desc) { // 登陆失败 Log.d(TAG, "login failed:" + desc); } @Subscribe(event = SDKEventKey.ON_LOGOUT_SUCC) private void onLogoutSucc() { // 登出成功 Log.d(TAG, "logout success"); } @Subscribe(event = SDKEventKey.ON_LOGOUT_FAILED) private void onLogoutFailed() { // 登出失败 Log.d(TAG, "logout failed"); } @Subscribe(event = SDKEventKey.ON_EXIT_SUCC) private void onExit(String desc) { // 退出游戏 Log.d(TAG, "exit:" + desc); MainActivity.this.finish(); System.exit(0); } @Subscribe(event = SDKEventKey.ON_EXIT_CANCELED) private void onExitCanceled(String desc) { // 取消退出 Log.d(TAG, "exit cancel:" + desc); } @Subscribe(event = SDKEventKey.ON_CREATE_ORDER_SUCC) private void onCreateOrderSucc(OrderInfo orderInfo) { // 支付成功 if (orderInfo != null) { String txt = orderInfo.getOrderAmount() + "," + orderInfo.getOrderId() + "," + orderInfo.getPayWay(); Log.d(TAG, "充值成功: " + txt + "\n"); } Log.i(TAG, "pay succ"); } @Subscribe(event = SDKEventKey.ON_PAY_USER_EXIT) private void onPayUserExit(OrderInfo orderInfo) { // 支付失败 if (orderInfo != null) { String txt = orderInfo.getOrderAmount() + "," + orderInfo.getOrderId() + "," + orderInfo.getPayWay(); Log.d(TAG, "充值失败: " + txt + "\n"); } Log.i(TAG, "pay fail"); } }; }
至此咱们就把全部UC上线所需的接口完成了,添加UI并添加相应事件调用相应接口后,就是一个最简单的demo了
若是想要了解具体的接口做用,和相应参数的说明,请继续阅读如下内容,或查看官方文档
第一种步建立监听:
SDKEventReceiver eventReceiver = new SDKEventReceiver() { @Subscribe(event = SDKEventKey.ON_INIT_SUCC) private void onInitSucc() { // 初始化成功 Log.d(tag, "init success"); } @Subscribe(event = SDKEventKey.ON_INIT_FAILED) private void onInitFailed(String data) { // 初始化失败 Log.d(tag, "init failed:" + data); } @Subscribe(event = SDKEventKey.ON_LOGIN_SUCC) private void onLoginSucc(String sid) { // 登陆成功 // sid为用户的登陆会话标识,用于给游戏服务器校验用户登陆状态使用。 Log.d(tag, "login success:sid:" + sid); } @Subscribe(event = SDKEventKey.ON_LOGIN_FAILED) private void onLoginFailed(String desc) { // 登陆失败 Log.d(tag, "login failed:" + desc); } @Subscribe(event = SDKEventKey.ON_LOGOUT_SUCC) private void onLogoutSucc() { // 登出成功 Log.d(tag, "logout success"); } @Subscribe(event = SDKEventKey.ON_LOGOUT_FAILED) private void onLogoutFailed() { // 登出失败 Log.d(tag, "logout failed"); } @Subscribe(event = SDKEventKey.ON_EXIT_SUCC) private void onExit(String desc) { // 退出游戏 Log.d(tag, "exit:" + desc); MainActivity.this.finish(); System.exit(0); } @Subscribe(event = SDKEventKey.ON_EXIT_CANCELED) private void onExitCanceled(String desc) { // 取消退出 Log.d(tag, "exit cancel:" + desc); } @Subscribe(event = SDKEventKey.ON_CREATE_ORDER_SUCC) private void onCreateOrderSucc(OrderInfo orderInfo) { // 支付成功 if (orderInfo != null) { String txt = orderInfo.getOrderAmount() + "," + orderInfo.getOrderId() + "," + orderInfo.getPayWay(); Log.d(tag, "充值成功: " + txt + "\n"); } Log.i(tag, "pay succ"); } @Subscribe(event = SDKEventKey.ON_PAY_USER_EXIT) private void onPayUserExit(OrderInfo orderInfo) { // 支付失败 if (orderInfo != null) { String txt = orderInfo.getOrderAmount() + "," + orderInfo.getOrderId() + "," + orderInfo.getPayWay(); Log.d(tag, "充值失败: " + txt + "\n"); } Log.i(tag, "pay fail"); } };
监听建立完成后,须要在Activity onCreate中注册,并在Activity onDestroy中注销:
注册:UCGameSdk.defaultSdk().registeSDKEventReceiver(eventReceiver);
@Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UCGameSdk.defaultSdk().registeSDKEventReceiver(eventReceiver); }
注销:UCGameSdk.defaultSdk().unregisterSDKEventReceiver(eventReceiver);
@Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); UCGameSdk.defaultSdk().unregisterSDKEventReceiver(eventReceiver); }
这样在相应操做以后,UC的SDK就能给你回调了,在相应回调方法内,作本身游戏相应操做就行
第二步初始化:
首先定义一个全局变量:UCGameSdk sdk;
并在Activity onCreate中获取对象:sdk = UCGameSdk.defaultSdk();
以后就在Activity onCreate中调用UC的初始化接口:
private void init() { // TODO Auto-generated method stub GameParamInfo gameParamInfo = new GameParamInfo(); gameParamInfo.setCpId(cpId);//上文提到的游戏参数 参数类型int gameParamInfo.setGameId(gameId);//上文提到的游戏参数 参数类型int gameParamInfo.setServerId(serverId);//上文提到的游戏参数 参数类型int //设置是否支持查询充值历史和显示切换帐号功能, //若是不设置,默认具备查询充值历史记录,不具备切换帐户功能 gameParamInfo.setEnablePayHistory(true);//开启查询充值历史功能 gameParamInfo.setEnableUserChange(true);//开启帐号切换功能 //设置SDK屏幕方向 //LANDSCAPE:横屏,横屏游戏必须设置为横屏,PORTRAIT:竖屏 gameParamInfo.setOrientation(UCOrientation.PORTRAIT); SDKParams sdkParams = new SDKParams(); sdkParams.put(SDKParamKey.LOG_LEVEL, UCLogLevel.DEBUG);//日志等级 sdkParams.put(SDKParamKey.GAME_PARAMS, gameParamInfo); //FIXME always debug //是否打开调试模式。 //在为true的时候,会链接到联调测试环境(sdk.test4.9game.cn), //当为false的时候则会链接到正式环境(sdk.g.9game.cn)。 sdkParams.put(SDKParamKey.DEBUG_MODE, false); try { sdk.initSdk(MainActivity.this, sdkParams); } catch (AliLackActivityException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
调用登陆接口:
private void login() { try { sdk.login(MainActivity.this, null); } catch (AliLackActivityException e) { // TODO Auto-generated catch block activity为空,异常处理 e.printStackTrace(); } catch (AliNotInitException e) { // TODO Auto-generated catch block 未初始化,异常处理 e.printStackTrace(); } }
调用支付接口:
private void pay() { SDKParams sdkParams = new SDKParams(); sdkParams.put(SDKParamKey.CALLBACK_INFO, "{\"test\":true}"); sdkParams.put(SDKParamKey.SERVER_ID, "1"); sdkParams.put(SDKParamKey.ROLE_ID, "AAA"); sdkParams.put(SDKParamKey.ROLE_NAME, "BBB"); sdkParams.put(SDKParamKey.GRADE, "grade1"); sdkParams.put(SDKParamKey.NOTIFY_URL, ""); sdkParams.put(SDKParamKey.AMOUNT, "2.33"); sdkParams.put(SDKParamKey.CP_ORDER_ID, "20160000101001"); sdkParams.put(SDKParamKey.ACCOUNT_ID, "123"); sdkParams.put(SDKParamKey.SIGN_TYPE, "MD5"); sdkParams.put(SDKParamKey.SIGN, "游戏服务器根据以上信息签名后的结果"); // 以上字段的值都须要由游戏服务器生成 try { UCGameSdk.defaultSdk().pay(MainActivity.this, sdkParams); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block 参数错 e.printStackTrace(); } catch (AliLackActivityException e) { // TODO Auto-generated catch block activity null e.printStackTrace(); } catch (AliNotInitException e) { // TODO Auto-generated catch block 未初始化 e.printStackTrace(); } }
参数说明:
参数定义 |
参数名称 |
类型 |
是否必填 |
说明 |
ROLE_ID |
roleId |
String |
否 |
角色ID |
ROLE_NAME |
roleName |
String |
否 |
角色名称 |
GRADE |
grade |
String |
否 |
角色等级 |
CALLBACK_INFO |
callbackInfo |
String |
否 |
cp自定义信息,在支付结果通知时回传,CP能够本身定义格式,长度不超过250 |
AMOUNT |
amount |
String |
是 |
充值金额,若是传递为0表示用户能够自定义充值金额,保留小数点后2位,单位为元。例:10.00 |
SERVER_ID |
serverId |
String |
否 |
服务器ID,默认为0 |
NOTIFY_URL |
notifyUrl |
String |
否 |
服务器通知地址,若是为空以服务端配置地址做为通知地址,长度不超过100 |
CP_ORDER_ID |
cpOrderId |
String |
否 |
cp充值订单号,须要保证用户每次充值订单号的惟一性,长度不超过30 |
ACCOUNT_ID |
accountId |
String |
是 |
用户id,充值用户的统一帐号ID,由阿里游戏平台生成。 |
SIGN_TYPE |
signType |
String |
是 |
签名类型,MD5或者RSA 目前只支持MD5 |
SIGN |
sign |
String |
是 |
签名结果。 MD5(签名内容+apiKey);服务端生成 签名算法参考官方说明 |
接入提交游戏角色数据信息:
数据提交时机:
一、用户建立角色或已有角色进入游戏后
二、当用户的角色等级发生变化后
private void sendUserInfo() { SDKParams sdkParams = new SDKParams(); sdkParams.put(SDKParamKey.STRING_ROLE_ID, "roleId"); sdkParams.put(SDKParamKey.STRING_ROLE_NAME, "roleName"); sdkParams.put(SDKParamKey.LONG_ROLE_LEVEL, 1); sdkParams.put(SDKParamKey.STRING_ZONE_ID, "zoneId"); sdkParams.put(SDKParamKey.STRING_ZONE_NAME, "serverId"); sdkParams.put(SDKParamKey.LONG_ROLE_CTIME, 1456397360); try { sdk.submitRoleData(MainActivity.this, sdkParams); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (AliNotInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (AliLackActivityException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
参数说明:
参数定义 |
参数名称 |
类型 |
是否必填 |
说明 |
STRING_ROLE_ID |
roleId |
String |
是 |
角色ID,长度不超过50 |
STRING_ROLE_NAME |
roleName |
String |
是 |
角色名称,长度不超过50 |
LONG_ROLE_LEVEL |
roleLevel |
Long |
是 |
角色等级,长度不超过10 |
LONG_ROLE_CTIME |
roleCTime |
Long |
是 |
角色建立时间(单位:秒),长度10,获取服务器存储的时间,不可用手机本地时间 |
STRING_ZONE_ID |
zoneId |
String |
是 |
区服ID,长度不超过50 |
STRING_ZONE_NAME |
zoneName |
String |
是 |
区服名称,长度不超过50 |
登出与退出:登出为注销当前帐号,游戏应返回登录界面,退出为关闭游戏。
接入登出接口:
private void logout(){ try { sdk.logout(MainActivity.this, null); } catch (AliLackActivityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (AliNotInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
接入退出接口:
private void exit() { try { sdk.exit(MainActivity.this, null); } catch (AliLackActivityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (AliNotInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
² 代码混淆要求
若是游戏发布时采用proguard进行代码混淆,请在proguard配置文件加入如下代码,以免对SDK进行混淆,不然会形成SDK部分功能不正常。
-libraryjars './libs/alipay_sdk.jar' -libraryjars './libs/ucgamesdk.jar' -keep class android.**{ <methods>; <fields>; } -keep class cn.uc.**{ <methods>; <fields>; } -keep class com.alipay.**{ <methods>; <fields>; } -keep class com.ta.**{ <methods>; <fields>; } -keep class com.ut.**{ <methods>; <fields>; } -keep class org.json. **{ <methods>; <fields>; }
到这里就是接入完毕了,添加相应UI控件出包就是一个接入渠道的demo了,若是和游戏交互完成服务端接入完成,打包后就是成品啦,clean后到bin下面找 .apk包吧。
若是想了解更多,请关注咱们的blog和官网