startGameByUrl
启动游戏(通过游戏包 URL)
startGameByUrl 是一个“一站式”启动接口。它允许开发者直接传入一个远程 URL 地址,由 SDK 自动完成从下载、校验、解压到最终初始化并显示游戏画面的全过程。
该接口常用于测试包分发、跳过服务端版本管理的自定义 CDN 场景,或是需要动态加载非商店配置内游戏的特殊业务逻辑。
方法声明
java
/**
* 启动游戏,根据游戏包 URL
*
* @param url 游戏包 URL
* @param params 参数对象
* @param listener 启动过程监听器
* @return SUDOPGameTask 任务句柄
*/
public static SUDOPGameTask startGameByUrl(String url, SUDOPGamePackageParams params, SUDOPStartGameListener listener);参数说明
| 属性 | 类型 | 描述 |
|---|---|---|
| gamePkgUrl | String | 必填。游戏资源压缩包(.zip)的完整远程下载地址。 |
1. SUDOPStartGameListener
void onGamePkgDecrypt(GamePkgDecryptHandle handle, String filePath):游戏包解密回调。void onCreated(SUDRTGameHandle gameHandle):游戏实例创建完成。gameHandle为游戏实例句柄,可用于后续控制游戏生命周期或交互。void onSuccess(String gameId, SUDRTGameHandle gameHandle):游戏启动成功。void onFailure(int retCode, String retMsg):游戏启动失败。
2. GamePkgDecryptHandle
void success(String decryptedFilePath, boolean isDeleteFile):解密成功。decryptedFilePath:解密后的文件路径。isDeleteFile:游戏加载完成后是否删除该文件。void fail(int retCode, String retMsg):解密失败。retCode:错误码。retMsg:错误信息描述。
运行行为
- 缓存检测:SDK 会比对该 URL 对应的本地缓存。如果文件已存在且完整,则直接跳过下载。
- 多线程下载:若无缓存,SDK 启动后台下载任务,并持续触发
onProgress。 - 静默初始化:下载完成后,在后台执行解压与脚本环境加载。
- UI 挂载:一切就绪后,在主线程返回
gameView,开发者将其addView到容器中即可呈现画面。
代码示例
java
// 1. 设置下载启动参数
String url = "https://cdn.example.com/games/v2/test_game.zip";
// 2. 发起启动
SUDOPGamePackageParams params = new SUDOPGamePackageParams();
params.version = "gamePkgVersion";
params.fid = "2e7ca170f33629c7baf4dc430c541c43";
params.fidType = FIDType.MD5;
params.appGameID = "appGameID";
params.appCPID = "Game Developer id";
params.appGroupID = "Game developer group id";
SUDOPGameTask gameTask = SUDOP.startGameByUrl(url, params, new SUDOPStartGameListener() {
@Override
public void onGamePkgDecrypt(GamePkgDecryptHandle handle, String filePath) {
}
@Override
public void onCreated(SUDRTGameHandle gameHandle) {
}
@Override
public void onSuccess(String gameId, SUDRTGameHandle gameHandle) {
// 将这个View贴到app自身的页面上即可
View gameView = gameHandle.getGameView();
}
@Override
public void onFailure(int retCode, String retMsg) {
}
});注意事项
- 流量提醒:由于此接口会触发大文件下载,在移动网络下建议提示用户。
- URL 时效性:若 CDN 链接带有鉴权参数(如 Token),请确保在调用时链接尚未过期。
- 任务生命周期:与 ID 启动一致,必须在 Activity 销毁时调用
task.destroy(),以中止下载或销毁游戏实例。