哟...好久没更新文章了.嘿嘿, 今天得空儿,更新一篇~
关于adb权限老生常谈的问题,Shizuku的激活状态莫名其妙掉了再次激活很麻烦,所以啊在执行需要用到ADB权限的脚本时,在脚本代码前加上我今天讲的知识,就无须担心这个问题.检测如果没有adb权限.就自动去激活一下Shizuku. 首先说一下整个流程的原理.
关于无线ADB:
无线ADB就是在手机上打开一个adb的端口. 默认是 5555, 但是开这个端口的前提是.需要手机连接电脑打开手机的adb调试之后,在电脑的终端上执行一条命令
adbtcpip5555
执行之后无线ADB算是开放了.此时拔掉数据线. 在终端输入
adbconnect192.168.1.80#自己替换成自己手机的IPconnected to192.168.1.80:5555#出现这个提示,说明连接成功了
这就是无线的方式连接adb调试, 但是它有一个弊端.就是每次重启后这个adb的端口就会被重置了,需要重新连接数据线进行开启
关于Termux:
Termux之前讲过是一个Android端的终端仿真器,有很多的软件可安装.这里面就需要用到adb工具了, adb这个可执行程序在android-tools这个软件包中,需要在Termux里面先安装它,安装命令如下:
pkginstall -y android-tools
加-y参数会直接跳过确认提醒直接一步安装完毕.我就不截图了,你们自己执行一下就好.安装完毕后Termux的准备也就完成了.
Shizuku激活命令:
adb shell sh/storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh
执行阶段:
关于Autojs如何调用Termux. 原理和方法请参考上一篇发的文章
注意这篇文章一定要看. 否则你的Termux不能从外部被调用的. 需要改包.因为Autojs没有调用Termux的权限.
这里我需要Ctrl+CV一下. 请骚等我一下...
好了...代码copy完成了
//判断autojs是否有adb权限letadbCheck = $shell.checkAccess("adb");if(!adbCheck) {console.log("没有adb权限"); app.launchApp("Termux");letszkCommand ="adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh"; runShellToTermux(szkCommand); }else{console.log("已有adb权限"); }//将autojs的shell切换到adb权限$shell.setDefaultOptions({adb:true});//在此之后执行你需要的操作/** * 使用termux终端执行shell命令 *@param{string}cmd 需要执行的命令 *@param{string}workdir shell的工作目录 不填则默认 "/sdcard/脚本/" *@param{boolean}backgound 是否前台运行 不填则默认后台运行 *@return{void}没有返回值 */functionrunShellToTermux(cmd, workdir, backgound){letshellStr = cmd;letworkDir = workdir ||"/sdcard/脚本/";letbg = backgound ||true;letstrArry = shellStr.split(" ");letstrArryLength = strArry.length -1;letcommand = strArry[0];letper = util.java.array('string', strArryLength);for(leti =0; i < strArryLength; i++) { per[i] = strArry[i+1]; }letintent =newIntent(); 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); }
- 代码
+关注
关注
30文章
4637浏览量
67608 - 脚本
+关注
关注
1文章
380浏览量
14745 - adb
+关注
关注
1文章
35浏览量
10385
发布评论请先登录
相关推荐
评论