lua语言教程可以在手机后台运行吗

Lua中执行系统命令方法介绍
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Lua中执行系统命令方法介绍,Lua中有两种方法可以执行操作系统内置命令,需要的朋友可以参考下
Lua中,os.execute可以执行dos命令,但是返回的是系统状态码,默认输出。
io.popen()也可以执行dos命令,但是返回一个文件。eg:
local t = io.popen('svn help')
local a = t:read("*all")
--a返回一个字符串,内容是svn help的内容
如果想执行某命令或程序可选os.execute(),如果还想捕捉该执行结果可用io.popen()
eg:复制文件
os.execute("copy" .. originalPath .. "," .. backupPath)
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Android是基于Linux 2.6 内核的系统,所以理论上Linux OS可以运行的脚本语言,给予相应的运行库,在Android也可以运行。
在Android手机上编写并运行Lua脚本
利用开源项目SL4A ( Scripting Layer for Android 项目地址:&)
,可以快速在Android手机上搭建各种脚本运行环境。目前SL4A支持&Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl, shell 等脚本语言&。
1、下载并安装SL4A运行环境
& & 最新 sl4a_r6.apk 下载地址:http://android-/files/sl4a_r6.apk
& & 这个应用提供了各种脚本的运行环境,通过拆APK可以看到应用内嵌了两个.so动态链接库。其中一个是ConnectBot的库,另一个是7.9K大小的脚本执行库,但显然不是脚本语言解析库。具体关于SL4A的原理,可以参考博文:
2、下载 Lua for android 支持
& &&lua_for_android_r1.apk 下载地址:http://android-/files/lua_for_android_r1.apk
3、运行Lua for android ,它将从网络下载一些Lua脚本Demo。这些例子在SL4A中运行。
使用SL4A可以在Android手机上直接运行Lua等脚本。
其它脚本语言,可以到&&下载相应的APK。
在Android项目中使用Lua脚本
SL4A 交互式的脚本运行方式不适合在Android项目中使用。如果你的项目要使用Lua脚本,就需要将Lua嵌入到Android项目中。
在Android项目中使用Lua,需要两个步骤:
1、加载Lua脚本解析引擎。
2、以Native API方式调用引擎接口
直接以JNI方式调用Lua解析引擎的接口十分麻烦,开源项目LuaJava对这些JNI接口进行了很好的封装。
AndroLua是一个包含了LuaJava的Android平台的Lua解析器,它提供一系列映射到Lua C实现函数的Java接口。
项目地址:&&
1、用Git将项目克隆到Eclipse的工作目录中
& &&git clone&&/mkottman/AndroLua.git
2、AndroLua项目包含了LuaJava的C源码在JNI目录中。用Android NDK编译。编译结束,在libs\armeabi目录下生成LuaJava的动态链接库文件。
& & 编译结束。&
3、创建几个演示例程。这里演示三种使用Lua脚本的方式。
&&&&& & 将上面从GitHub中克隆回来的项目导入到Eclipse中。创建一个Activity。&
public&class&MainActivity&extends&Activity
&&&&private&LuaState
&&&&private&TextView
&&&&private&LinearLayout
&&&&&&&&@Override
&&&&protected&void&onCreate(Bundle
savedInstanceState) {
&&&&&&&&super.onCreate(savedInstanceState);
&&&&&&&&setContentView(R.layout.activity_main);
&&&&&&&&mLayout
= (LinearLayout) findViewById(R.id.layout);
&&&&&&&&mDisplay
= (TextView) mLayout.findViewById(R.id.display);
&&&&&&&&mLuaState
= LuaStateFactory.newLuaState();
&&&&&&&&mLuaState.openLibs();
&&&&public&void&runStatement(View
&&&&&&&&mLuaState
&&&&&&&&&&&&&&&&.LdoString(&
varSay = 'This is string in lua script statement.'&);
&&&&&&&&mLuaState.getGlobal(&varSay&);
&&&&&&&&mDisplay.setText(mLuaState.toString(-1));
public&void&runFile(View
&&&&&&&&mLuaState.LdoString(readStream(getResources().openRawResource(
R.raw.test)));
&&&&&&&&mLuaState.getField(LuaState.LUA_GLOBALSINDEX,&&functionInLuaFile&);
&&&&&&&&mLuaState.pushString(&从Java中传递的参数&);
&&&&&&&&int&paramCount
&&&&&&&&int&resultCount
&&&&&&&&mLuaState.call(paramCount,
resultCount);
&&&&&&&&mLuaState.setField(LuaState.LUA_GLOBALSINDEX,&&resultKey&);
&&&&&&&&mLuaState.getGlobal(&resultKey&);
&&&&&&&&mDisplay.setText(mLuaState.toString(-1));
public&void&callAndroidAPI(View
&&&&&&&&mLuaState.LdoString(readStream(getResources().openRawResource(
R.raw.test)));
&&&&&&&&mLuaState.getField(LuaState.LUA_GLOBALSINDEX,&&callAndroidApi&);
&&&&&&&&mLuaState.pushJavaObject(getApplicationContext());
&&&&&&&&mLuaState.pushJavaObject(mLayout);
&&&&&&&&mLuaState.pushString(&设置到TextView的数据&);
&&&&&&&&mLuaState.call(3,&0);
private&String
readStream(InputStream is) {
&&&&&&&&try&{
&&&&&&&&&&&&ByteArrayOutputStream
bo =&new&ByteArrayOutputStream();
&&&&&&&&&&&&int&i
= is.read();
&&&&&&&&&&&&while&(i
&&&&&&&&&&&&&&&&bo.write(i);
&&&&&&&&&&&&&&&&i
= is.read();
&&&&&&&&&&&&}
&&&&&&&&&&&&return&bo.toString();
&&&&&&&&}&catch&(IOException
&&&&&&&&&&&&Log.e(&ReadStream&,&&读取文件流失败&);
&&&&&&&&&&&&return&&&;
//此函数由Java代码调用。接受一个参数,并返回一个字符串
function&functionInLuaFile(key)
&&&&&return&'
Function in Lua file . Return : '..key..'!'
//此函数由Java代码调用。接受三个参数。并调用这些Android组件的方法。
function&callAndroidApi(context,layout,tip)
&&&&//创建一个Android
= luajava.newInstance(&android.widget.TextView&,context)
&&&&//调用TextView的方法
&&&&tv:setText(tip)
&&&&//调用Layout的方法
&&&&layout:addView(tv)
XML布局文件:
&?xml&version=&1.0&&encoding=&utf-8&?&
&LinearLayout&xmlns:android=&/apk/res/android&
&&&&android:id=&@+id/layout&
&&&&android:layout_width=&match_parent&
&&&&android:layout_height=&match_parent&
&&&&android:orientation=&vertical&&&
&&&&&&&&android:id=&@+id/display&
&&&&&&&&android:layout_width=&wrap_content&
&&&&&&&&android:layout_height=&wrap_content&&/&
&&&&&Button
&&&&&&&&android:id=&@+id/statemanet&
&&&&&&&&android:layout_width=&match_parent&
&&&&&&&&android:layout_height=&wrap_content&
&&&&&&&&android:onClick=&runStatement&
&&&&&&&&android:text=&运行Lua脚本语句&&/&
&&&&&&&&android:id=&@+id/file&
&&&&&&&&android:layout_width=&match_parent&
&&&&&&&&android:layout_height=&wrap_content&
&&&&&&&&android:onClick=&runFile&
&&&&&&&&android:text=&运行Lua脚本文件&&/&
&&&&&Button
&&&&&&&&android:id=&@+id/callAndroid&
&&&&&&&&android:layout_width=&match_parent&
&&&&&&&&android:layout_height=&wrap_content&
&&&&&&&&android:onClick=&callAndroidAPI&
&&&&&&&&android:text=&调用
Android API&&/&
&/LinearLayout&
效果截图:
本文已收录于以下专栏:
相关文章推荐
在Android项目中使用Lua,需要两个步骤:
1、加载Lua脚本解析引擎。
2、以Native API方式调用引擎接口
直接以JNI方式调用Lua解析引擎的接口十分麻烦,开源项目L...
以前装应用的时候有些应用会在桌面上生成两个图标,这两个图标有些是同一个Activity的入口,有些是另外一个Activity的入口,这样的效果是怎么实现的呢?在看Android原生DeskClock程...
其实这是蛮久之前写的, 从网易博客拷过来的,嘿嘿,自己写了东西,总喜欢多多分享~
不是反话吖,是真的开心~标题改日再改回正常的~
这两天把我折腾的~
老大让我把lua弄到android里,我兴...
原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列]
博客地址:http://blog.csdn.net/qq
在Coco2d-x3.2版本中,对L...
事务redis中的事务并不像mysql中那么完美,只是简单的保证了原子性。redis中提供了四个命令来实现事务,MULTI:类似于mysql中的BEGIN;EXEC:类似于COMMIT;DISCARD...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)查看: 1555|回复: 2
持续更新:手机脚本之lua/按键精灵
阅读权限160
结帖率: (81/84)
本帖最后由 花老板 于
18:25 编辑
上一期教程地址
先扯几句胡说八道:
先说谦虚的。我自己会的不多,跟各种大神比还有很远的差距。
但我会的杂,如果闲下来,会写一些杂7杂8的东西,比如某冷门的教程。
这个触动精灵的lua教程,资料少的可怜,白度上也没多少资料。
大部分学这个是参考别人的语法,以及参考官方函数说明。
我之前给一个工作室写脚本,接触了很长时间。
大神算不上,都是在学习的路上,越走越远,回不了头的路,从此喜欢搞基。。。
实战代码教程:
语法.jpg (81 KB, 下载次数: 0)
18:01 上传
语法参考:点击打开 语法参考打开
语法注释:
init&&初始化
local sz = require(&sz&);&&设置支持库,类似的模块,官网有很多,自己挑选喜欢的。
local on = sz.&&设置json类型。
local w,h = getScreenSize();&&获取屏幕宽高
MyTable = { }&&主界面语法,json格式。
& && &&&[&style&] = &default&,& &样式类型
& && &&&[&title&] = &梦幻西游智能脚本&, 脚本的标题
& && && & [&width&] = 800,& &脚本界面的宽度
& && && & [&height&] = 800,&&脚本界面的高度
& && && & [&config&] = &config.dat&,&&配置文件
& && && & [&timer&] = 1000,&&延迟,单位/秒,为0时自动启动脚本。可自定义。
& && && && && && & {
& && && && &[&type&] = &Label&,& &定义Type类型
& && && && &[&text&] = &\n\n脚本提示:触动精灵Beta版\n开发者Peanut,Im QQ:245867\n\n&,&&定义文字,\n是换行符
& && && && &[&size&] = 12,&&字体大小
& && && && &[&align&] = &left&,& &显示方式 left为左边
& && && && &[&color&] = &255,0,0&& &设置颜色值,255.0.0是红色,可用取色器获取,精易助手上也可以获取。
& && && && &},
& && && && &[&type&] = &CheckBoxGroup&,& & 设一个多选框组件
& && && && &[&list&] = &掉线重连,自动师门,自动抓鬼,自动领双倍&,& &选择项,其中逗号分割。
& && && && &[&select&] = &1@3&& &默认选择项。@分割符。
& && && && &},
效果展示:
IMG_45.jpg (47.77 KB, 下载次数: 0)
18:01 上传
本期教程结束,下期讲解获取组件的选择项,及赋值到子程序(function)
调试获取参数,调试必须要的运行参数。
新技能已get√
感谢分享,很给力!~
您可以选择打赏方式支持楼主
阅读权限90
结帖率: (14/15)
花老板 中控会搞不 求教学
您可以选择打赏方式支持他
阅读权限180
签到天数: 21 天结帖率: (21/23)
好厉害的样子&&可惜没越狱 手机
您可以选择打赏方式支持他
精易论坛 - 有你更精彩 /1
支持作者开源,请积极给优秀源码评分
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
防范网络诈骗,远离网络犯罪
违法和不良信息举报电话,QQ: ,,邮箱:@
Powered by
粤公网安备 25

我要回帖

更多关于 lua是什么语言 的文章

 

随机推荐