标签:pop 问题 bsp nal 关闭 dir 注意 anim data-
我们主要用到-s,-d,-e,-k,-b以及--disable-compile这几个参数:
-s就是你需要加密的lua脚本所在的目录。
-d就是逆需要将加密后的lua脚本放置的目录。
-e是开启XXTEA加密功能,如果不用这个参数,后面的也就不用了,这样子做是编译为字节码。
-k是在-e开启的情况下使用,XXTEA加密算法的key字段,这个自己定,不要太长,但越复杂越好。
-b是在-e开启的情况下使用,XXTEA加密算法的sign字段,这个自己定,不要太长,但越复杂越好。
--disable-compile是关闭字节码编译。为什么要加这个?因为现有的cocos引擎使用的是luajit来编译字节码,它仅支持32位,不支持64位的机子(截止至2017.01数据),而苹果官方要求上传的app必须兼容arm64的机子,因此只能选择XXTEA加密,这种加密方式也是很不错的,算法小巧,在没有key和sign的情况下不易被破解,兼容32和64位,是目前用cocos开发唯一可取的加密方式。
这个命令举个例子:
这条demo就是对src的所有lua脚本做key=testtt,sign=signnn的XXTEA加密,并关闭字节码编译。请注意,如果项目中除了lua脚本外,还有其他一些文件,比如plist,json,xml这些,是不会被编译的,实际跑的时候记得拷贝过去,保持源文件和目标文件具有一致性,否则会有问题的。
mytest
Lua 脚本加密
1.cocos luacompile -s /Users/wangchengcheng/Documents/SelfZone/Cocos/MyGame/src -d /Users/wangchengcheng/Documents/SelfZone/Cocos/MyGame/gametools -e -k mygamekey -b mygamesign --disable-compile
2.项目中使用
bool AppDelegate::applicationDidFinishLaunching()
{
// set default FPS
Director::getInstance()->setAnimationInterval(1.0 / 60.0f);
// register lua module
auto engine = LuaEngine::getInstance();
if(!m_bInitLuaEngine){
ScriptEngineManager::getInstance()->setScriptEngine(engine);
lua_State* L = engine->getLuaStack()->getLuaState();
lua_module_register(L);
register_custom_function(L);
register_all_packages();
m_bInitLuaEngine = true;
}
setMySearchPath();
LuaStack* stack = engine->getLuaStack();
// default key "2dxLua"
// default sign "XXTEA"
string mygamekey = "2dxLua";
string mygamesign = "XXTEA";
bool useSelfEncrypt = true;
if(useSelfEncrypt){
mygamekey = "mygamekey";
mygamesign = "mygamesign";
}
stack->setXXTEAKeyAndSign(mygamekey.c_str(), strlen(mygamekey.c_str()), mygamesign.c_str(), strlen(mygamesign.c_str()));
if (engine->executeScriptFile("main.lua"))
{
return false;
}
return true;
}
标签:pop 问题 bsp nal 关闭 dir 注意 anim data-
原文地址:http://www.cnblogs.com/cci8go/p/7765842.html