logo
0
0
WeChat Login
feat: 更新到 0.2.21,支持差量升级

一、下载 SDK

Shiply C++ SDK 支持 Windows、macOS、Linux 等操作系统,可用于配置与开关发布、资源发布。

  • 下载 SDK 和 Demo:ShiplyCppSDK

  • SDK 文件:libs 目录下的 shiply.dll、shiply.lib 及 include 目录文件

  • 依赖库

    • openssl 1.1.1
    • minizip-ng、zlib
    • mmkv
    • nlohmann/json
  • 生成 Demo 工程(Windows 平台):

    • 在 ShiplyDLLDemo 目录下创建 build 目录
    • 执行 generate_sln.bat
    • 打开 build 目录下的 sln 工程文件
    • 将 reshub_demo 设置成启动项目,将编译模式从 Debug 改成 Release,运行 Demo

二、接入 SDK

#include "reshub/core/reshub.h" #include "reshub/core/reshub_param.h" #include "reshub/core/reshub_center.h" #include "reshub/default_injectImpl/kv/reshub_mmkv_factory_impl.h" #include "reshub/default_injectImpl/download/reshub_download_impl.h" #include "reshub/default_injectImpl/file/reshub_file_impl.h" #include "reshub/default_injectImpl/log/reshub_logger_impl.h" #include "reshub/core/listener/reshub_res_refresh_listener.h" #include "reshub/core/Util/reshub_file_helper.h" #include "reshub/core/reshub_common_defines.h" std::shared_ptr<ResHubParam> param = std::make_shared<ResHubParam>(); param->appVersion = "1.0.0"; // 重要,作为下发条件 param->systemVersion = "13.2.1"; // 重要,作为下发条件 param->deviceType = "你的设备类型"; // 重要,作为下发条件 param->qimei = "你的设备ID,作为设备唯一标识符"; // 重要,作为下发条件 // SDK 支持修改依赖注入,这里只需要接出 SDK 日志打印,使用默认实现即可, ResHubDependProtocol depends; depends.kvFactoryImpl = ResHubMMKVFactoryImpl::sharedInstance(); depends.downloadImpl = ResHubDownloadImpl::sharedInstance(); depends.fileImpl = ResHubFileImpl::sharedInstance(); ReshubLoggerImpl::sharedInstance()->SetLevelLogCallback([](int level, const std::string& log){ cout << log << endl; // 请将 SDK 的日志打印到你的 App 日志文件中去 }); depends.logImpl = ReshubLoggerImpl::sharedInstance(); param->depends = depends; // 支持 Windows、Mac(iOS、Android等移动平台请接专用SDK,功能更全面) param->platform = ResHubPlatformWindows; param->resConfigStoragePath = getCurrentWorkingDirectory() + ResHubPathSeperator + "reshub" + ResHubPathSeperator + "mmkv"; param->resStoragePath = getCurrentWorkingDirectory() + ResHubPathSeperator + "reshub" + ResHubPathSeperator + "resource"; ResHubCenter::sharedInstance()->initSDK(param); // 从 Shiply 项目设置复制 APP ID 和 APP KEY,正式环境为 "online",测试环境为 "test" reshub_ = ResHubCenter::sharedInstance()->resHubWithAppId("95b84b2e2d", "c3fb420e-xxxx-xxxx-xxxx-4cdb7a81ac16", "online"); reshub_->addResRefreshListener(std::make_shared<DemoResHubResRefreshListener>());

正式环境和测试环境

Shiply 的环境是由 SDK 初始化方法 resHubWithAppId 的第三个参数决定的

// 在 reshub/core/reshub_center.h 中有定义 // 正式环境 const std::string ResHubOnlineEnv = "online"; // 测试环境 const std::string ResHubTestEnv = "test"; // 其他环境:Shiply 还支持自定义测试环境,填写对应的环境ID(数字)即可

接入示例中用到的辅助方法

std::string getCurrentWorkingDirectory() { char path[1024]; #ifdef _WIN32 if (_getcwd(path, sizeof(path)) == nullptr) { return ""; } #else if (getcwd(path, sizeof(path)) == nullptr) { return ""; } #endif return path; } class DemoResHubResRefreshListener: public ResHubResRefreshListener { public: ~DemoResHubResRefreshListener() {} // 启动后,资源的第一次加载回调 void onResFirstLoaded(const std::string resId, std::shared_ptr<ResHubModel> resHubModel) override {} // 资源从远程更新完成回调 void onResRefreshed(const std::string resId, std::shared_ptr<ResHubModel> resHubModel) override {} // 从远程拉取资源配置更新完成回调(此时只拉取配置,未进行下载) void onResConfigInfoPullTypeAllFinished(const std::map<std::string, std::shared_ptr<ResHubModel>> resHubModelDict) override { } };

三、使用 SDK

读取本地最新版本,并从远程获取更新(推荐)

// 1. 根据从本地最新配置,异步下载远程最新资源 reshub->loadLatestWithId(DemoResID, [](float progress){ }, [](bool success, std::shared_ptr<ResHubError> error, std::shared_ptr<ResHubModel> resModel){ }); // 2. 下载后,可多次读取已经下载到本地的最新资源 // 通过 model->getLocalPath()本地的文件路径(下载并解压后) std::shared_ptr<ResHubModel> model = reshub->latestResWithId(DemoResID);

读取本地锁定版本,并从远程获取更新(按需使用)

锁定版本:App 启动后,SDK 会记住每个资源首次返回给 App 的版本。通过【锁定版本】相关的接口,App 整个生命周期会固定返回一个版本,直到下次重启才会返回最新版本。适用于希望 App 启动后资源保持一致,或者只能在启动时才能安全更新资源的场景。

// 1. 异步拉取资源(的锁定版本) reshub->loadWithId(DemoResID, [](float progress){ }, [](bool success, std::shared_ptr<ResHubError> error, std::shared_ptr<ResHubModel> resModel){ }); // 2. 读取本地资源(的锁定版本) std::shared_ptr<ResHubModel> model = reshub->resWithId(DemoResI);

About

No description, topics, or website provided.
Language
Markdown29.9%
C17.6%
Batch7%
CMake4.3%
Others41.2%