Autojs這個工具中,因為它本身是使用的Rhino引擎開發的,因此它可以把Android代碼轉換成JavaScript語法的代碼來運行,Autojs提供了幾個相關的方法來輔助運行轉換后的代碼.
以上四個方法,單獨來講一下.
runtime.loadJar(PATH);
PATH是一個 jar包的路徑,可以是相對路徑,也可是絕對路徑,但是如果腳本是以普通腳本來運行的話,這個jar包必須是在你手機的存儲空間內, 不能是在PC上放著,因為腳本的最終執行環境是在手機上運行,如果你把jar包放在PC上的話,腳本執行的時候, 是無法讀取到這個路徑的,就會報錯.
例如:
runtime.loadJar("/sdcard/腳本/lib/Jsoup-1.2.1.jar");
runtime.loadDex(PATH);
這個方法是加載一個dex包,使用方法和loadJar()方法相同.它和loadJar();的不同在于加載速度,loadDex()的加載速度相比loadJar()要快很多,因此建議將jar包轉換成dex包后再在autojs中使用.
importClass();
這個方法是引入安卓的一個類.這里呢分兩種情況,在我們引入一個類的時候,類名可以加上引號,也可以不加.如果我們在使用java的核心包的時候,例如:java.io, 在調用它里面的類時,就可以不加雙引號.但是如果我們要使用java的擴展包就必須加上雙引號了.否則autojs中可能會報錯.
例如:
importClass(java.io.File);
importClass("javax.net.ssl.SNIServerName");
importPackage();
引入一個包使用方法同上.
例如:
importPackage(java.io);
importPackage("javax.net.ssl");
在java或者android代碼中,會有變量的類型一說.因為它們是強語言類型,但是JavaScript是弱語言類型,聲明變量只有 let var const或者直接寫一個變量,這個變量是什么類型完全看給它賦的什么值.因此我們在autojs中定義變量時,不需要管轉換之前這個變量是什么類型, 直接甩一個var全部搞定.
例如在java代碼中這些寫:
import java.io.File
File f = new File("/sdcard/1.txt");
那么轉換成JavaScript代碼運行后則可以這樣寫.
importClass(java.io.File);
var f = new File("/sdcard/1.txt");
或者
var f = new java.io.File("/sdcard/1.txt");
另外在定義數組的時候,如果java中聲明了數組的類型,比如一個字節數組
byte[] arr = new byte[8];
上面的代碼的意思是定義一個長度為8的字節數組,那如果按照常規的思路轉換成JavaScript代碼后是這樣的.
var arr = new Array(8);
這是在JavaScript中定義一個長度為8的數組.但是如果在轉換java代碼中這樣來定義一個byte數組就不對了,對于這種情況,在autojs中應該使用下面的方法來定義一個byte數組.
var arr = util.java.array('byte', 8);
那下面我們通過一小段java代碼來實戰轉換一下成為JavaScript代碼在autojs中運行.
JAVA代碼:
import java.io.File;
import java.util.ArrayList;
public class FileTest {
private static ArrayList
轉換后的JavaScript代碼(可在Autojs中運行的)
importClass(java.io.File);
importClass(java.util.ArrayList);
var filelist = new ArrayList();
main();
function main() {
var filePath = "/sdcard/腳本/";
getFiles(filePath);
}
function getFiles(filePath) {
var root = new File(filePath);
var files = root.listFiles();
for (let file in files) {
if (files[file].isDirectory()){
getFiles(files[file].getAbsolutePath());
filelist.add(files[file].getAbsolutePath());
console.log("顯示"+filePath+"下所有子目錄及其文件"+files[file].getAbsolutePath());
} else {
console.log("顯示"+filePath+"下所有子目錄"+files[file].getAbsolutePath());
}
}
}
以上就是在Autojs中把java或者android代碼轉換成autojs可執行的JavaScript代碼的方法.這是最簡單最基礎的一些方法,這些掌握了,你需要熟悉大量的安卓api,才能熟練轉換.并非說看完本文即可快速上手進行轉換. 另外本人并不屬性安卓的開發,如果某些術語表達的不準確,請見諒.
如果這篇文章有幫到您, 請動手點個贊在走,謝謝
-
Android
+關注
關注
12文章
3903瀏覽量
126605 -
javascript
+關注
關注
0文章
515瀏覽量
53656 -
Rhino
+關注
關注
0文章
4瀏覽量
6767
發布評論請先 登錄
相關推薦
評論