Java script生成apk_lua脚本实现自动生成APK包

可以根据需要自行扩展了。

使用前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

以上代码就是本文所要分享的全部内容了,希望大家能够喜欢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android sqlite数据库操作通用框架AHibernate(二)源码-用于交流

贴出源代码供大家交流使用,欢迎朋友们对代码提供宝贵意见,直接写到评论中即可.使用示例和步骤见上一篇博客:http://blog.csdn.net/lk_blog/article/details/7455992源码和示例下载地址: http://download.csdn.net/detail/lk_blog/4222048(一)注解类:Table.java [java] view pla…

LeetCode 1120. 子树的最大平均值(DFS自底向上)

文章目录1. 题目2. 解题1. 题目 给你一棵二叉树的根节点 root,找出这棵树的 每一棵 子树的 平均值 中的 最大 值。 子树是树中的任意节点和它的所有后代构成的集合。 树的平均值是树中节点值的总和除以节点数。 示例:输入:[5,6,1] 输出&a…

JAVA校内报纸实验_实验(实训)中心2011—2012学年第二学期工作计划

实验(实训)中心2011—2012学年第二学期工作计划在2011—2012学年第二学期里,实验(实训)中心将树立为教学、为教师、为学生服务的理念,增强管理人员工作责任心,以学院评建为契机,全面提高实验实训教学质量,强化主人翁意…

Java compiler level does not match the version of the installed Java project facet.

问题: myeclipse在problem控制台里有如下错误提示: Java compiler level does not match the version of the installed Java project facet. elipse这种情况一般可以在项目上右键-->properties-->然后找到project facets和 Java Compiler两个选项…

LeetCode 1100. 长度为 K 的无重复字符子串(滑动窗口)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 S,找出所有长度为 K 且不含重复字符的子串,请你返回全部满足要求的子串的 数目。 示例 1: 输入:S "havefunonleetcode", K 5 输出:6 解释: 这…

java点击按钮结线程_多线程的Java应用程序在调试工具Netbeans中单击“停止”按钮时输出一个奇怪的结果...

