TonyJiangWJ / Ant-Forest

基于AutoJS的蚂蚁森林收能量脚本
GNU General Public License v2.0
1.28k stars 195 forks source link

申请截图权限的时候闪退 #223

Closed caiabc closed 5 months ago

caiabc commented 5 months ago

看到 _

“目前部分设备升级了MIUI13(Android 12)之后存在以下问题:

申请截图权限的时候闪退 需要安装特殊版本的Autojs 目前看来所有的开源版本都扑街了 可以加群获取 或者前往修改版 下载特殊版本 ” 但是但是,我用的这个新版本 “优化神奇海洋收集,使用shizuku进行点击。需要安装并激活shizuku并安装支持shizuku的autojs,否则无法使用 支持shizuku的版本下载:https://www.lanzouh.com/b042le51i 密码:b034 ”_

那么,请问,我既需要支持shizuku,又需要躲避闪退,应该用什么版本呢?

我的手机是小米12spro,系统是MIUI13.0.18。 烦请抽空指导!

TonyJiangWJ commented 5 months ago

。。。你不能提问前自己下载试试?都修复了

caiabc commented 5 months ago

。。。你不能提问前自己下载试试?都修复了

抱歉,我是已经使用了支持shizuku的版本下载:https://www.lanzouh.com/b042le51i 密码:b034 这个版本,还遇到了问题,才来提问的。

caiabc commented 5 months ago

上面有三个版本?修改版、困鱼版和打包插件版。基于放心起见,然后我用了修改版。然后,还是闪退的。

TonyJiangWJ commented 5 months ago

通知服务允许了没

caiabc commented 5 months ago

通知服务允许了没

是autojs界面设置上的“通知读取权限”开关是否打开吗? 我的没有打开“通知读取权限”,服务中只打开了“无障碍服务”、其他中打开了“启用shizuku”和"使用alarmmanager调度服务"

caiabc commented 5 months ago

需要说明的是,闪退不是每一次运行都会闪退,而是,运行了三五回后,也不确定是多少回后,才闪退的。 闪退后,会自动打开设置,让我同意无障碍服务开启。

caiabc commented 5 months ago

现在的闪退很频繁,比老版本的modify版本下多。 这是今天早上7:20--->7:22左右的崩溃stack Version: 489 Android: 31 android.os.RemoteException: Remote stack trace: at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:555) at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137) at android.os.Binder.execTransactInternal(Binder.java:1190) at android.os.Binder.execTransact(Binder.java:1149)

java.lang.RuntimeException:Failure delivering result ResultInfo{who=null, request=17777, result=-1, data=Intent { (has extras) }} to activity {org.autojs.autojs.modify/com.stardust.autojs.core.image.capture.ScreenCaptureRequestActivity}: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION android.app.ActivityThread.deliverResults(ActivityThread.java:5479) ...... Caused by: android.os.RemoteException:Remote stack trace: at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:555) at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137) at android.os.Binder.execTransactInternal(Binder.java:1190) at android.os.Binder.execTransact(Binder.java:1149)

log-verboses.zip

另外说明,我已经把autojs界面设置上的服务,其中的通知权限打开了,但是,崩溃依然。

caiabc commented 5 months ago

