网站首页 > 技术教程 正文
本文使用简单易用的 aardio 开发环境,体积只有几 MB,下载打开就可以写代码,不需要任何复杂的配置,可以方便地生成小巧的独立 EXE 程序。
自动安装安卓子系统
使用下面的 aardio 代码可以获取到安卓子系统的官方下载地址,代码很简单:
import web.rest.htmlClient
var htmlDoc = web.rest.htmlClient.post("https://store.rg-adguard.net/api/GetFiles",{
type: "ProductId",
url: "9P3395VX91NR",
ring: "WIS",
lang: "zh"
})
var ele = htmlDoc.queryEle(tagName="a",innerText="\.msixbundle#34;);
var url = ele.href;
返回的下载链接如果不够快,重新获取几次一般就变快了。
用下面的代码下载安卓子系统(支持断点续传),然后自动安装:
//下载安卓子系统
import inet.downBox;
var downBox = inet.downBox(winform,"下载安卓子系统(WSA)",1);
var wsaPath = downBox.download(url,"/download/wsa")
//自动安装安卓子系统
import process.popen;
process.popen.ps(`-command`,`&{Add-AppxPackage "`+wsaPath+`"}`);
用下面的代码可以检测系统是否已安装安卓子系统:
import com.shell;
if( sys.wsa.isInstalled() ){
}
用下面的代码打开安卓子系统设置界面:
sys.wsa.settings();
完整的安卓子系统自动安装工具源代码请参考 aardio 自带范例:『 操作系统 > 安卓子系统 > 一键安装 』
在安卓子系统中自动安装应用
在系统搜索中输入 "android" 搜索,然后在搜索结果中单击打开安卓子系统设置。
也可以调用下面的 aardio 代码直接打开安卓子系统设置:
sys.wsa.settings();
在设置界面切换到『开发人员』:
点下图 ? 处切换为启用开发人员模式:
然后在上图 ? 处可以看到连接安卓子系统的 IP 地址与端口,IP 固定是 127.0.0.1,端口默认是 58526。
如果没有看到 IP 与端口,这是因为安卓子系统还没有启动。点一下上图 ? 处的『管理开发人员设置』就会启动安卓子系统,然后再关闭『开发人员模式』,最后再开启『开发人员模式』,连接安卓子系统的 IP 端口就会显示出来了。
使用下面的 aardio 代码就可以通过 ADB 连接安卓子系统:
import process.adb;
process.adb.connect("127.0.0.1:58526",true)
这个函数有 2 个返回值,成功则返回值 1 非空,失败则返回值 2 为错误信息(非 null 值)。
如果要完美一些可以这样写:
import console.int;
import process.adb;
var ret,err = process.adb.connect("127.0.0.1:58526",true);
if(err){
console.log(err)
console.log("首次连接,请在 WSA 弹出的确认对话框中通过验证")
return;
}
如果 Windows 弹出是否允许 ADB 调试连接的对话框,如下:
可勾选『始终允许从此计算机』,然后点击『允许』按钮。
安装安卓应用很简单,代码如下:
import process.adb;
//连接安卓子系统,注意参数 @2 要设为 true (连接后切换为当前设备)
process.adb.connect("127.0.0.1:58526",true)
//下载并安装应用(参数可以是本地路径)。
process.adb.installUrl("https://d.toutiao.com/PqXU");
查找与运行安卓子系统应用
用下面的 aardio 代码可以检测安卓子系统是否安装了指定的应用:
//查找指定的 WSA 应用是否安装
if(sys.wsa.findPackage("com.ss.android.article.news")){
}
用下面的 aardio 代码可以直接运行安卓子系统的应用:
raw.execute("wsa://com.ss.android.article.news")
打开安卓子系统内置设置:
raw.execute("wsa://com.android.settings")
运行效果如下:
在设置里点击『 应用 > 所有应用』,点击应用页面的『打开』链接可以启动安卓应用。
可以运行 aardio 中的『工具 > 窗口探测器』,将窗口探针拖到安卓应用窗口上。在窗口探测器里显示了安卓应用的窗口类名,在类名前加上 wsa:// 就是这个应用的启动链接。
例如内置安卓应用『文件』的窗口类名是
"com.android.documentsui"
,那么打开这个应用的链接就是
"wsa://com.android.documentsui"
,在 aardio 代码中运行下面的代码可以打开『文件』应用:
raw.execute("wsa://com.android.documentsui")
其他我们自己安装的安卓应用,在 Windows 开始菜单里可以看到链接,右键看链接属性,在启动参数里也可以看到 wsa:// 开头的链接。
sys.wsa
aardio 标准库中的 sys.wsa 提供了很多调用安卓子系统的函数,例如上面提到的打开安卓应用,也可以这样写:
import sys.wsa;
sys.wsa.launch("com.android.documentsui")
打开安卓开发者选项:
import sys.wsa;
sys.wsa.androidDeveloperSettings();
打定的应用切换到全屏:
import sys.wsa;
sys.wsa.fullscreen("com.android.documentsui")
打开安卓应用设置界面:
import sys.wsa;
sys.wsa.modify("com.android.documentsui")
更多函数请参考 sys.wsa 库函数文档。
adb 开发
adb 可以做的事很多,不仅可以控制安卓子系统,也可以控制安卓手机。
下面是一个简单的例子:
import console.int;
import process.adb;
/*
查找已连接设备,找不到返回 null,
找到多个设备会自动设置默认设备,找到单个设备时不限定默认设备。
*/
if(!process.adb.findDevice()){
return console.log("未连接手机设备")
}
//获取所有设备
var devices = process.adb.getDevices();
console.dumpJson(devices);
//获取当前设备
var serialNo = process.adb.getSerialNo();
console.log("当前设备",serialNo)
var state = process.adb.getState();
console.log(state=="device"?"已连接":"未连接")
//执行 ADB 命令并获取结果,成功返回进程输出,失败返回 null,错误信息。
console.log(process.adb.get("get-state"))
//执行 Shell 命令
var adb = process.adb.shell("ls");
var out = adb.readAll(); //读取进程输出,adb 是一个 process.popen 对象,请参考该库函数文档。
console.log(out);
//执行 am start 命令打开程序,例如调用浏览器打开网址
var adb = process.adb.shell("am start -a android.intent.action.VIEW -d 'https://www.example.com'");
//或者直接调用下面的函数也可以
process.adb.startUrl("https://www.example.com");
通过 adb 模拟按键发送手机短信:
import process.adb;
process.adb.connect("IP:端口",true)
//发送短信
process.adb.shellGet(`am start -a android.intent.action.SENDTO -d sms:目标手机号码 --es sms_body "短信内容" --ez exit_on_sent true`)
//模拟按键
process.adb.keyDpadRight();
process.adb.keyEnter();
process.adb.keyHome()
adb 还支持无线连接,扫码配对,在 aardio 中实现扫码配对很简单,几句代码就可以了,如下:
import process.adb.qrCode;
var qrBmp = process.adb.qrCode(winform );
winform.plus.setBackground(qrBmp.copyBitmap(winform.plus.width));
aardio 范例中已经自带了一个扫码配对工具,范例位置:网络应用 > adb > 扫码配对。
猜你喜欢
- 2024-11-05 Android 教程:如何刷入通讯基带 手机刷机基带
- 2024-11-05 4张图搞懂 手机DLNA你真会玩? 手机上dlna是什么设备
- 2024-11-05 教师网课直播神器系列:vysor & scrcpy 手机投屏到PC,支持息屏控制
- 2024-11-05 adb工具的有趣的玩法 adb工具包如何使用
- 2024-11-05 最低79元!爱否科技发布无线充电器:颜值不俗,功率最高10W
- 2024-11-05 跨平台Android实时显示投屏控制软件——QtScrcpy
- 2024-11-05 adb 命令常用命令基本语法 adb命令大全详解
- 2024-11-05 湖北联通烽火HG680-J免拆机破解安装应用教程
- 2024-11-05 google tv 已连接无法访问互联网的解决方法和注意事项
- 2024-11-05 用Python与ADB解锁Android自动化之路
你 发表评论:
欢迎- 05-1613步震撼淘宝大促闪光裂纹破墙立体字PS制作教程
- 05-16AI教程 | 绘制扁平的萌萌哒图标
- 05-160基础学平面设计所需了解的基础常识汇总
- 05-16自学平面设计需要多长时间?十六年职业设计总监告诉你
- 05-16平面设计都要学习哪些内容?
- 05-16李涛PS教程 高手之路PS教程 合成教程 —制作一个小星球
- 05-16Illustrator实例教程:制作炫酷的漩涡效果
- 05-16Illustrator实例教程:利用混合工具制作一朵炫酷的花
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)