喲...好久沒更新文章了.嘿嘿, 今天得空兒,更新一篇~
關(guān)于adb權(quán)限老生常談的問題,Shizuku的激活狀態(tài)莫名其妙掉了再次激活很麻煩,所以啊在執(zhí)行需要用到ADB權(quán)限的腳本時,在腳本代碼前加上我今天講的知識,就無須擔心這個問題.檢測如果沒有adb權(quán)限.就自動去激活一下Shizuku. 首先說一下整個流程的原理.
關(guān)于無線ADB:
無線ADB就是在手機上打開一個adb的端口. 默認是 5555, 但是開這個端口的前提是.需要手機連接電腦打開手機的adb調(diào)試之后,在電腦的終端上執(zhí)行一條命令
adb tcpip 5555
執(zhí)行之后無線ADB算是開放了.此時拔掉數(shù)據(jù)線. 在終端輸入
adb connect 192.168.1.80 #自己替換成自己手機的IP
connected to 192.168.1.80:5555 #出現(xiàn)這個提示,說明連接成功了
這就是無線的方式連接adb調(diào)試, 但是它有一個弊端.就是每次重啟后這個adb的端口就會被重置了,需要重新連接數(shù)據(jù)線進行開啟
關(guān)于Termux:
Termux之前講過是一個Android端的終端仿真器,有很多的軟件可安裝.這里面就需要用到adb工具了, adb這個可執(zhí)行程序在android-tools這個軟件包中,需要在Termux里面先安裝它,安裝命令如下:
pkg install -y android-tools
加-y參數(shù)會直接跳過確認提醒直接一步安裝完畢.我就不截圖了,你們自己執(zhí)行一下就好.安裝完畢后Termux的準備也就完成了.
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)用的. 需要改包.因為Autojs沒有調(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的工作目錄 不填則默認 "/sdcard/腳本/"
* @param {boolean} backgound 是否前臺運行 不填則默認后臺運行
* @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); //是否后臺運行
intent.putExtra("com.termux.RUN_COMMAND_SESSION_ACTION", "0");
context.startService(intent);
}
-
代碼
+關(guān)注
關(guān)注
30文章
4880瀏覽量
70004 -
腳本
+關(guān)注
關(guān)注
1文章
395瀏覽量
28299 -
adb
+關(guān)注
關(guān)注
1文章
39瀏覽量
10626
發(fā)布評論請先 登錄
相關(guān)推薦
windows xp SP2激活工具(詳細步驟說明怎么激活,如何操作)
微辰金服|不激活的信用卡會自動注銷嗎
windows怎么激活沒有密鑰
具有自動亮度調(diào)節(jié)功能的運動激活燈

S7-1500從站的激活與取消激活
Windows激活工具
激活CPU的系統(tǒng)診斷并在HMI上調(diào)用
一個簡單的設備激活器電路

評論