喲...好久沒更新文章了.嘿嘿, 今天得空兒,更新一篇~
關(guān)于adb權(quán)限老生常談的問題,Shizuku的激活狀態(tài)莫名其妙掉了再次激活很麻煩,所以啊在執(zhí)行需要用到ADB權(quán)限的腳本時,在腳本代碼前加上我今天講的知識,就無須擔(dān)心這個問題.檢測如果沒有adb權(quán)限.就自動去激活一下Shizuku. 首先說一下整個流程的原理.
關(guān)于無線ADB:
無線ADB就是在手機(jī)上打開一個adb的端口. 默認(rèn)是 5555, 但是開這個端口的前提是.需要手機(jī)連接電腦打開手機(jī)的adb調(diào)試之后,在電腦的終端上執(zhí)行一條命令
adb tcpip 5555
執(zhí)行之后無線ADB算是開放了.此時拔掉數(shù)據(jù)線. 在終端輸入
adb connect 192.168.1.80 #自己替換成自己手機(jī)的IP
connected to 192.168.1.80:5555 #出現(xiàn)這個提示,說明連接成功了
這就是無線的方式連接adb調(diào)試, 但是它有一個弊端.就是每次重啟后這個adb的端口就會被重置了,需要重新連接數(shù)據(jù)線進(jìn)行開啟
關(guān)于Termux:
Termux之前講過是一個Android端的終端仿真器,有很多的軟件可安裝.這里面就需要用到adb工具了, adb這個可執(zhí)行程序在android-tools這個軟件包中,需要在Termux里面先安裝它,安裝命令如下:
pkg install -y android-tools
加-y參數(shù)會直接跳過確認(rèn)提醒直接一步安裝完畢.我就不截圖了,你們自己執(zhí)行一下就好.安裝完畢后Termux的準(zhǔn)備也就完成了.
Shizuku激活命令:
adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh
執(zhí)行階段:
關(guān)于Autojs如何調(diào)用Termux. 原理和方法請參考上一篇發(fā)的文章
傳送門: 利用Autojs調(diào)用termux的內(nèi)部命令
注意這篇文章一定要看. 否則你的Termux不能從外部被調(diào)用的. 需要改包.因?yàn)锳utojs沒有調(diào)用Termux的權(quán)限.
這里我需要Ctrl+CV一下. 請騷等我一下...
好了...代碼copy完成了
//判斷autojs是否有adb權(quán)限
let adbCheck = $shell.checkAccess("adb");
if (!adbCheck) {
console.log("沒有adb權(quán)限");
app.launchApp("Termux");
let szkCommand = "adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh";
runShellToTermux(szkCommand);
} else {
console.log("已有adb權(quán)限");
}
//將autojs的shell切換到adb權(quán)限
$shell.setDefaultOptions({adb: true});
//在此之后執(zhí)行你需要的操作
/**
* 使用termux終端執(zhí)行shell命令
* @param {string} cmd 需要執(zhí)行的命令
* @param {string} workdir shell的工作目錄 不填則默認(rèn) "/sdcard/腳本/"
* @param {boolean} backgound 是否前臺運(yùn)行 不填則默認(rèn)后臺運(yùn)行
* @return {void} 沒有返回值
*/
function runShellToTermux(cmd, workdir, backgound) {
let shellStr = cmd;
let workDir = workdir || "/sdcard/腳本/";
let bg = backgound || true;
let strArry = shellStr.split(" ");
let strArryLength = strArry.length - 1;
let command = strArry[0];
let per = util.java.array('string', strArryLength);
for (let i = 0; i < strArryLength; i++) {
per[i] = strArry[i+1];
}
let intent = new Intent();
intent.setClassName("com.termux", "com.termux.app.RunCommandService");
intent.setAction("com.termux.RUN_COMMAND");
intent.putExtra("com.termux.RUN_COMMAND_PATH", "/data/data/com.termux/files/usr/bin/" + command);
intent.putExtra("com.termux.RUN_COMMAND_ARGUMENTS", per);
intent.putExtra("com.termux.RUN_COMMAND_WORKDIR", workDir); //工作目錄
intent.putExtra("com.termux.RUN_COMMAND_BACKGROUND", bg); //是否后臺運(yùn)行
intent.putExtra("com.termux.RUN_COMMAND_SESSION_ACTION", "0");
context.startService(intent);
}
-
代碼
+關(guān)注
關(guān)注
30文章
4807瀏覽量
68786 -
腳本
+關(guān)注
關(guān)注
1文章
391瀏覽量
14897 -
adb
+關(guān)注
關(guān)注
1文章
36瀏覽量
10444
發(fā)布評論請先 登錄
相關(guān)推薦
評論