1. 程式人生 > >Android拓展 lua實現類似按鍵精靈效果

Android拓展 lua實現類似按鍵精靈效果

在android 上執行lua指令碼,但是想用lua指令碼的方式去實現自動按鍵的效果的話就得拓展lua關鍵字;我是直接在 AndroLua的基礎上拓展的。很多人說為什麼不用adb,adb只能實現簡單的指令,不能實現取色找圖效果,因此要實現高階指令的話,必須用C/C++實現,直接操作底層的裝置驅動檔案,而且adb指令也不能做到遠端下發實現集控效果,因此要想自己的專案在移動端自動化裡面起點站的更高一點的話,通過實現底層函式去拓展lua是最好的選擇,就比如按鍵精靈一樣

下面就介紹如何拓展lua關鍵字,我主要是參考lua的os.time()函式,在檔案loslib.c我們可以看到os系列函式的定義實現如下圖:


通過luaopen_os函式我們可以 知道該呼叫將會註冊os函式族,那麼在lua指令碼中就可以使用os...函數了。往下我們看看luaopen_os()函式是在哪裡被呼叫的,全域性搜找到init.c檔案中如下:

luaL_openlibs()函式統一呼叫了一些列的函式註冊方法,使得所有的lua模組都生效,而在專案AndroidLua中在java層就呼叫openLibs()方法,這個最終會通過JNI呼叫到luaL_openlibs()函式。到這裡就可以按照上面的思路去拓展我們的lua關鍵字,在上圖中我已經加了個luaopen_system()函式,下面是這個函式的註冊列表


編譯成功後我們就可以在lua指令碼中使用system.x()系列的函數了

上面的system系列函式主要是用於實現類似按鍵精靈的效果,要執行的話先要root手機獲取最高許可權,效果圖和原始碼地址:

下面的指令碼將會模擬點選螢幕三次,按下音量-鍵,按返回鍵,按選單鍵,按home鍵,點選螢幕頂部下滑,

因為這是寫在程式碼中的所以有很多雙引號和換行符,我們也可以寫在.lua檔案中通過dofile執行指令碼,效果圖可以在github原始碼地址中看大