07:20:00.474/V: 异常终止的重启任务已存在: [{"mAction":"org.autojs.autojs.action.startup","mLocal":true,"mScriptPath":"/storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/prototype/CrashCatcher.js","mId":102}] 07:20:00.599/V: 通过event.on('exit')注册生命周期回调 07:20:00.633/I: 当前OpenCV版本:4.8.0 07:20:00.722/W: 未开启电量无限制,PaddleOCR可能会闪退,自动禁用PaddleOCR。请主动开启或运行unit/关闭电量限制.js 选择无限制 07:20:00.728/V: 当前本地OCR优先级为:auto 07:20:00.729/V: 当前启用的OCR为:mlkit 是否支持:true 07:20:00.751/V: 当前本地OCR优先级为:auto 07:20:00.752/V: 当前启用的OCR为:mlkit 是否支持:true 07:20:00.753/I: 当前使用的OCR类型为:mlkit 是否启用:true 07:20:00.779/D: 使用自定义解锁模块 07:20:00.812/V: Is _origin_images null? false. 07:20:00.816/V: 当前可用内存:3772932096b 3598.1484375MB 07:20:00.818/V: 预估单张图片大小:1.544952392578125MB 07:20:00.819/V: 支持最大图片张数:100 一半:50 07:20:00.820/V: 图片资源代理创建完毕,准备替换scope中的images 07:20:00.821/V: 图片资源代理替换images完毕 07:20:00.822/D: ======加入任务队列,并关闭重复运行的脚本======= 07:20:00.828/V: 队列小于等于1 不需要去重:[] 07:20:00.832/V: 当前无任务等待,直接执行:{"source":"/storage/emulated/0/脚本/Ant-Forest-1.4.3.1/unit/神奇海洋收集.js","engineId":53,"storageKey":"ant_forest_config_fork_version"} 07:20:00.834/V: 设置脚本状态为执行中 07:20:00.849/D: 需要重新锁定屏幕 07:20:00.855/I: 即将解锁执行,按音量下键延迟五分钟执行 07:20:01.056/V: [BeforeUnlock] after setMaxListeners 07:20:01.057/V: [BeforeUnlock] after observeKey 07:20:01.058/V: after setOnceKeyDown 07:20:01.861/V: 滑动解锁,设备分辨率:1080,2400 07:20:10.723/V: 保存是否需要重新锁屏:true 07:20:10.729/V: current time [7:20] 07:20:10.746/V: windowRoots size: 1 07:20:10.747/V: 获取包名总耗时:17ms 07:20:10.748/V: 不再展示延迟对话框,screen_locked 07:20:10.750/V: 当前屏幕朝向:1 07:20:10.754/I: 即将开始,按音量下键延迟五分钟执行 07:20:11.270/V: try to find one: START NOW|立即开始|允许 timeout: 8000ms 07:20:11.272/V: 准备校验文件是否加载 /storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/autojs-common.dex 07:20:11.272/V: 准备校验文件是否加载 /storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/autojs-common.dex 07:20:11.272/V: 未加载 /storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/autojs-common.dex 07:20:11.272/V: 未加载 /storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/autojs-common.dex loadDex: file = /storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/autojs-common.dex dex file size: 48048 当前文件已加载 跳过加载:autojs-common.dex 07:20:11.280/V: find text START NOW|立即开始|允许 立即开始 07:20:11.481/V: 查找目标id:android:id/checkbox timeout: 200 07:20:11.683/W: 未能找到id:android:id/checkbox对应的控件 07:20:11.684/V: 查找目标id:com.android.systemui:id/remember timeout: 200 07:20:11.885/W: 未能找到id:com.android.systemui:id/remember对应的控件 07:20:11.885/W: 未找到记住按钮 07:20:11.886/V: 点击允许截图权限 07:20:11.886/V: try to find one: START NOW|立即开始|允许 timeout: 200ms 07:20:11.890/V: find text START NOW|立即开始|允许 立即开始 Uncaught Exception java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=17777, result=-1, data=Intent { (has extras) }} to activity {org.autojs.autojs.modify/com.stardust.autojs.core.image.capture.ScreenCaptureRequestActivity}: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION at android.app.ActivityThread.deliverResults(ActivityThread.java:5479) at android.app.ActivityThread.handleSendResult(ActivityThread.java:5518) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54) at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2286) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:211) at android.os.Looper.loop(Looper.java:300) at android.app.ActivityThread.main(ActivityThread.java:8237) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1046) Caused by: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION at android.os.Parcel.createExceptionOrNull(Parcel.java:2426) at android.os.Parcel.createException(Parcel.java:2410) at android.os.Parcel.readException(Parcel.java:2393) at android.os.Parcel.readException(Parcel.java:2335) at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:235) at android.media.projection.MediaProjection.(MediaProjection.java:59) at android.media.projection.MediaProjectionManager.getMediaProjection(MediaProjectionManager.java:119) at com.stardust.autojs.core.image.capture.GlobalScreenCapture.initCapture(GlobalScreenCapture.java:92) at com.stardust.autojs.runtime.api.Images.lambda$requestScreenCapture$2$com-stardust-autojs-runtime-api-Images(Images.java:98) at com.stardust.autojs.runtime.api.Images$$ExternalSyntheticLambda0.onRequestResult(Unknown Source:6) at com.stardust.autojs.AutoJs$ScreenCaptureRequesterImpl.lambda$setOnActivityResultCallback$0$com-stardust-autojs-AutoJs$ScreenCaptureRequesterImpl(AutoJs.java:257) at com.stardust.autojs.AutoJs$ScreenCaptureRequesterImpl$$ExternalSyntheticLambda0.onRequestResult(Unknown Source:4) at com.stardust.autojs.core.image.capture.ScreenCaptureRequester$AbstractScreenCaptureRequester.onResult(ScreenCaptureRequester.java:47) at com.stardust.autojs.core.image.capture.ScreenCaptureRequester$ActivityScreenCaptureRequester.onActivityResult(ScreenCaptureRequester.java:89) at com.stardust.app.OnActivityResultDelegate$Mediator.onActivityResult(OnActivityResultDelegate.java:32) at com.stardust.autojs.core.image.capture.ScreenCaptureRequestActivity.onActivityResult(ScreenCaptureRequestActivity.java:67) at android.app.Activity.dispatchActivityResult(Activity.java:8692) at android.app.ActivityThread.deliverResults(ActivityThread.java:5472) ... 13 more Caused by: android.os.RemoteException: Remote stack trace: at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:555) at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137) at android.os.Binder.execTransactInternal(Binder.java:1190) at android.os.Binder.execTransact(Binder.java:1149)

