开发 APK 在澎湃 OS 上举步维艰。

39 天前
 tool2dx

我想写一个后台定时服务代码,用来 10 分钟后自动熄灭小米平板屏幕的程序。

在安卓模拟器和以前的 MIUI 系统上,运行完全没问题,一放到澎湃 OS 上,服务就老是被冻结。(以前 MIUI 内存不足是直接杀服务,由于设置了 START_STICKY ,5 秒钟后会被系统自动拉起来,包括安卓 14 模拟器也是走这个流程)

查了一下,是一个 com.miui.powerkeeper 的进程干的好事。我用 ADB 设置了 RUN_ANY_IN_BACKGROUND allow, deviceidle whitelist +[应用的包名], 电池无优化,都会随机不定时被冻结,百思不得其解。

而且如果调试程序 XML 里有后台隐私相关权限,比如 READ_CLIPBOARD_IN_BACKGROUND/GET_TASKS ,包名会被 com.miui.powerkeeper 拉黑,现象是无法弹出电池优化的按钮。解决方法是把权限去掉+换包名字。

7031 次点击
所在节点    Android
43 条回复
CSGO
39 天前
root 。取消白名单
dupenn
39 天前
@tool2dx #6 没有限制的话就全靠开发者自觉了,但是开发者会自觉吗?
icestraw
39 天前
感觉问题出在“操作系统功能”上,也就是关屏幕,这个权限理论上应该只有无障碍应用能操作。

任何系统,写后台操作系统功能的代码,都不应该太容易,不然很容易就变成神仙打架。不然任何程序只要加一句你这个代码,就可以无限制保活,那生态也太乱了。
bzkmsjy
39 天前
audiorelay 在澎湃上也无法保持后台,root 了也不知道有什么办法保活,酷安上我也发过帖,没找到办法
tool2dx
39 天前
@icestraw 关屏幕是用户自己在设置里授权 APP 操作的,这个问题不大。后台其实安卓官方有提供电源管理选项,每一个 APP 设置都是可选的。小米的手机管家是二次封装,如果直接沿用谷歌的电池管理系统,就没有那么多麻烦事情了。
109021017
39 天前
@shily 是啊, 不知道小米行不行, 但别的 Android 需要用 Foreground Services. 然后电池优化要关闭.
icestraw
39 天前
@tool2dx 关屏幕权限,从设计上看,理论上是应该控制“当你使用过程中”关屏幕,而不是“离开前台程序后”关屏幕。前者是 App 的正常操作,后者则是权限要求非常高的系统工具。对于国产 ROM 面对的恶劣安卓环境,策略严格一些感觉可以理解。

其实 无障碍 这个权限 已经有些滥用了,现在百度啊甚至小红书都有声明这个权限,这些软件哪里会需要这个功能...不得不防啊
lisxour
39 天前
之前不是出过一个黑科技保活的嘛,试试?百度、github 现在应该还能搜到
gmx1234
39 天前
@tool2dx 可以试试 Jetpack 中的 WorkManger
Ruikoto
39 天前
我使用世界迷雾(后台记录 GPS 位置)的时候也有保活问题,如果放在后台,记录出的轨迹就会断断续续,这个问题苦恼我好久了,不知作为用户是否有什么办法
jarvay
39 天前
https://github.com/Jarvay/workpaper-android
这个是我写的定时换壁纸工具,用的是 29 楼说的 WorkManager ,service 设置成前台+省电策略无限制在澎湃上就能正常执行定时任务
jarvay
39 天前
@jarvay 搞错了,定时任务的话是闹钟
wdv2ly
38 天前
@reallittoma 哥们儿你这不是掩耳盗铃嘛?你开发舒服了,你的用户不舒服了哈哈
behindeye
38 天前
开启前台服务+开启悬浮窗权限+后台运行开启+电池优化+使用 WorkManager 试试
okakuyang
38 天前
我说实话,你这个标题和你的内容有夸大的成分。你要开发一个能够熄屏的程序而且是在后台,这个已经大大超出一般 App 的职能范围。遇到坑也是可以预见的,省电管理程序,白名单已经是各家手机厂的基本操作,不存在小米一家这么做。如果我要做这功能我肯定首先要在更加简洁的固件上去开发。
tool2dx
38 天前
@okakuyang 我有多个小米设备,自用手机还是 MIUI14 的,测试平板上是澎湃 OS 。前一个运行没问题,后一个厂家白名单,那我肯定是吐槽后者了。

弄得我现在都不敢升级设备 OS 了。
linlord
38 天前
@GotKiCry #17 该死的微信非得要自启动权限才能接到消息
h1298841903
38 天前
@tsja 各家都有各家的 bug
lucifer9
37 天前
小米的系统最离谱的是用户手动设置了允许自启动的应用
系统隔一段时间会随机帮用户取消几个自启动权限
要是说总数会有限制,起码明确写出来啊
tyzandhr
36 天前
设置前台服务并且显示通知了吗?现在 Android 规范里面就是只有前台服务能够保证一直运行。或者,你也可以用 WorkManager 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1089128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX