常见问题

# 常见问题 这里收录了一些常见问题,如果你的问题不在此列,请尝试右上角搜索文档,查阅相关文档;或者在官方博客、搜索引擎、自带示例中搜索。 在查阅文档、网络资料等均未找到答案时,你可以尝试在官方QQ群、官方频道(论坛)中求助,但请注意: 提问之前请查阅应用内自带示例(示例支持搜索)、商店(也支持搜索)、官方文档、官方博客、搜索引擎等,是否已经包含了你的问题答案 不要用“不能用”、“报错”等含糊字眼,请直接贴出具体代码,具体错误截图或文本(错误需要完整!),运行日志 请提供你的Auto.js Pro版本(不要说“最新”,请说具体版本号)、系统、Android版本 怀疑是bug的,请先更新到群文件、官网的最新版本尝试是否仍然有问题 # 显示Toast信息时,自动加上了应用名称前缀 这是定制系统(比如小米、华为)的特性,而非Auto.js自身添加的前缀。 # 在后台时无法显示Toast 这是系统自身的限制,你可以尝试授予应用通知权限。另外,从Android 11开始,自定义View的Toast内容将无法在后台显示。 # 在后台时launchApp等无反应 从Android 10开始(部分国内厂商系统可能更早),应用无法在应用启动其他应用、自身界面,因此,launch、launchApp等代码会无反应。 部分国内厂商系统中有一个“后台启动界面”的权限,如果你在应用的权限设置中找到它,可以尝试开启此权限;或者开启“自启动”、“后台启动”等权限。 # 在后台时无法读写剪贴板 从Android 10开始,应用无法在后台读写剪贴板。如果你在后台时需要和用户交互并读写剪贴板,可以尝试使用悬浮窗获取焦点,再读写剪贴板。 # 代码运行一段时间后就自动停止,没有任何报错、崩溃 首先你需要确定,你的代码是真的没有报错,你可以将日志目录设置到sdcard(参见setGlobalLogConfig),查看日志文件的内容。 一旦你确定代码是运行一段时间(一般几个小时以上)自动停止,那么有几种原因: 内存不足 这可能是设备本身的内存较低,或者是代码中有内存泄露。内存泄露又有多种情况: 在Pro 9.2及以前的版本,包括免费版,引擎自身有内存泄露。请更新到Pro 9.3以上版本。 代码自身有内存泄露,比如反复创建对象等。典型的错误代码有: 被系统杀死 比如消耗资源较高长时间超过100% CPU运行,消耗较高的电量,被系统杀死;或者没有开启前台服务、没有界面、悬浮窗等情况被系统认为低优先级而杀死。 这些情况下除了加入白名单、开启前台服务,保持充电状态时,还有用一些异步方式(比如第二代API)来代替,减少耗电和资源消耗。 其他异常 你可以用Logcat来查看进程退出的信息。一般来说,不管是内存不足、被系统杀死还是应用崩溃,在Logcat中都有相关日志。 Logcat一般需要在电脑上使用adb命令,在手机上则需要root权限才能查看完整的日志。 # 运行脚本时出现"Module toast not found"或者"missing ; before statement" 通常这是因为使用第一代引擎去运行第二代API的脚本。你需要将文件名改名为".node.js"结尾的文件,或在文件前面加上`"nodejs"`;。 请查阅第二代API的文档。 # 如何定时运行、根据特定条件自动运行脚本 点击脚本右边的菜单按钮->更多->任务即可设置一个脚本任务。任务可以是定时任务,也可以是开机自动运行、解锁屏幕等条件。 但是必须保持Auto.js Pro后台运行,给予自启动白名单、电源管理白名单等,参见不要杀死我的APPopen in new window。 # 打包后如何设置任务、开机启动 使用代码将文件加入任务,可以设置定时任务或者开机自启动等任务,参见定时与任务。 # 任务如何获取外部参数 如果一个脚本是用任务触发启动的,比如任务中的特定事件(网络状态变化等)触发而启动的,则可以通过`engines.myEngine().execArgv.intent`获取启动的intent,从而获取外部参数。 # 如何把图片和脚本一起打包,或者打包多个脚本 如果除了单脚本以外还有其他脚本、图片、音乐等资源一起打包,则需要使用项目功能。 点击Auto.js Pro的"+"号,选择项目,填写项目名称、包名等信息以后,点击"√"即可新建一个项目。可以在项目中放多个脚本、模块、资源文件,点击项目工具栏的apk打包图标即可打包一个项目,点击工具栏可以重新配置项目。 例如,ui中的图片控件要引用同一文件夹的2.png图片则为`<img src="file://2.png"/>`。Auto.js内置的函数和模块都支持相对路径,但是,其他情况则需要使用`files.path()`函数来把相对路径转换为绝对路径。 # 如何使打包的应用隐藏日志界面 打包时在打包配置中勾选隐藏日志界面即可。一般来说,建议脚本不要没有任何界面,否则一些依赖界面的功能会出现错误,或者是容易被系统杀死。 # Auto.js自带的模块和函数中没有的功能如何实现 由于Auto.js支持直接调用Android的API,对于Auto.js没有内置的函数,可以直接通过修改Android代码为JavaScript代码实现。例如旋转图片的Android代码为: ``` import android.graphics.Bitmap; import android.graphics.Matrix; public static Bitmap rotate(final Bitmap src, final int degrees, final float px, final float py) { if (degrees == 0) return src; Matrix matrix = new Matrix(); matrix.setRotate(degrees, px, py); Bitmap ret = Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true); return ret; } ``` 转换为JavaScript的代码后为: ``` importClass(android.graphics.Bitmap); importClass(android.graphics.Matrix); function rotate(src, degrees, px, py){ if (degrees == 0) return src; var matrix = new Matrix(); matrix.setRotate(degrees, px, py); var ret = Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true); return ret; } ``` 有关调用Android和Java的API的更多信息,参见W # 写脚本必备神器 ## 1. vscode 地表最强 代码编辑器 必知必会 搜索文件 比较文件 ## 2. android studio Android集成开发工具 对写脚本有用的功能 把java 转为jar 或者 dex, 供脚本使用 查找java类 预览xml界面, 成功后移植到脚本UI ## 3. AnLink 手机投屏到电脑的软件, 可以usb投屏, 也可以无线投屏 ## 4. apipost http接口测试 ## 5. ScriptGraphicHelper 图色工具 ## 6. GifCam 录制视频, 输出gif动图, 给别人展示脚本效果 有时候会图片里会出现大片的绿色, 后来我就用了 屏幕录像机(oCam), 这个效果更好 ## 7. uTools 工具大全 我主要用来取色, 和查看autojs文档, 还有便签功能 ## 8. HexEditXP 十六进制编辑器 ## 9. mt管理器 破解反编译, 查看dex, 添加app权限, 添加dex文件, 签名, 超神工具 ## 10. FV文件浏览器 查找和浏览手机上的文件 ## 11. VisualEditor autojs脚本可视化界面编辑器 查找控件的属性, 也很方便 ## 12. 文档类 看本文档 [安卓官方文档](https://developer.android.google.cn/docs)