Android端快速接入
说明:本指南介绍了 SUDGI SDK 的极速集成方式。通过 auth 鉴权后,开发者可以直接通过 gameId 一键启动游戏,并利用 SUDOPGameTask 管理游戏生命周期。
一、 引入 SDK 与工程配置
1. 方式 A:通过 Gradle 引入
在项目根目录的 build.gradle 中配置仓库,并在应用层级 build.gradle 中添加依赖:
gradle
dependencies {
implementation 'com.sud.gi:sudgi:latest.release' // 建议使用最新版本
}2. 方式 B:手动引入
- 将
sudgi.aar文件拷贝至libs目录。 - 在
build.gradle中添加:implementation files('libs/sudgi.aar')。
二、 SDK 初始化
在 Application 或主 Activity 启动时执行,用于验证 App 身份。
java
SUDOPInitSDKParams params = new SUDOPInitSDKParams();
params.context = getApplicationContext();
params.appId = "您的 AppID";
params.appKey = "您的 AppKey";
SUDOP.initSDK(params, new SUDOPInitSDKListener() {
@Override
public void onSuccess() {
Log.d("SUDOP", "SDK 初始化成功");
}
@Override
public void onFailure(int retCode, String retMsg) {
Log.e("SUDOP", "初始化失败: " + retMsg);
}
});三、 用户鉴权 (auth)
在启动游戏前,必须同步业务后端生成的 userSignature,以建立合法的用户会话。
java
SUDOPAuthParams authParams = new SUDOPAuthParams();
authParams.userSignature = "业务后端下发的签名字符串";
SUDOP.auth(authParams, new SUDOPAuthListener() {
@Override
public void onSuccess() {
Log.d("SUDOP", "用户鉴权成功");
}
@Override
public void onFailure(int retCode, String retMsg) {
Log.e("SUDOP", "鉴权失败: " + retMsg);
}
});四、 极速启动游戏
通过 startGameByGameId 直接拉起游戏。SDK 会自动处理下载、解压、环境初始化及渲染。
java
SUDOPStartGameByGameIdParams startParams = new SUDOPStartGameByGameIdParams();
startParams.gameId = "game_101";
// 返回的 task 对象用于后续销毁
SUDOPGameTask gameTask = SUDOP.startGameByGameId(startParams, new SUDOPStartGameListener() {
@Override
public void onSuccess(String gameId, SUDRTGameHandle handle) {
// 1. 获取游戏 View 并添加到布局中
View gameView = handle.getGameView();
containerLayout.addView(gameView);
// 2. 注册业务代理以接收用户信息请求等回调
// handle.registerWrappedClient(myWrappedClient);
}
@Override
public void onProgress(int progress) {
Log.d("SUDOP", "游戏加载进度: " + progress + "%");
}
@Override
public void onFailure(int retCode, String retMsg) {
Log.e("SUDOP", "启动失败: " + retMsg);
}
});五、 销毁与资源释放
当用户退出游戏页面(如 onStop 或 onDestroy)时,调用 destroy 方法。
java
@Override
protected void onDestroy() {
super.onDestroy();
if (gameTask != null) {
// 销毁游戏实例并释放所有占用的内存和 CPU 资源
gameTask.destroy();
gameTask = null;
}
}