CrashHandler:onCrashHandleStart: crashType = 0, errorType = android.os.RemoteException, msg = Remote stack trace: at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:555) at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137) at android.os.Binder.execTransactInternal(Binder.java:1190) at android.os.Binder.execTransact(Binder.java:1149) , stack = java.lang.RuntimeException:Failure delivering result ResultInfo{who=null, request=17777, result=-1, data=Intent { (has extras) }} to activity {org.autojs.autojs.modify/com.stardust.autojs.core.image.capture.ScreenCaptureRequestActivity}: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION android.app.ActivityThread.deliverResults(ActivityThread.java:5479) ...... Caused by: android.os.RemoteException:Remote stack trace: at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:555) at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137) at android.os.Binder.execTransactInternal(Binder.java:1190) at android.os.Binder.execTransact(Binder.java:1149)

TonyJiangWJ commented 5 months ago

不是和你说了吗 打开通知权限-还不行就打开前台服务

caiabc commented 5 months ago

我已经把autojs界面设置上的服务,其中的通知权限打开了,但是,崩溃依然。

1710842829574

TonyJiangWJ commented 5 months ago

是应用的通知权限 怎么和你沟通这么累呢

TonyJiangWJ commented 5 months ago

Screenshot_2024-03-19-09-34-37-577_com android settings

caiabc commented 5 months ago

老大呀,其实,我从昨晚开始,就已经打开了通知权限,而且结果就是和您最后发的截图类似的画面,只是因为我的手机系统是MIUI13的,细节上有微小区别。又因为即使我打开了通知权限,还是一直遭遇崩溃,所以,我也就怀疑是不是我设置的地方有错了。其实,无论是从安卓手机的设置里头做通知权限设置,还是从autojs的主界面的菜单上选择做,效果都是一样的。 1710842562702 1710842562700 1710842562697

中午,我补充打开了前台权限,然后,开始使用观察,目前整个下午没有再遭遇崩溃了。这是一个好消息。

TonyJiangWJ commented 5 months ago

从日志看 就是因为没有给前台服务权限,我修改的autojs版本是在获取截图权限后一直有一个前台通知的,标题为Recording,所以我认为你是没给通知权限。

Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION

既然现在解决了 那你就最好一直打开前台服务吧

caiabc commented 5 months ago

经过连续多天观察,问题确实解决了,谢谢。