我使用wait()和notify()机制学习了java中的多线程。但我很好奇输出一个简单的多线程Java应用程序。代码如下:class Q {int n;boolean valueSet false;synchronized int get() {if (!valueSet) {try {wait();} catch (InterruptedException e) {System.out.println(…

LeetCode 544. 输出比赛匹配对(NBA季后赛对阵图)

文章目录1. 题目2. 解题1. 题目 在 NBA 季后赛中,我们总是安排较强的队伍对战较弱的队伍,例如用排名第 1 的队伍和第 n 的队伍对决,这是一个可以让比赛更加有趣的好策略。 现在,给你 n 支队伍,你需要以字符串格式输出…

Simple IOCP Server代码解读

1,如何处理乱序。 按照投递Read的次序,收到ReadComplete时,看收到的buffer中序号跟连接中的序号是否相等。 不如用例子表示:b1,b2表示两个Read请求用的buffer。连接Context中序列号为0,b1保存的序号为0&…

java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西

UTF-8的问题在于它不是最节省空间的编码 . 此外,一些随机二进制字节序列是无效的UTF-8编码 . 因此,您不能将随机二进制字节序列解释为某些UTF-8数据,因为它将是无效的UTF-8编码 . 这种对UTF-8编码的约束的好处在于它使得它很可靠并且可以定位…

CF 46D Parking Lot

CF_46D 由于数据范围很小&#xff0c;实际上可以直接暴力的。但为了练练线段树合并区间的操作所以就用线段树写了。 更多和线段树合并区间有关的题目可以参考胡浩的博客&#xff1a;http://www.notonlysuccess.com/index.php/segment-tree-complete/。 #include<stdio.h>…

LeetCode 1428. 至少有一个 1 的最左端列(二分查找)

文章目录1. 题目2. 解题2.1 二分查找2.2 直接走阶梯1. 题目 &#xff08;这是一个交互题&#xff09; 我们称只包含元素 0 或 1 的矩阵为二进制矩阵。 矩阵中每个单独的行都按非递减顺序排序。 给定一个这样的二进制矩阵&#xff0c;返回至少包含一个 1 的最左端列的索引&am…

Java的getcelltype用法_java getCellType的替代方法

我正在使用org.apache.poi 3.15讀取excel文件。這是我的代碼&#xff1a;try (FileInputStream fileInputStream new FileInputStream(file); XSSFWorkbook workbook new XSSFWorkbook(file)) {XSSFSheet sheet workbook.getSheetAt(0);Iterator rowIterator sheet.iterato…

网页间跳转

四种网页间跳转的方式 1、超链 2、Response.Redirect 3、Server.Transfer 4、PostBackUrl http://localhost:2035/DataReceive.aspx?namezhen&password密码 创建页面 - DataSend.aspx 添加超链接 链接地址&#xff1a;~/DataReceive.aspx?namezhen&password密码…

LeetCode 370. 区间加法(差分思想)

文章目录1. 题目2. 解题1. 题目 假设你有一个长度为 n 的数组&#xff0c;初始情况下所有的数字均为 0&#xff0c;你将会被给出 k​​​​​​​ 个更新的操作。 其中&#xff0c;每个操作会被表示为一个三元组&#xff1a;[startIndex, endIndex, inc]&#xff0c;你需要将…

2018java多线程面试题_2018年最全Java面试通关秘籍汇总集!

此套面试题适用于Java开发的各个阶段面试&#xff0c;不过更偏向初级和中级开发人员&#xff01;由于每一个问题的答案不唯一且都可以在网上搜索到答案&#xff0c;这里只给出问题&#xff0c;不列出参考答案&#xff0c;有兴趣的可以留言讨论&#xff0c;也欢迎大家的补充&…

LeetCode 1256. 加密数字(bitset)

文章目录1. 题目2. 解题1. 题目 给你一个非负整数 num &#xff0c;返回它的「加密字符串」。 加密的过程是把一个整数用某个未知函数进行转化&#xff0c;你需要从下表推测出该转化函数&#xff1a; 示例 1&#xff1a; 输入&#xff1a;num 23 输出&#xff1a;"10…

《C语言程序设计》第三章练习与习题答案

[练3-1]不需要&#xff1b;因为已经涵盖了所有可能的条件。[练3-2]#include<stdio.h>int main(void){int y;double x;printf("Enter x:");scanf("%lf",&x);if(x<0)y-1;else if(x0)y0;elsey1;printf("ysign(%f)%d\n",x,y);return 0;…

java 调用js 解析yml_nodejs库yaml读取yml或yaml配置文件

最近在使用TypeScript编写后台接口时&#xff0c;需要读取yaml配置文件&#xff0c;使用到了yaml这个nodejs库&#xff0c;其npm官网地址为&#xff1a;https://www.npmjs.com/package/yaml&#xff0c;github源代码地址为&#xff1a;github.com/eemeli/yaml比如有如下的confi…

java执行程序默认多线程吗_Java多线程 执行程序(1)

本文由作者收集整理所得&#xff0c;作者不保证内容的正确行&#xff0c;转载请标明出处。作者&#xff1a;关新全Java多线程执行程序(1)1.1Thread类static Thread.currentThread返回当前正在执行的线程对象的引用。join 等待线程终止。yield 暂停当前正在执行的线程对象&#…

LeetCode 531. 孤独像素 I

文章目录1. 题目2. 解题1. 题目 给定一幅黑白像素组成的图像, 计算黑色孤独像素的数量。 图像由一个由‘B’和‘W’组成二维字符数组表示, ‘B’和‘W’分别代表黑色像素和白色像素。 黑色孤独像素指的是在同一行和同一列不存在其他黑色像素的黑色像素。 示例: 输入: [[W,…