這件事要追溯到去年快下半年的時(shí)候了准颓,那時(shí)候各大短視頻都在推精簡(jiǎn)版App,如精簡(jiǎn)版快手、精簡(jiǎn)版抖音等棺妓,它們可以通過刷金幣來?yè)Q人民幣攘已,我之前傻里傻氣利用dispatchGesture+AccessibilityService來實(shí)現(xiàn)自動(dòng)刷新視頻,可以進(jìn)行跨應(yīng)用刷抖音怜跑、快手样勃、趣多多等視頻app,而且我還給我的軟件取名叫刷多多,但是低版本不能用,后來我才知道有很多可以自定腳本的手機(jī)自動(dòng)化輔助軟件,可以很簡(jiǎn)單的實(shí)現(xiàn)那種簡(jiǎn)單的輔助操作峡眶,如:按鍵精靈剧防、autojs、觸動(dòng)精靈等辫樱。
?本來我是想嘗試autojs的峭拘,它是使用JavaScript作為腳本語(yǔ)言,我也是比較熟悉的搏熄,但是感覺觸動(dòng)精靈可能更活躍一些棚唆,而且之前在玩Redis的時(shí)候,也簡(jiǎn)單的編寫了一些Lua腳本心例,所以就想嘗試基于觸動(dòng)精靈來做一個(gè)自動(dòng)刷視頻的腳本宵凌,在開始之前劳淆,我們需要先對(duì)Lua腳本了解一些簡(jiǎn)單常用的知識(shí)榄融。
Lua腳本的內(nèi)核非常小桥滨,在5.0.2版的Lua的內(nèi)核小于120KB尝苇,而且啟動(dòng)速度快,從而非常適合做嵌入到其他程序中拘泞,比如現(xiàn)在比較流行的Redis疯汁,還有現(xiàn)在很多游戲也是使用Lua腳本來實(shí)現(xiàn)熱更新涕蚤。
在開始之前自然是安裝環(huán)境了歉糜,大家可以先去Lua下載地址下載乘寒,當(dāng)然這個(gè)版本有些老了,所以這里匪补,我們嘗試來基于源碼進(jìn)行編譯伞辛、安裝。 這里我們需要這些東西:
a suitable C-compiler (TDM GCC)
Lua source package 首先下載安裝TDM GCC,安裝非常方便修改相應(yīng)的參數(shù)直接下一步即可?
?TDM GCC安裝成功后夯缺,就可以去Lua官網(wǎng)下載最新的源碼啦蚤氏,這里我下載的是lua-5.4.0,源碼直接解壓即可,這里踊兜,我的TDM GCC和解壓后的lua源碼都放在D盤根目錄下竿滨,現(xiàn)在我們需要?jiǎng)?chuàng)建一個(gè)cmd腳本,腳本的內(nèi)容如下:
@echo off
? ? ? ? :: ========================
? ? ? ? :: file build.cmd
? ? ? ? :: ========================
? ? ? ? setlocal
? ? ? ? :: you may change the following variable's value
? ? ? ? :: to suit the downloaded version
? ? ? ? set lua_version=5.4.0
? ? ? ? set work_dir=%~dp0
? ? ? ? :: Removes trailing backslash
? ? ? ? :: to enhance readability in the following steps
? ? ? ? set work_dir=%work_dir:~0,-1%
? ? ? ? set lua_install_dir=%work_dir%\lua
? ? ? ? set compiler_bin_dir=%work_dir%\TDM-GCC-64\bin
? ? ? ? set lua_build_dir=%work_dir%\lua-%lua_version%
? ? ? ? set path=%compiler_bin_dir%;%path%
? ? ? ? cd /D %lua_build_dir%
? ? ? ? mingw32-make PLAT=mingw
? ? ? ? echo.
? ? ? ? echo **** COMPILATION TERMINATED ****
? ? ? ? echo.
? ? ? ? echo **** BUILDING BINARY DISTRIBUTION ****
? ? ? ? echo.
? ? ? ? :: create a clean "binary" installation
? ? ? ? mkdir %lua_install_dir%
? ? ? ? mkdir %lua_install_dir%\doc
? ? ? ? mkdir %lua_install_dir%\bin
? ? ? ? mkdir %lua_install_dir%\include
? ? ? ? copy %lua_build_dir%\doc\*.* %lua_install_dir%\doc\*.*
? ? ? ? copy %lua_build_dir%\src\*.exe %lua_install_dir%\bin\*.*
? ? ? ? copy %lua_build_dir%\src\*.dll %lua_install_dir%\bin\*.*
? ? ? ? copy %lua_build_dir%\src\luaconf.h %lua_install_dir%\include\*.*
? ? ? ? copy %lua_build_dir%\src\lua.h %lua_install_dir%\include\*.*
? ? ? ? copy %lua_build_dir%\src\lualib.h %lua_install_dir%\include\*.*
? ? ? ? copy %lua_build_dir%\src\lauxlib.h %lua_install_dir%\include\*.*
? ? ? ? copy %lua_build_dir%\src\lua.hpp %lua_install_dir%\include\*.*
? ? ? ? echo.
? ? ? ? echo **** BINARY DISTRIBUTION BUILT ****
? ? ? ? echo.
? ? ? ? %lua_install_dir%\bin\lua.exe -e"print [[Hello!]];print[[Simple Lua test successful!!!]]"
? ? ? ? echo.
? ? ? ? pause
雙擊腳本捏境,即可自動(dòng)編譯lua源碼了?
?那么于游,這里我們最好是手動(dòng)把lua添加到環(huán)境變量中?
?添加至環(huán)境變量后,就可以在cmd命令窗口中執(zhí)行l(wèi)ua命令了典蝌,接下來就開始lua的一些常用語(yǔ)法熟悉吧曙砂。
這里我還是用VS CODE來作為lua腳本的編輯器,首先我新建了一個(gè)demo.lua的腳本文件骏掀,然后在vs code中安裝lua插件,這里我安裝了一個(gè)名為L(zhǎng)ua Debug的插件。好了截驮,按照慣例笑陈,先來個(gè)print("Hello World!")?
http://lua-users.org/wiki/BuildingLuaInWindowsForNewbies
變量
lua是腳本語(yǔ)言,所以變量是沒有類型葵袭,只有你給它賦值之后才會(huì)確定類型涵妥,另外lua中默認(rèn)是全局變量,全局變量會(huì)污染全局坡锡,覆蓋變量
name='eyiadmin'
age=100
print(name,age)
name='admin'
print(name,age)
?如果我們想要定義為局部變化的話蓬网,需要在變量名前面加一個(gè)local,如:local name='eyiadmin'
基本數(shù)據(jù)類型
Lua 有一下8種基本類型:
nil:空值
string:字符串
number:數(shù)值
boolean:布爾值,只有true和false
function:函數(shù)類型
userdata
thread:線程類型
table:關(guān)系表類型鹉勒,可以是數(shù)組或者字典
下面我們就來簡(jiǎn)單演示一下各個(gè)常用類型吧,
name='eyiadmin'
age=100
isMan=true
print(name,age,isMan)
function printInfo(info)
? ? print(info)
end
printInfo('my name is eyiadmin')
table={'my','name','is','eyiadmin'}
for循環(huán)
語(yǔ)法格式如下:
for i=起始值, 結(jié)束值[,累計(jì)值(可忽略)] do
? ? 語(yǔ)句塊
end
?遍歷table,
table={'my','name','is','eyiadmin'}
for index,item in ipairs(table) do
? ? print(item)
end
注釋帆锋、語(yǔ)句塊
lua也有單行和多行注釋,單行使用--禽额,多行使用--[[和]]?
?關(guān)于語(yǔ)句塊锯厢,一般程序的語(yǔ)句塊是通過成對(duì)的{}來實(shí)現(xiàn),Python中是通過空格占位符來實(shí)現(xiàn)脯倒,在lua中是通過do xxx end來實(shí)現(xiàn)?
好了实辑,今天就先到這里吧,一般簡(jiǎn)單是腳本可以應(yīng)付了藻丢,如果下次我們使用觸動(dòng)精靈來編寫腳本有遇到新知識(shí)剪撬,我們?cè)賮碛涗洶伞T谶@里我聲明一下悠反,我和觸動(dòng)精靈無任何關(guān)系残黑,只是最近想刷刷視頻,突然找到這個(gè)東西问慎。
我只是記錄我的學(xué)習(xí)過程萍摊,由于書讀得少,可能很多地方表述或者是理解得不對(duì)如叼,請(qǐng)輕噴并指正冰木。