zoukankan      html  css  js  c++  java
  • 使用compile_scripts.php脚本,生成lua打包的zip,解决加密问题

    @echo off
    
    set DIR=%~dp0
    set TEMPLATE_ROOT=%DIR%..
    echo %TEMPLATE_ROOT%quickinwin32php.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%projectcardgamesrcapp*.*      %DIR%scriptapp
    
    echo - copy framework_compiled
    xcopy  /s /q %TEMPLATE_ROOT%projectcardgamesrcframework*.*      %DIR%framework_precompiledframework
    xcopy  /s /q %TEMPLATE_ROOT%projectcardgamesrccocos*.*      %DIR%framework_precompiledcocos
    
    
    echo - copy scriptDonkey
    xcopy /s /q %TEMPLATE_ROOT%projectcardgamesrcqsframework*.*    %DIR%scriptDonkeyqsframework
    xcopy /s /q %TEMPLATE_ROOT%projectcardgamesrcconfig.lua    %DIR%scriptDonkey
    xcopy /s /q %TEMPLATE_ROOT%projectcardgamesrcmain.lua    %DIR%scriptDonkey
    
    
    
    %TEMPLATE_ROOT%quickinwin32php.exe %TEMPLATE_ROOT%quickinlibcompile_scripts.php -i script/  -o script.zip   
    %TEMPLATE_ROOT%quickinwin32php.exe %TEMPLATE_ROOT%quickinlibcompile_scripts.php -i scriptDonkey/ -o scriptDonkey.zip
    %TEMPLATE_ROOT%quickinwin32php.exe %TEMPLATE_ROOT%quickinlibcompile_scripts.php -i framework_precompiled/ -o framework_precompiled.zip
    
    echo -copy zip to res/
    xcopy /s /q  %DIR%scriptDonkey.zip  %TEMPLATE_ROOT%projectcardgame
    es 
    xcopy /s /q  %DIR%framework_precompiled.zip  %TEMPLATE_ROOT%projectcardgame
    es 
    
    pause

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

    可以参考quickincompile_scripts.bat。

    @echo off
    set DIR=%~dp0
    %DIR%win32php.exe "%DIR%libcompile_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

  • 相关阅读:
    写一个通用的事件侦听器函数
    基于LuckySheet在线表格的Excel下载功能开发
    node项目中npm 第三方包引用规则
    js 本地保存 json/txt 文件
    letcood 算法题 -- 两数相加
    ES6新增语法总结
    关于Promise,你必须知道的几点。
    Promise 基础
    学习网页收藏
    android Listview每一个item添加点击事件
  • 原文地址:https://www.cnblogs.com/zhangfeitao/p/4543212.html
Copyright © 2011-2022 走看看