preLoadGameByUrl
预加载游戏(通过游戏包 URL)
preLoadGameByUrl 方法支持通过一个远程 URL 地址直接进行预加载。该接口集成了“下载”与“环境初始化”两个阶段:SDK 会先将 URL 指向的游戏包下载到本地缓存,随后立即执行解压及运行时环境的加载。
此方法适用于测试环境下的快速预览,或业务侧拥有独立资源服务器、希望绕过 SDK 默认版本分发逻辑的场景。
方法声明
java
/**
* 预加载游戏,根据游戏包 URL
*
* @param url pkg url
* @param params 包含游戏包 URL 地址的参数对象
* @param listener 预加载状态监听器
* @return SUDOPGameTask 任务句柄,可用于管理或销毁预加载任务
*/
public static SUDOPGameTask preLoadGameByUrl(String url, SUDOPGamePackageParams params, SUDOPPreLoadGameListener listener);参数说明
用于指定远程资源的位置:
| 属性 | 类型 | 描述 |
|---|---|---|
| url | String | 必填。游戏资源压缩包(.zip)的完整远程下载地址。 |
1. SUDOPGamePackageParams
用于指定具体的资源下载链接:
| 属性 | 类型 | 描述 |
|---|---|---|
| version | String | 必填。游戏版本 |
| fid | String | 游戏包文件指纹 |
| fidType | FIDType | 游戏包文件指纹生成方式 |
| appGameID | String | 必填。指定gameID |
| appCPID | String | 指定游戏开发者的CP ID |
| appGroupID | String | 指定游戏开发者的Group ID |
2. FIDType
用于指定游戏包文件指纹生成方式
| 属性 | 类型 | 描述 |
|---|---|---|
| MD5 | enum | MD5算法 |
| CRC32 | enum | CRC32算法 |
| SHA1 | enum | SHA1算法 |
| SHA256 | Strenuming | SHA256算法 |
3. SUDOPPreLoadGameListener
用于接收预加载过程的回调:
void onSuccess(String gameId, SUDRTGameHandle handle):预加载完成。gameId:从下载的资源包中解析出的游戏唯一标识。handle:游戏实例句柄。void onFailure(int retCode, String retMsg):预加载失败。可能原因包括 URL 无效、网络超时、下载包损坏或内存不足。
运行行为
- 资源获取:SDK 首先检查本地是否有该 URL 对应的缓存。若无,则启动多线程下载。
- 校验与解压:下载完成后进行文件 MD5 校验(若支持)并解压至沙盒目录。
- 引擎初始化:启动运行时(Runtime),加载 JS 引擎及核心资源。
- 后台运行:游戏实例进入挂起状态。当最终调用启动接口时,可实现“秒开”效果。
代码示例
java
// 1. 设置下载 URL 参数
String url = "https://example.com/assets/game_package_v2.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 preLoadTask = SUDOP.preLoadGameByUrl(url, params, new SUDOPPreLoadGameListener() {
@Override
public void onSuccess(String gameId, SUDRTGameHandleProvider provider) {
}
@Override
public void onFailure(int retCode, String retMsg) {
}
});
// 必要时取消任务
// preLoadTask.destroy();注意事项
- 网络开销:由于该方法包含下载过程,在非 Wi-Fi 环境下调用需注意流量消耗。
- 资源清理:通过 URL 加载的资源通常会遵循 SDK 的缓存清理策略。
- URL 安全:请确保传入的链接安全可靠,避免加载未授权的第三方资源包。