| 对比项 | 打包器接入 | SDK接入 |
|---|---|---|
| 接入条件 | 不需要源代码,无需编译 | 需要用户端修改部分代码 |
| 接入速度 | 封装软件,接入可用 | 根据说明几分钟搞定 |
| 接入位置 | 封装登陆器 | 不限制,只要是客户端即可 |
| 适用性 | 仅支持EXE,PC平台封装 | 全平台,移动端为主 |
| 拓展性 | 无法使用SDK的AP接口 | 更灵活的使用规则 |
//引入windows基本库#include <windows.h>#include <iostream>
//加载dll库// ---- DLL 函数指针类型 ----using FnShieldStart = char* (*)(char*);using FnShieldStop = char* (*)();using FnShieldGetState = int (*)();using FnShieldVersion = char* (*)();using FnShieldFreeString = void (*)(char*);// ---- 定义DLL结构体并增加析构方法,用来释放库占用内存struct DllGuard {HMODULE hModule = nullptr;explicit DllGuard(const char* path) {hModule = LoadLibraryA(path);if (!hModule)throw std::runtime_error(std::string("LoadLibrary failed: ") + path+ " LastError=" + std::to_string(GetLastError()));std::cout << "[DLL] Loaded: " << path << "\n";}~DllGuard() {if (hModule) {FreeLibrary(hModule);std::cout << "[DLL] Unloaded\n";}}template<typename Fn>Fn proc(const char* name) const {auto fn = reinterpret_cast<Fn>(GetProcAddress(hModule, name));if (!fn)throw std::runtime_error(std::string("GetProcAddress failed: ") + name);return fn;}};// ---- 加载 DLL ----DllGuard dll("shieldmanager.dll");auto ShieldStart = dll.proc<FnShieldStart> ("ShieldStart");auto ShieldStop = dll.proc<FnShieldStop> ("ShieldStop");auto ShieldGetState = dll.proc<FnShieldGetState> ("ShieldGetState");auto ShieldVersion = dll.proc<FnShieldVersion> ("ShieldVersion");auto ShieldFreeString = dll.proc<FnShieldFreeString>("ShieldFreeString");//定义sdk_key字符指针,根据实际gamekey复制即可const char* SDK_KEY_DEFAULT ="";std::string sdkKey = SDK_KEY_DEFAULT;//调用上面定义的shieldStart函数,将真实的sdk_key传入char* result = ShieldStart(const_cast<char*>(sdkKey.c_str()));printResult("ShieldStart", result, ShieldFreeString);//结果为1表示正常启动
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.FOREGROUND_SERVICE" /><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
implementation fileTree(dir: 'libs', include: ['*.aar'])
import shieldmanager.Shieldmanager// SDK KEYprivate val sdkKey = "your-sdk-key"val resultEncoded = Shieldmanager.start(sdkKey)val resultJson = String(Base64.decode(resultEncoded, Base64.NO_WRAP), Charsets.UTF_8) //对结果进行base64解密val result = JSONObject(resultJson) //启动成功则返回为1val errMsg = result.optString("error", "")val data = result.optString("data", "")
val resultEncoded = Shieldmanager.stop()val resultJson = String(Base64.decode(resultEncoded, Base64.NO_WRAP), Charsets.UTF_8)val result = JSONObject(resultJson)val errMsg = result.optString("error", "")
Copyright © Yisu Cloud Ltd. All Rights Reserved. 2018 版权所有
广州亿速云计算有限公司 粤ICP备17096448号-1
粤公网安备 44010402001142号 增值电信业务经营许可证编号:B1-20181529