使用场景
有些功能需要在打包后的app中调试, 比如高德地图, 需要在AndroidManifest.xml的application标签中配置Key
效果展示
autojs版本
需求分析
- 如果要随时修改代码, 需要一个输入框, 适合简短的代码测试
- 执行一个脚本文件. 需要一个输入框, 填写脚本文件路径
- 执行一个项目, 需要一个输入框, 填写入口文件路径
布局
ui.layout( <vertical> <text gravity="center" textStyle="bold" textSize="30sp"> 牙叔出品 </text> <input id="代码内容" w="*"></input> <button id="执行代码">执行代码</button> <input id="脚本文件路径" w="*"></input> <button id="执行脚本文件">执行脚本文件</button> <input id="项目入口文件路径" w="*"></input> <button id="执行项目">执行项目</button> <button id="日志">日志</button> <button id="停止脚本" text="停止脚本"></button> </vertical> );
输入框默认值
ui.代码内容.setText('toastLog("hello");'); ui.脚本文件路径.setText("/sdcard/脚本/main.js"); ui.项目入口文件路径.setText("/sdcard/脚本/测试/main.js");
按钮点击事件
ui.执行代码.click(function () { eval(ui.代码内容.text()); }); ui.执行脚本文件.click(function () { engines.execScriptFile(ui.脚本文件路径.text().trim()); }); ui.执行项目.click(function () { let entryFilePath = ui.项目入口文件路径.text().trim(); engines.execScriptFile(entryFilePath, { path: entryFilePath.replace(/\/[\w.]+?$/, "") }); }); ui.日志.click(function () { app.startActivity("console"); }); ui.停止脚本.click(function () { engines.all().map((ScriptEngine) => { if (engines.myEngine().toString() !== ScriptEngine.toString()) { ScriptEngine.forceStop(); } }); });
总结
以上代码组合使用, 我们就可以调试任意脚本了, 配合mt管理器基本可以解决所有调试问题