startGameByPkgPath
启动游戏(通过本地文件路径)
startGameByPkgPath 允许开发者直接通过本地存储中的 游戏资源压缩包(.zip) 启动游戏。该方法会跳过版本检查和网络下载,直接进行解压、环境初始化并渲染视图。
此接口非常适合离线游戏场景、内部测试或由业务侧自行控制资源下载与存放路径的特殊需求。
方法声明
java
/**
* 启动游戏,根据游戏包本地文件路径
*
* @param pkgPath 本地文件路径
* @param params 参数对象
* @param listener 启动过程监听器
* @return SUDOPGameTask 任务句柄
*/
public static SUDOPGameTask startGameByPkgPath(String pkgPath, SUDOPGamePackageParams params, SUDOPStartGameListener listener);参数说明
| 属性 | 类型 | 描述 |
|---|---|---|
| pkgPath | 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 将指定的
.zip资源释放到私有工作目录。 - 环境加载:加载脚本引擎并映射本地资源路径。
- 视图产出:完成首屏渲染逻辑后,通过
onSuccess返回gameView。 - 离线运行:除非游戏业务逻辑内部需要联网,否则此启动过程完全不依赖 SUD 服务端。
代码示例
java
// 1. 设置本地包路径参数
String pkgPath = "/sdcard/Download/my_game_package.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 gameTask = SUDOP.startGameByPkgPath(pkgPath, 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) {
}
});注意事项
- 权限声明:请确保应用在
AndroidManifest.xml中声明了读取存储的权限,并在 Android 6.0+ 上动态申请。 - 包体校验:SDK 会验证压缩包内的目录结构(如是否存在
app.json),非标准包会导致启动失败。 - 资源清理:手动指定的路径文件不会被 SDK 自动删除,开发者需自行管理该原始
.zip文件的生命周期。