preStartGameByPkgPath
预启动游戏(通过本地文件路径)
preStartGameByPkgPath 允许开发者指定一个本地的**游戏资源压缩包(.zip)**进行深度的预启动。它在 preLoadGameByFilePath 的基础上,进一步激活了游戏的业务逻辑层。
调用此接口后,SDK 会完成文件的解压、Runtime 初始化,并直接运行游戏脚本进入其加载首屏的逻辑。这是在离线部署或自定义资源分发场景下,能提供最快启动速度的方案。
方法声明
java
/**
* 预启动游戏,根据游戏包本地文件路径
*
* @param pkgPath pkgPath
* @param params 包含本地文件路径及初始化配置的参数对象
* @param listener 预启动状态监听器
* @return SUDOPGameTask 任务句柄,用于管理预启动的游戏实例
*/
public static SUDOPGameTask preStartGameByPkgPath(String pkgPath, SUDOPGamePackageParams params, SUDOPPreStartGameListener listener);参数说明
| 属性 | 类型 | 描述 |
|---|---|---|
| filePath | 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. SUDOPPreStartGameListener
void onSuccess(String gameId, SUDRTGameHandle handle):预启动成功。游戏已在后台完成首屏逻辑运算和渲染准备。void onFailure(int retCode, String retMsg):预启动失败。常见原因:路径无效、Zip 包损坏或内存不足。
运行行为
- 同步解压:SDK 将指定的
.zip文件解压至内部工作目录。 - 脚本激活:不同于预加载仅准备环境,预启动会直接调用游戏的入口脚本,触发游戏内部的
onLoad等生命周期函数。 - 静默运行:游戏在后台进行必要的网络请求预取和资源解码,并将画面渲染至内存缓冲区。
- 即时复用:当用户正式触发启动时,SDK 会直接复用此
handle关联的实例,跳过所有初始化耗时。
代码示例
java
String pkgPath = getFilesDir().getAbsolutePath() + "/offline_bundles/game_202.zip";
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.preStartGameByPkgPath(pkgPath, params, new SUDOPPreStartGameListener() {
@Override
public void onSuccess(String gameId, SUDRTGameHandleProvider provider) {
}
@Override
public void onFailure(int retCode, String retMsg) {
}
});
// 注意:如果用户取消进入游戏,务必销毁任务
// task.destroy();注意事项
- 资源消耗:由于涉及文件解压及脚本持续运行,此接口对 CPU 和内存的占用较高。
- 文件权限:请确保 App 拥有对该路径文件的读取权限。
- 任务销毁:预启动会产生一个真实的游戏运行实例。若不确定用户是否会进入游戏,请在页面不可见时及时调用
task.destroy()。