使用compile_scripts.php脚本,生成lua打包的zip,解决加密问题

   2023-02-09 学习力0
核心提示:@echo offset DIR=%~dp0set TEMPLATE_ROOT=%DIR%..echo %TEMPLATE_ROOT%\quick\bin\win32\php.exeecho - cleanupif exist "%DIR%script" rmdir /s /q "%DIR%script"mkdir "%DIR%script"if exist "%DIR%scriptDonkey" rmdir /s /q &q
@echo off

set DIR=%~dp0
set TEMPLATE_ROOT=%DIR%..
echo %TEMPLATE_ROOT%\quick\bin\win32\php.exe

echo - cleanup
if exist "%DIR%script" rmdir /s /q "%DIR%script"
mkdir "%DIR%script"
if exist "%DIR%scriptDonkey" rmdir /s /q "%DIR%scriptDonkey"
mkdir "%DIR%scriptDonkey"

if exist "%DIR%framework_precompiled/" rmdir /s /q "%DIR%framework_precompiled/"
mkdir "%DIR%framework_precompiled/"

echo - copy scriptDonkey
xcopy  /s /q %TEMPLATE_ROOT%\project\cardgame\src\app\*.*      %DIR%script\app\

echo - copy framework_compiled
xcopy  /s /q %TEMPLATE_ROOT%\project\cardgame\src\framework\*.*      %DIR%framework_precompiled\framework\
xcopy  /s /q %TEMPLATE_ROOT%\project\cardgame\src\cocos\*.*      %DIR%framework_precompiled\cocos\


echo - copy scriptDonkey
xcopy /s /q %TEMPLATE_ROOT%\project\cardgame\src\bqsframework\*.*    %DIR%scriptDonkey\bqsframework\
xcopy /s /q %TEMPLATE_ROOT%\project\cardgame\src\config.lua    %DIR%scriptDonkey\
xcopy /s /q %TEMPLATE_ROOT%\project\cardgame\src\main.lua    %DIR%scriptDonkey\



%TEMPLATE_ROOT%\quick\bin\win32\php.exe %TEMPLATE_ROOT%\quick\bin\lib\compile_scripts.php -i script/  -o script.zip   
%TEMPLATE_ROOT%\quick\bin\win32\php.exe %TEMPLATE_ROOT%\quick\bin\lib\compile_scripts.php -i scriptDonkey/ -o scriptDonkey.zip
%TEMPLATE_ROOT%\quick\bin\win32\php.exe %TEMPLATE_ROOT%\quick\bin\lib\compile_scripts.php -i framework_precompiled/ -o framework_precompiled.zip

echo -copy zip to res/
xcopy /s /q  %DIR%scriptDonkey.zip  %TEMPLATE_ROOT%\project\cardgame\res\ 
xcopy /s /q  %DIR%framework_precompiled.zip  %TEMPLATE_ROOT%\project\cardgame\res\ 

pause

 

将上面的bat自己按照需求改一下,然后执行,会生成zip包

可以参考quick\bin\compile_scripts.bat。

@echo off
set DIR=%~dp0
%DIR%win32\php.exe "%DIR%lib\compile_scripts.php" %*

 

compile_scripts.php 参数如下:

$options = array(
    array('h',   'help',       0,      false,       'show help'),
    array('i',   'src',        1,      null,        'source files directory'),
    array('o',   'output',     1,      null,        'output filename | output directory'),
    array('p',   'prefix',     1,      '',          'package prefix name'),
    array('x',   'excludes',   1,      null,        'excluded packages'),
    array('m',   'compile',    1,      'zip',       'compile mode'),
    array('e',   'encrypt',    1,      null,        'encrypt mode'),
    array('ek',  'key',        1,      null,        'encrypt key'),
    array('es',  'sign',       1,      null,        'encrypt sign'),
    array('ex',  'extname',    1,      'lua',       'encrypted file extension name (default is "lua"), only valid for xxtea_chunk'),
    array('c',   'config',     1,      null,        'load options from config file'),
    array('q',   'quiet',      0,      false,       'quiet'),
    array('jit', 'jit',        0,      false,       'using luajit compile framework'),
);

你可以根据你的需求传递参数,比如

 

1、 -h 帮助。显示参数的解释及使用,英文的。   
2、-i 源码目录。   
3、-o 输出文件或目录。   
4、-p 包前缀。   
5、-x 不包含在内的包。如果你有些源文件不想被编译进去的话,将会用到这个参数,只能设置包(对应文件夹),不能指定到文件,多个包的话用,(逗号)隔开。示例:-x app.test,server,指的是app/test/.*,server/.* 这两个目录下的所有文件都不会被编译。  
6、-m 编译模式。有两个值 :   
-m zip 默认,生成的是zip格式文件;   
-m files 生成的是一个个文件,不打包,这个时候-o参数指的就是输出的目录。   
7、-e 加密模式。可以对编译后的文件再进行 XXTEA 加密,有两个值:   
   -e xxtea_zip 对应-m zip,对打包后的zip格式文件进行加密,之后再打包成zip格式。   
   -e xxtea_chunk 对编译后的文件加密,最后打不打包取决于-m。   
