環境:android
win7 64windows
cocos2d-2.1rc0-x-2.1.2app
lua 5.1加密
一般咱們編寫好的lua代碼都是明文形式,誰均可以查看修改,爲了防止本身的勞動成果不被別人輕易的盜取,能夠使用luac(lua庫中自帶)對其進行加密,轉換爲二進制文件。這樣lua代碼就沒法直接查看,可是這裏會有一個問題:在windows下可以很好的運行,在android上就會黑屏,提示錯誤:lua
[LUA ERROR] binary string: unexpected end in precompiled chunkspa
追根溯源code
在bool AppDelegate::applicationDidFinishLaunching()中查看lua加載代碼:blog
1 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 2 CCString* pstrFileContent = CCString::createWithContentsOfFile( "program/main.lua" ); 3 if (pstrFileContent) 4 { 5 pEngine->executeString(pstrFileContent->getCString()); 6 } 7 #else 8 std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename( "program/main.lua" ); 9 pEngine->addSearchPath( path.substr( 0, path.find_last_of( "/" ) ).c_str() ); 10 pEngine->executeScriptFile( path.c_str() ); 11 #endif
這裏用的是executeString()方法來加載lua文件,查看源碼發現:ip
1 LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s) { 2 printf("%s", s); 3 return luaL_loadbuffer(L, s, strlen(s), s); 4 }
dget