• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > Lua脚本自动生成APK包

Lua脚本自动生成APK包

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了lua脚本,lua脚本编辑器,lua脚本教程,lua脚本解密工具,lua脚本编辑器中文等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

上次用了纯bat写了个脚本生成APK包,感觉bat扩展性和语法差的令人发指,这次用lua重写了一个脚本
可以根据需要自行扩展了。
使用前tool path 还有 target path的前两个还是需要自己设置下。
一些小的函数 jit_file copy_file 我就不贴了 比较简单,用来luajit 和 拷贝。

-- Authors: sails鸢@oschina
-- Date: 20th , August , 2014
-- Note:
-- This is used for Cocos2dx + Lua
-- This is a script to making .APK file for android platform
-- Make sure you have installed java, ant, android sdk, ndk, svn, jit
-- Also plz check and rewrite following paths before you use this script
-- Remarks:
-- The script will update your cocos engine directory and your Lua script which probably is Resources
-- then it should jit your Lua files , use ASMaker to encrypt your Lua-jit files 
-- all files and resources will move to this folder proj.android/assets
-- finally it will make a .APK package with ANT
require('support')
 
--tools paths
local JAVA_HOME = 'C:\\Program Files\\Java\\jdk1.8.0_05'
local ANT_HOME = 'D:\\ProgramSoftware\\apache-ant-1.9.4'
local ANDROID_HOME = '"D:\\ProgramSoftware\\android sdk\\sdk"'
local NDK_HOME = 'D:\\ProgramSoftware\\android-ndk-r9d-windows-x86_64\\android-ndk-r9d'
local SVN_HOME = 'C:\\Program Files\\TortoiseSVN\\bin\\'
 
--target paths
local ENGINE_DIR = 'D:\\engine'
local WORK_DIR = 'D:\\engine\\projects\\XXXX\\proj.android'
local RESOURCES_DIR = WORK_DIR ..'\\..\\Resources'
local ASSETS_DIR = WORK_DIR ..'\\assets'
 
--function detect directory
local function dir_exist(dir)
  return os.execute(string.format('pushd "%s">nul 2>nul && popd', dir))
end
 
--remove old assets
if dir_exist(ASSETS_DIR) then
  rmdir(ASSETS_DIR)
end
 
--remove old APK
local old_apk , err = io.open(WORK_DIR..'\\bin\\XXXX-release.apk')
if err == nil then
  old_apk:close()
  delfile(WORK_DIR..'\\bin\\XXXX-release.apk')
end
 
--svn update
--check
--svn_up(ENGINE_DIR)
--svn_up(WORK_DIR..'\\..')
 
--luajit 
--iter directory
local cmd = string.format("pushd %q &dir /b /s &popd" , RESOURCES_DIR)
local file_list = io.popen(cmd)
for line in file_list:lines() do
  line_to = string.gsub(line, 'Resources', 'Resources_jit')
  if dir_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()
 
--encryption with ASmaker
local enc_cmd = WORK_DIR..'\\ASmaker.exe'..' -i '..WORK_DIR..'\\..\\Resources_jit'.." -o "..ASSETS_DIR..' -f .lua -e .exe'
local enc_re = run_one_cmd(enc_cmd)
if enc_re:find ("失败") then
  print("ASmaker加密文件夹失败!",enc_re)
  os.exit(1)
end
 
--ndk build
local ndk_cmd = 'call '..NDK_HOME..'\\ndk-build'..' -C '..WORK_DIR..' '..'NDK_MODULE_PATH='..ENGINE_DIR..';'..ENGINE_DIR..'\\cocos2dx\\platform\\third_party\\android\\prebuilt'
local ndk_re = run_one_cmd(ndk_cmd)
if ndk_re:find ("error") then
  print("NDK build失败!",ndk_re)
  os.exit(1)
end
 
--android update
local and_cmd = 'call '..ANDROID_HOME..'\\tools\\android'..' update project -p '..WORK_DIR
local and_re = run_one_cmd(and_cmd)
and_cmd = 'call "'..ANDROID_HOME..'\\tools\\android"'..' update lib-project -p '..ENGINE_DIR..'\\cocos2dx\\platform\\android\\java'
and_re = run_one_cmd(and_cmd)
 
--ant
local ant_cmd = 'pushd '..WORK_DIR..'&call '..ANT_HOME..'\\bin\\ant release'
local ant_re = run_one_cmd(ant_cmd)
if ant_re:find ("failed") then
  print("生成APK失败!",ant_re)
  os.exit(1)
end
</div>

</div>

您可能想查找下面的文章:

  • Lua脚本语言基本语法快速入门教程
  • 浅析Lua中的迭代器
  • Lua脚本实现递归删除一个文件夹
  • Lua基本语法
  • Lua中遍历文件操作代码实例
  • Linux下编写Lua扩展so文件和调用方法实例
  • Lua中的类编程代码实例
  • Lua中写排序算法实例(选择排序算法)
  • 使用Lua作为C语言项目的配置文件实例
  • C语言中调用Lua函数实例

相关文章

  • Lua中__index和__newindex之间的沉默与合作
  • Lua table类型学习笔记
  • Lua教程(六):编译执行与错误
  • vs2012 error c4996: This function or variable may be unsafe
  • Lua实现正序和倒序的文件读取方法
  • Lua教程(三):C语言、C++中调用Lua的Table示例
  • Lua和C++语言的交互详解
  • Lua教程(十六):系统库(os库)
  • lua操作excel方法分享
  • Lua性能优化技巧(三):关于表

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua中的常用函数库汇总
    • Cocos2d-x中调用Lua及HelloWorld.lua源码分解
    • LUA string库使用小结
    • Lua中的函数浅析
    • Lua教程(二十一):编写C函数的技巧
    • Lua多行注释和取消多行注释的方法
    • Lua教程(十三):弱引用table
    • C语言模块回调Lua函数的两种方法
    • Lua中的模块与module函数详解
    • Lua的table库函数insert、remove、concat、sort详细介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有