Lua脚本自动生成APK包
上次用了纯bat写了个脚本生成APK包,感觉bat扩展性和语法差的令人发指,这次用lua重写了一个脚本
--Authors:sails鸢@oschina --Date:20th,August,2014 --Note: --ThisisusedforCocos2dx+Lua --Thisisascripttomaking.APKfileforandroidplatform --Makesureyouhaveinstalledjava,ant,androidsdk,ndk,svn,jit --Alsoplzcheckandrewritefollowingpathsbeforeyouusethisscript --Remarks: --ThescriptwillupdateyourcocosenginedirectoryandyourLuascriptwhichprobablyisResources --thenitshouldjityourLuafiles,useASMakertoencryptyourLua-jitfiles --allfilesandresourceswillmovetothisfolderproj.android/assets --finallyitwillmakea.APKpackagewithANT require('support') --toolspaths localJAVA_HOME='C:\\ProgramFiles\\Java\\jdk1.8.0_05' localANT_HOME='D:\\ProgramSoftware\\apache-ant-1.9.4' localANDROID_HOME='"D:\\ProgramSoftware\\androidsdk\\sdk"' localNDK_HOME='D:\\ProgramSoftware\\android-ndk-r9d-windows-x86_64\\android-ndk-r9d' localSVN_HOME='C:\\ProgramFiles\\TortoiseSVN\\bin\\' --targetpaths localENGINE_DIR='D:\\engine' localWORK_DIR='D:\\engine\\projects\\XXXX\\proj.android' localRESOURCES_DIR=WORK_DIR..'\\..\\Resources' localASSETS_DIR=WORK_DIR..'\\assets' --functiondetectdirectory localfunctiondir_exist(dir) returnos.execute(string.format('pushd"%s">nul2>nul&&popd',dir)) end --removeoldassets ifdir_exist(ASSETS_DIR)then rmdir(ASSETS_DIR) end --removeoldAPK localold_apk,err=io.open(WORK_DIR..'\\bin\\XXXX-release.apk') iferr==nilthen old_apk:close() delfile(WORK_DIR..'\\bin\\XXXX-release.apk') end --svnupdate --check --svn_up(ENGINE_DIR) --svn_up(WORK_DIR..'\\..') --luajit --iterdirectory localcmd=string.format("pushd%q&dir/b/s&popd",RESOURCES_DIR) localfile_list=io.popen(cmd) forlineinfile_list:lines()do line_to=string.gsub(line,'Resources','Resources_jit') ifdir_exist(line)then check_mk_path(line_to) else if(string.find(line,'.lua$'))then jit_file(WORK_DIR,line,line_to) else copy_file(line,line_to) end end end file_list:close() --encryptionwithASmaker localenc_cmd=WORK_DIR..'\\ASmaker.exe'..'-i'..WORK_DIR..'\\..\\Resources_jit'.."-o"..ASSETS_DIR..'-f.lua-e.exe' localenc_re=run_one_cmd(enc_cmd) ifenc_re:find("失败")then print("ASmaker加密文件夹失败!",enc_re) os.exit(1) end --ndkbuild localndk_cmd='call'..NDK_HOME..'\\ndk-build'..'-C'..WORK_DIR..''..'NDK_MODULE_PATH='..ENGINE_DIR..';'..ENGINE_DIR..'\\cocos2dx\\platform\\third_party\\android\\prebuilt' localndk_re=run_one_cmd(ndk_cmd) ifndk_re:find("error")then print("NDKbuild失败!",ndk_re) os.exit(1) end --androidupdate localand_cmd='call'..ANDROID_HOME..'\\tools\\android'..'updateproject-p'..WORK_DIR localand_re=run_one_cmd(and_cmd) and_cmd='call"'..ANDROID_HOME..'\\tools\\android"'..'updatelib-project-p'..ENGINE_DIR..'\\cocos2dx\\platform\\android\\java' and_re=run_one_cmd(and_cmd) --ant localant_cmd='pushd'..WORK_DIR..'&call'..ANT_HOME..'\\bin\\antrelease' localant_re=run_one_cmd(ant_cmd) ifant_re:find("failed")then print("生成APK失败!",ant_re) os.exit(1) end