lua脚本实现自动生成APK包
可以根据需要自行扩展了。
使用前toolpath还有targetpath的前两个还是需要自己设置下。
一些小的函数jit_filecopy_file我就不贴了比较简单,用来luajit和拷贝。
--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
以上代码就是本文所要分享的全部内容了,希望大家能够喜欢。