當遊戲開發完成需要真機測試或者需要打包釋出時,需要對lua源代碼和資源進行加密處理,以免自己的資源和源代碼以明文形式暴露在ipa或者apk中。本文是介紹在mac機下進行的加密步驟和在加密過程中遇到的問題。
環境:引擎版本:Quick-Cocos2dx-Community 3.6.1
平台:iMac mac os sierra 10.12.2
步驟:
1.打開終端,進入項目目錄下
$ cd ~/project_v1.0
2. 資源加密。運作Quick提供的 encrypt_res.sh 加密工具.
注:encrypt_res.sh 在Quick-Cocos2dx-Community/ quick/ bin 檔案目錄下
終端運作: ~/Quick-Cocos2dx-Community/quick/bin/encrypt_res.sh -i ~/project_v1.0/res -o ~/project_v1.0/res -es aaa -ek jerrychen
3. lua源代碼加密。運作Quick提供的 compile_scripts.sh 加密工具.
注:compile_scripts.sh 在Quick-Cocos2dx-Community/ quick/ bin 檔案目錄下
終端運作:
~/Quick-Cocos2dx-Community/quick/bin/compile_scripts.sh -i src -o res/game64.zip -e xxtea_zip -ek aaa -es jerrychen -b 64
~/Quick-Cocos2dx-Community/quick/bin/compile_scripts.sh -i src -o res/game32.zip -e xxtea_zip -ek aaa -es jerrychen
上例中,加密 lua 源檔案所在的 src 目錄,輸出到res/game.zip,加密模式為zip包xxtea,加密密鑰:aaa,加密簽名:jerrychen, -b:加密位數。後面不帶位數預設為32位。
由于android并沒有強制要求64位,Luajit在不用的平台使用不同的位數支援。情況如下:
1. Android、Win32、Mac 繼續使用32位的jit。
2. iOS更新硬體來決定使用的jit位數,5s以上裝置使用64位jit,以下裝置使用32位jit。
是以遊戲釋出的時候,針對iOS你需要用 compile_scripts 分别生産 32 和 64 位的 bytecode包,并在遊戲啟動邏輯加入系統位數判斷,以啟動不同的包。不然被報錯。
4.在執行加密檔案指令的時候可能出現指令錯誤:permission denied。沒有權限,要進行權限設定,可以在執行指令最前面加sudo,或者對你要執行的指令增權重限 chmod +x compile_scripts.sh。注意在執行檔案加密指令時,compile_scripts.sh,encrypt_res,luajit,luajit64等指令都會可能會出現permission denied問題。
5. iOS在不同的機型上要使用不同的jit位數加密的zip檔案,不然會造成解密時候lua檔案解密失敗(錯誤提示:error : syntax error during pre-compilation -loaded chunks counts:0)。
6.錯誤描述
luajit64找不到對應的lua描述檔案。暫時的解決辦法是,自己手動編譯一次LuaJIT 并在mac上make install,這樣會自動把這些檔案放到系統目錄下,指令行就能找到了
下載下傳位址:http://luajit.org/download/LuaJIT-2.1.0-beta1.tar.gz 下載下傳後,make install,可以解決,一般開園軟體的編譯安裝方式。下載下傳解壓到任意目錄。cd到這個目錄。然後make install。這裡LuaJit下載下傳包,不同版本對應不同的包,3.6.1對應的是beta1版本,不然還是會出現原問題,beta2對應的是3.6.3版本。其餘版本對應都在這網址通路:http://luajit.org
7. 在加密lua代碼時候,出現如下錯誤
加密無效,無法生存zip包,請到github上面下載下傳最新的 ScriptsCompiler.php檔案,替換老檔案就行,下載下傳位址:https://github.com/u0u0/Quick-Cocos2dx-Community/blob/master/quick/bin/lib/quick/ScriptsCompiler.php
在用mac機做quick開發時候,安裝好player,搭好環境也是一種不錯的選擇,已經熟悉mac機開發的同學不必糾結切換到windows進行開發。
附帶指令字釋義:
options:
-h show help
-p package name
-o project path (default is "current_dir/last_package_name")
-r screen orientation (default is "portrait")
-f overwrite exists files
-q quiet
-t template dir
screen orientation:
-r portrait (default) 豎屏
-r landscape 橫屏