8、-ek 加密密钥。对-e有效,且设置了-e之后一定要设置-ek。   
9、-es 加密签名。对-e有效,默认值为"XXTEA",这个只是为了让引擎知道文件是否被加密过,意义不大,所以可不设置。  
  
10、-ex 编译后的文件的后缀名。对-m files有效,默认值为"lua"11、-c 从一个文件加载参数列表。   
12、-q 生成过程不输出信息。

 

 

 

要调用里面的脚本需要在mail.lua文件中CCLuaLoadChunksFromZip("res/framework_precompiled.zip")语句下添加一句代码:

CCLuaLoadChunksFromZip("res/test.zip")

lua里面加载的话:

cc.LuaLoadChunksFromZIP(XXXX.zip);

删除掉原来的脚本,注意要保留main.lua,测试一下,证明程序可以运行。

必须得用compile_scripts 生成的ZIP 

 

加密的话,解密的时候可以加上  ,我这里是AppDelegate.cpp

LuaStack* stack = engine->getLuaStack();
stack->setXXTEAKeyAndSign("2dxLua", strlen("2dxLua"), "XXTEA", strlen("XXTEA"));

 

http://my.oschina.net/lonewolf/blog/178515

http://www.cocoachina.com/bbs/read.php?tid=205802

http://blog.csdn.net/chengyingzhilian/article/details/25658091

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • LUA解析json小demo
    需要修改的json数据gui-config.json{"configs": [{"server": "JP3.ISS.TF","server_port": 443,"password": "58603228","method": "aes-256-cfb","remarks": ""},{"serv
    03-16
  • 第二十三篇:在SOUI中使用LUA脚本开发界面
    像写网页一样做客户端界面可能是很多客户端开发的理想。做好一个可以实现和用户交互的动态网页应该包含两个部分:使用html做网页的布局,使用脚本如vbscript,javascript做用户交互的逻辑。当需求变化时,只需要在服务端把相关代码调整一下,用户即可看到新的
    03-16
  • windows下编译lua源码"><转>windows下编译lua源
    因为之前一直使用 lua for windows 来搭建lua的使用环境,但是最新的 lua for windows 还没有lua5.2,我又想用这个版本的lua,所以被逼无奈只能自己编一下lua源码。首先从 lua的官网 下载你想要使用的lua源码,比如我下载的就是lua5.2。解压后内容如下:
    03-16
  • lua:使用Lua处理游戏数据
    在之前lua学习:lua作配置文件里,我们学会了用lua作配置文件。其实lua在游戏开发中可以作为一个强大的保存、载入游戏数据的工具。 比如说,现在我有一份表单:data.xls用什么工具解析这个Excel文件并将数据载入游戏?我们可以使用Lua来完成这个工作。不过要
    03-16
  • 第1课 - 学习 Lua 的意义
    第1课 - 学习 Lua 的意义
    第1课 - 学习 Lua 的意义1.Lua 简介           (1) 1993年、巴西(2) 小巧精致的脚本语言,大小只有 200K(3) 用标准C语言写成,能够在所有的平台上编译运行(4) 发明的目标是嵌入在C/C++中,为应用程序提供灵活的扩展和定制功能(5) 不适合用于开发
    03-16
  • RedisTemplate 常用API+事务+陷阱+序列化+pipeline+LUA
    RedisTemplate 常用API+事务+陷阱+序列化+pipel
    https://www.jianshu.com/p/7bf5dc61ca06/https://blog.csdn.net/qq_34021712/article/details/79606551https://www.jianshu.com/p/c9f5718e58f0dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/depe
    03-08
  • Nginx动态路由的新姿势:使用Go取代lua nginx路由规则
    Nginx动态路由的新姿势:使用Go取代lua nginx路
    导语: 在Nitro 中, 我们需要一款专业的负载均衡器。 经过一番研究之后,Mihai Todor和我使用Go构建了基于Nginx、Redis 协议的路由器解决方案,其中nginx负责所有繁重工作,路由器本身并不承载流量。 这个解决方案过去一年在生产环境中运行顺畅。 以下是我
    03-08
  • cocos2d-lua 控制台输入Lua指令方便调试
    用脚本进行开发,如果不能实时去输入指令,就丧失了脚本的一大特色,所以对cocos2d-x程序稍微修改下,使其可以直接从控制台读入lua指令,方便调试。1 首先在行首加入lua的引用,如下1 #include "main.h"2 #include "AppDelegate.h"3 #include "cocos2d.h"4 #i
    02-09
  • lua_touserdata
    void *lua_touserdata(lua_State*L,intindex);如果给定索引处的值是一个完整的userdata,函数返回内存块的地址。如果值是一个lightuserdata,那么就返回它表示的指针。否则,返回NULL。例如: 在CCLuaStack::executeFunction()函数中有一段代码是用来获取c++
    02-09
  • Lua 5.2 中文参考手册
    闲来无事,发现Lua更新到了5.2.2,参考手册也更到了5.2,在网上发现只有云风翻译的5.1版,花了几天时间翻译了一些。参考手册有点长,又要随时修改,所以在github上建了项目,有需要的朋友可以看看,同时也欢迎指正。中文手册:Lua 5.2中文参考手册
    02-09
点击排行