Skip to content

startGameByPkgPath

启动游戏(通过本地文件路径)

startGameByPkgPath 允许开发者直接通过本地存储中的 游戏资源压缩包(.zip) 启动游戏。该方法会跳过版本检查和网络下载,直接进行解压、环境初始化并渲染视图。

此接口非常适合离线游戏场景内部测试或由业务侧自行控制资源下载与存放路径的特殊需求。


方法声明

java
/**
 * 启动游戏,根据游戏包本地文件路径
 *
 * @param pkgPath   本地文件路径
 * @param params    参数对象
 * @param listener  启动过程监听器
 * @return SUDOPGameTask 任务句柄
 */
public static SUDOPGameTask startGameByPkgPath(String pkgPath, SUDOPGamePackageParams params, SUDOPStartGameListener listener);

参数说明

属性类型描述
pkgPathString必填。游戏资源压缩包(.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:错误信息描述。


运行行为

  1. 快速解压:SDK 将指定的 .zip 资源释放到私有工作目录。
  2. 环境加载:加载脚本引擎并映射本地资源路径。
  3. 视图产出:完成首屏渲染逻辑后,通过 onSuccess 返回 gameView
  4. 离线运行:除非游戏业务逻辑内部需要联网,否则此启动过程完全不依赖 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 文件的生命周期。