保护你的 sdkbox_config.json 文件

前提条件

SDKBox 内置的保护措施

1. 加密 sdkbox_config.json

# 加密
sdkbox encrypt -i sdkbox_config.json -o sdkbox_config.json --key your_key

# 解密
sdkbox decrypt -i sdkbox_config.json -o sdkbox_config.json --key your_key

2. 设置秘钥

// AppDelegate.cpp
#include <sdkbox/Sdkbox.h>


sdkbox::init("", "your_key"); // 第一个参数必须为空 ""
sdkbox::IAP::init();
sdkbox::PluginAdMob::init();

自己加密方案

// AppDelegate.cpp
#include <sdkbox/Sdkbox.h>

std::string content = __decrypt__("your_encrypt_content");
sdkbox::setConfig(content); // @content 为未加密的 'sdkbox_config.json' 内容
sdkbox::IAP::init();
sdkbox::PluginAdMob::init();

使用 Cocos Creator 的保存措施

基本思路: Cocos Crator 本身是提供 JS 源码的加密支持的. 但是对 Cocos2dx 引擎的 Res 目录并没有加密, 而 sdkbox_config.json 就是放在不会加密的 Res 目录下的. 所以我们需要把 sdkbox_config.json 移到 Creator 工程的 assert 目录, 并把 sdkbox_config.json 变为一个 js 文件. 然后在开发代码中 require 这个 js 文件, 再把它传给 sdkbox .

具体步骤如下:

...
#include "SDKBoxJSHelper.h"
...

bool AppDelegate::applicationDidFinishLaunching()
{
    ...

    jsb_register_all_modules();
    se->addRegisterCallback(register_all_SDKBoxJS_helper);

    ...

    return true;
}

module.exports =
{
    "android": {
        "iap": {
            ...
        }
        ...
    },
    "ios": {
        "iap": {
            ...
        }
        ...
    }
}

const sdkbox_config = require('../SDKBox/sdkbox_config')
...
sdkbox.setConfig(JSON.stringify(sdkbox_config)); // 在插件初始化之前调用
...
sdkbox.PluginXXX.init();
...