精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將Android代碼轉換成JS代碼運行

汽車電子技術 ? 來源:安卓腳本 ? 作者:Dcrclub ? 2023-03-03 14:05 ? 次閱讀

Autojs這個工具中,因為它本身是使用的Rhino引擎開發的,因此它可以把Android代碼轉換成JavaScript語法的代碼來運行,Autojs提供了幾個相關的方法來輔助運行轉換后的代碼.

  • runtime.loadJar();
  • runtime.loadDex();
  • importClass();
  • importPackage();

以上四個方法,單獨來講一下.

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
收藏 人收藏

    評論

    相關推薦

    在芯片內部是如何將程序的0或1轉換成高低電平的?

    在芯片(或者說在單片機內部)內部是如何將程序的0或1轉換成物理的高低電平的?
    發表于 05-19 00:36

    如何將歌曲簡譜的音符轉換成匯編代碼

    我有兩個轉換器但是都是轉換成C語言的音樂代碼,沒有匯編的。如圖,那些DB的16進制是怎么來的,求過程。高了好幾天都沒搞懂。。。。。
    發表于 10-28 17:34

    如何將一維字符數組轉換成字符串輸出

    望大神解惑如何將一維字符數組轉換成字符串輸出
    發表于 05-02 10:36

    Multisim 如何將電路圖轉換成Ultiboard 可以識別的文件

    求助Multisim 如何將電路圖轉換成Ultiboard 可以識別的文件
    發表于 07-04 13:37

    如何將char型指針強制轉換成UCHAR型指針

    如何將char型指針強制轉換成UCHAR型指針??????、、
    發表于 12-21 15:51

    HDL如何轉換成RTL視圖?

    先生,我是DTU的第三年ECE學生。我想問一下HDL(Code)如何轉換成RTL視圖..?主席先生,是任何轉換給定RTL視圖(用戶定義)轉換為HDL
    發表于 03-23 10:05

    如何將數組轉換成整形數值

    labview中將一維數組轉換成對應的整型數值呢?...可能我描述的不清楚,就像圖上顯示的那樣,如何將labview中那個100,200的一維數組轉換成PLC監控到的10進制雙字的 13107300那個值呢?
    發表于 08-26 00:23

    如何將陀螺儀的原始數據轉換成角速度呢

    我正在使用 lsm6dsl 傳感器。我正在獲取有關寄存器的數據。如何將原始數據轉換成角度
    發表于 12-15 08:19

    單片機如何將磁場轉換成電流呢?

    單片機如何將磁場轉換成電流呢?
    發表于 04-13 10:08

    如何將一個INT型數據轉換成2個CHAR型數據?

    如何將一個INT型數據轉換成2個CHAR型數據?
    發表于 11-03 06:20

    如何將pads2007轉換成cadence文件

    pads2007轉cadence:如何將pads2007轉換成cadence文件
    發表于 09-14 09:55 ?0次下載
    <b class='flag-5'>如何將</b>pads2007<b class='flag-5'>轉換成</b>cadence文件

    數學原理:如何將ADC代碼轉換為電壓(第1篇)

    許多初步了解模數轉換器(ADC)的人想知道如何將ADC代碼轉換為電壓。或者,他們的問題是針對特定應用,例如:如何將ADC
    發表于 04-18 03:30 ?3718次閱讀

    如何將頻譜噪聲密度轉換成均方根噪聲的操作方法分析

    ADI公司的Matt Duff就如何將頻譜噪聲密度(nV/√Hertz)轉換成均方根噪聲(mV rms)進行說明。
    的頭像 發表于 06-13 06:00 ?8910次閱讀

    如何將RMS噪聲轉換成峰峰值噪聲

    ADI公司的Matt Duff就如何將RMS噪聲轉換成峰峰值噪聲進行說明。
    的頭像 發表于 06-12 06:20 ?8486次閱讀

    如何將Protel DXP轉換成Gerber詳細教程免費下載

    本文檔的主要內容詳細介紹的是如何將Protel DXP轉換成Gerber詳細教程資料免費下載。
    發表于 08-09 16:36 ?0次下載
    <b class='flag-5'>如何將</b>Protel DXP<b class='flag-5'>轉換成</b>Gerber詳細教程免費下載