搞开发,必踩坑
踩坑一:(与踩坑七有关联)
require引入的模块目录,最好是不要写../ 向上找目录,应该将其他模块文件至于同级目录之下
vscode调试不报错,打包后会报错,提示模块not found,丢失了一层目录结构
将common目录移入module下,修改全部引入文件../为./后,运行正常。
踩坑二:
autoJsPro9打包权限问题,默认勾选的300多项权限,实际常用的只有这几项,如果打包的时候,不重新勾选一下,会导致权限打包不进去,比如没有悬浮窗权限
踩坑三:
安卓版本10及其以上获取不到IMEI
// 安卓API版本 29 安卓10 config.SDK_API_VERSION = android.os.Build.VERSION.SDK_INT // 安卓10及以上 取androidId 10以下 取IMEI deviceUUID = config.SDK_API_VERSION > 28 ? device.getAndroidId() : device.getIMEI() commonStorage.put("deviceUUID", deviceUUID)
踩坑四:
在循环中快速触发toast,后一个不会立即覆盖前一个,脚本停止后还一直再弹消息
可以采用自定义toast的方式,全局定义一个toast对象,创建后,只做隐藏显示
/** * 自定义消息气泡 * @param {*} msg */ utilsObj.toast = (msg) => { if (!toastCustom) { toastCustom = new Toast(context); } if (!view) { view = Toast.makeText(context, msg, Toast.LENGTH_SHORT).getView(); } toastCustom.setView(view); toastCustom.setText(msg); toastCustom.setDuration(200); toastCustom.show(); }
踩坑五:
打开图片,两种方式无法打开png格式图片,采用app.viewFile解决
踩坑六:
多次请求截图权限会报只能请求一次请求截图权限的异常,再次请求截图,不报异常,也不往下走
采用,每次都停止截图权限,再重新开启权限的方案
踩坑七:
基于踩坑一的后续问题发现,踩坑一的解决方案可能不严谨
修改require引入路径后,在vscode中调试又出现了not found的问题
经过测试与排查
在main.js直接require引入的文件中,采用这种方式是没有问题的,读取相对路径文件
engines.execScriptFile的路径,必须是从根目录开始读取,即使两个文件在同级目录
通过engines.execScriptFile执行的脚本文件中,如果也使用require引入其他文件,同样也是需要基于项目根路径去引入文件,而不能是以被执行脚本文件与引入文件的相对路径编写
总结一下:engines.execScriptFile执行的脚本文件,里面require引入的文件,必须是从项目根目录去找,不能是以被执行文件的相对路径
发表评论