关于cocos中给lua加密的问题(iOS) luacompile

新项目开始用cocos-lua来做,在给iOS加密时 遇到了问题,po出来请大家帮忙解决一下

环境: Mac OS 10.10
Xcode: 7.2(7C68)
Cocos: 3.7.1

官方帮助文档如下:
http://www.cocos2d-x.org/wiki/Cocos_luacompile

我的步骤如下:

  1. 运行cocos luacompile命令,设置源目录,目标目录,加密key与sign,并且disable-compile来适配64bit iOS

  2. 在xcode项目里,移出了原来的src, 并加入了luac版本的src目录,保持一致的结构

  3. 在AppDelegate.cpp中,设置了加密:

然后运行,程序在进入后报错:

请问一下大家是否也遇到了类似的问题? 是如何解决的? ps,未加密的源代码可以直接运行。

分割线-------------------------------------------
有人提出key或sign错误,仔细核对过 有没有任何问题,就在代码里直接打印出来吧:

// output luac file:
Data srcInfo = FileUtils::getInstance()->getDataFromFile(“src/main.luac”);
//decode:
xxtea_long len = 0;
unsigned char * result = xxtea_decrypt(srcInfo.getBytes() + ds_sign_len,
(xxtea_long)srcInfo.getSize() - ds_sign_len,
(unsigned char* )ds_key.c_str(),
(xxtea_long)ds_key_len,
&len);
printf("\n result: %s \n len; %ld",result,len);

结果如下,与源文件完全一致:

log中的完整错误:

load “src/main.luac”, error: syntax error during pre-compilation.
:1: module ‘src/main.lua’ not found:
no field package.preload’src/main.lua’]:1: ‘=’ expected near ‘+’
no file ‘./src/main/lua.lua’
no file ‘/Users/cocos2d/MyWork/cocos2d-x-3rd-party-libs-src/cocos2d-x-3rd-party-libs-src/contrib/install-ios/x86_64/share/luajit-2.0.3/src/main/lua.lua’
no file ‘/usr/local/share/lua/5.1/src/main/lua.lua’
no file ‘/usr/local/share/lua/5.1/src/main/lua/init.lua’
no file ‘/Users/cocos2d/MyWork/cocos2d-x-3rd-party-libs-src/cocos2d-x-3rd-party-libs-src/contrib/install-ios/x86_64/share/lua/5.1/src/main/lua.lua’
no file ‘/Users/cocos2d/MyWork/cocos2d-x-3rd-party-libs-src/cocos2d-x-3rd-party-libs-src/contrib/install-ios/x86_64/share/lua/5.1/src/main/lua/init.lua’
no file ‘./src/main/lua.so’
no file ‘/usr/local/lib/lua/5.1/src/main/lua.so’
no file ‘/Users/cocos2d/MyWork/cocos2d-x-3rd-party-libs-src/cocos2d-x-3rd-party-libs-src/contrib/install-ios/x86_64/lib/lua/5.1/src/main/lua.so’
no file ‘/usr/local/lib/lua/5.1/loadall.so’
no file ‘./src/main.so’
no file ‘/usr/local/lib/lua/5.1/src/main.so’
no file ‘/Users/cocos2d/MyWork/cocos2d-x-3rd-party-libs-src/cocos2d-x-3rd-party-libs-src/contrib/install-ios/x86_64/lib/lua/5.1/src/main.so’
no file ‘/usr/local/lib/lua/5.1/loadall.so’
Message from debugger: Terminated due to signal 15

我没有出现过这类问题,你使用的是哪个版本?

cocos 3.7.1

环境: Mac OS 10.10
Xcode: 7.2(7C68)
Cocos: 3.7.1

cocos2d-x 是哪个版本?

2dx版本3.7.1

cocos版本不清楚,输入命令cocos -v 出来的输出如下:
cocos -v
1.4

更新一下: 在terminal中用了cocos-v 发现版本是1.4 又检查了一下.bash_profile发现cocos目录定义到了之前的3.3版本文件夹下。

现在已经更新:
cocos 版本1.9
cocos2d-x版本 3.7.1

问题依然存在…:

{
cocos2d.x.version: cocos2d-x-3.7.1
cocos2d.x.compiled_with_gl_state_cache: true
cocos2d.x.build_type: DEBUG
gl.supports_vertex_array_object: true
cocos2d.x.compiled_with_profiler: false
gl.renderer: Apple Software Renderer
gl.vendor: Apple Inc.
gl.max_texture_size: 4096
gl.max_samples_allowed: 4
gl.version: OpenGL ES 2.0 APPLE-12.0.40
gl.supports_S3TC: false
gl.supports_ATITC: false
gl.supports_ETC1: false
gl.max_texture_units: 8
gl.supports_PVRTC: true
gl.supports_NPOT: true
gl.supports_discard_framebuffer: true
gl.supports_BGRA8888: false
}

result:
cc.FileUtils:getInstance():setPopupNotify(false)
cc.FileUtils:getInstance():addSearchPath(“src/”)
cc.FileUtils:getInstance():addSearchPath(“res/”)

require “config”
require “cocos.init”

local function main()
require(“app.MyApp”):create():run();
end

local status, msg = xpcall(main, G__TRACKBACK)
if not status then
print(msg)
end

len; 345Console: listening on 0.0.0.0 : 6050
Console: listening on 0.0.0.0 : 6060
cocos2d: fullPathForFilename: No file found at main.luac. Possible missing file.
cocos2d: fullPathForFilename: No file found at main.lua. Possible missing file.
can not get file data of /usr/local/share/lua/5.1/?/init.luamain.lua
:1: module ‘main’ not found:
no field package.preload’main’]
no file ‘./main.lua’
no file ‘/usr/local/share/luajit-2.0.3/main.lua’
no file ‘/usr/local/share/lua/5.1/main.lua’
no file ‘/usr/local/share/lua/5.1/main/init.lua’
no file ‘./main.so’
no file ‘/usr/local/lib/lua/5.1/main.so’
no file ‘/usr/local/lib/lua/5.1/loadall.so’
2016-02-05 12:12:58.567 ib_book1-mobile cocos2d: surface size: 1136x640
load “src/main.luac”, error: syntax error during pre-compilation.
:1: module ‘src/main.luac’ not found:
no field package.preload’src/main.luac’]:1: ‘=’ expected near ‘char(23)’
no file ‘./src/main/luac.lua’
no file ‘/usr/local/share/luajit-2.0.3/src/main/luac.lua’
no file ‘/usr/local/share/lua/5.1/src/main/luac.lua’
no file ‘/usr/local/share/lua/5.1/src/main/luac/init.lua’
no file ‘./src/main/luac.so’
no file ‘/usr/local/lib/lua/5.1/src/main/luac.so’
no file ‘/usr/local/lib/lua/5.1/loadall.so’
no file ‘./src/main.so’
no file ‘/usr/local/lib/lua/5.1/src/main.so’
no file ‘/usr/local/lib/lua/5.1/loadall.so’

问题已经解决。

原因是:CodeIDESupport.h文件中

#ifndef CODE_IDE_SUPPORT_H
#define CODE_IDE_SUPPORT_H

// define 1 to open Cocos Code IDE support, 0 to disable
#define CC_CODE_IDE_DEBUG_SUPPORT 1

#endif /* CODE_IDE_SUPPORT_H */

把1改为0 禁止IDE支持,即可正常解码运行。

在cocos2d 3.15版本中没有CodeIDESupport.h文件了,请问还要怎么改

求大神帮帮忙看看这个问题