详解三星OneUI后台与电池管理设置项

三星 OneUI 的应用自启与后台权限,以及电源管理一直比较乱(但关联关系做的比较智能)。其实也不仅是三星,Google 对大陆的流氓应用一直后知后觉,尽管近期多个系统底层更新不断收紧这方面政策,但脚步还是太慢,与此同时也造成不同系统版本(也称 API 等级)对后台的限制不一样,也就导致了许多云里雾里的设置。 这些本就零散的设置,再加上厂商对中国区的优化,还有翻译的不同,许多原因共同作用最终导致了 OneUI 这样的局面。其实如果能正确理解并应用这些设置,不仅能最大化省电,甚至在某些条件下还能够收到通知推送。我根据实验以及作为业余 Android 开发者的经验,总结下不同设置的实际意义。 **首先强调,网上目前大部分解读都是错误的,但依然感谢分享的同学为之做出的努力。**我也不能保证下面的解释完全正确,欢迎大佬指正。 设置项总览 以国行三星 S10 OneUI 2.5 为例。 三星与应用自启、后台、耗电优化相关的设置项入口一共有7个,他们分别是: 智能管理器 - 自动运行应用程序 设置 - 常规管理 - 电池 - 用电管理 - 自动运行应用程序 设置 - 应用程序 - 某个应用 - 电池 - 允许后台活动 设置 - 常规管理 - 电池 - 用电管理 - 深度休眠应用程序 设置 - 常规管理 - 电池 - 用电管理 - 让未使用的应用程序进入休眠 设置 - 应用程序 - 某个应用 - 电池 - 优化电池使用量 设置 - 应用程序 - 右上角菜单 - 特殊访问 - 优化电池使用量 这7个入口中实际上只有3个具体功能:其中 [1, 2, 3] 是一回事,暂且称之为自启与后台;[4, 5] 是一回事,暂且称之为休眠;[6, 7] 是一回事,称之为优化电池使用量。...

October 26, 2020 · Chenhe

Lean OpenWrt 编译使用小记

Lean OpenWrt 是 Lean 大佬修改的 OpenWrt 开源版本,和 KoolLede 是国内两个比较有名的分支。Lean OpenWrt 不提供预编译文件,所以想使用的话需要自己编译一遍。 编译需要使用 Ubuntu 系统,不要使用 WSL 会出问题。 编译没什么好说的,README 里面写的很详细一步步来就行了,推荐使用这个脚本白嫖下 Github 的服务器来云编译。 编译选项 如果没什么特别要求,保持默认就行,但来刷 Lean 的基本上都有一些奇奇怪怪的需求😁 这里有插件清单,包括 xls 格式的:https://www.right.com.cn/forum/thread-344825-1-1.html 酸乳饮料 Lean 内置的酸乳饮料插件很好用,而且没发布到官方源,也是很多同学来的目的。可惜现在默认给取消了,找回来分三步: 取消 feeds 注释。修改一下 feeds.conf.default 文件,去掉最后一行 helloword 的注释。重新执行 ./script/feeds update -a && ./script/feeds install -a. 如果是云编译,修改一下 diy-part1.sh 取消带 helloword 那一行的注释。 make menuconfig 生成配置文件的时候,在 LuCI - Applications 里选中 luci-app-***-plus. 系统安装完毕后如果找不到菜单,那命令行执行一下 0xDEADBEEF > /etc/config/google_fu_mode 就可以了。 IPv6 Lean OpenWrt 默认不支持 IPv6,启用的话在 Extra packages 里选中 ipv6helper 就好啦,所需的依赖会自动勾选。...

August 12, 2020 · Chenhe

Android7 https 抓包

系统限制 Android 7 开始系统有了一个非常安全(讨厌)的限制,所有应用默认情况下不再信任用户自行安装的证书,而仅信任系统预装的。因此,即便我们安装证书后也无法愉快地抓包了:confused: 但是这一限制仅对 targetSdkVersion>=24 的应用生效。 下面提供几种方案绕过这一限制。 添加证书信任 本方案需要修改 AndroidManifest,推荐用于自己的应用,其他应用需要重新打包了。 首先在 res/xml 中创建一个网络安全配置文件,信任用户证书: <?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> <certificates src="user" /> <!--信任用户添加的证书--> </trust-anchors> </base-config> </network-security-config> 然后在 Manifest 的 application 节点新增一个 android:networkSecurityConfig 属性指向刚才创建的配置文件即可: <?xml version="1.0" encoding="utf-8"?> <manifest> <application android:networkSecurityConfig="@xml/network_security_config"> </application> </manifest> 使用子系统 此方案本质上是降低系统的版本,例如 平行空间 等双开应用,会创建一个独立的运行环境,相当于子系统。这个环境内的系统版本不一定与手机系统相同。目前,平行空间 4.0.8625 版本以下系统 API < 24,应该可以正常使用。 同理,你也可以使用模拟器抓包,或者干脆找一个旧系统的手机。 修改系统证书 此方案需要 ROOT. 既然默认只信任系统证书,那我们何不直接把自己的证书导入为系统级别? 注意,Android 系统证书使用的是 .0 格式,不同于常见的 .cer/pem,需要使用 openssl 命令行工具转换下。 确定文件名 .cer 格式证书执行:...

November 26, 2019 · Chenhe

LEDE 配置 IPv6 以及公网访问

偶然发现江苏电信宽带已经分配了 IPv6 pd 前缀,一不做二不休搞一下。 基础概念 IPv6 与 v4 不同。v4 时代运营商一般只给用户分配1个公网 ip,然后用户自己的路由器通过 NAT 再给局域网设备分配内网 IP,也就是 192.168.x.x 这种。这种情况下内网设备没有独立的公网 IP,要想从公网访问必须配置路由器端口转发。 随着 v4 资源枯竭,现在运营商默认已经不再分配公网 IP 了。要想正常从外网访问,必须做内网穿透。 IPv6 有无数个地址可供分配,“可以给地球上的每一粒沙子都分配一个 IP 地址”。因此运营商分配的策略也会变化。v4 分配的是一个地址,而 v6 分配的是一个前缀,也就是所谓的 pd,相当于是一整个网段,我们可以自己继续往下分配,从而使得每一个局域网设备都能获得公网 IP 地址。 这里采用的方案是光猫桥接,LEDE 路由拨号。 如果无法访问光猫 很多人用 LEDE 连接后可以上网但是打不开光猫的管理页面。 要求:知道光猫的 IP 且不与 LEDE 在同一网段。 假设光猫接到了路由器的 eth0 口,光猫 IP 是192.168.1.1,进入 LEDE 终端执行下面指令: #eth0是接光猫的网口名称,192.168.1.2随便写(是分配给LEDE WAN的IP),不冲突且位于光猫网段就行。 ifconfig eth0 192.168.1.2 netmask 255.255.255.0 #下面两个是添加防火墙规则允许访问光猫 #192.168.1.1为光猫自身IP iptables -I forwarding_rule -d 192.168.1.1 -j ACCEPT #192.168.1.1为光猫自身IP iptables -t nat -I postrouting_rule -d 192....

October 14, 2019 · Chenhe

OpenWrt/LEDE 搭建 Syncthing p2p 私有文件同步服务

简介 因为最近团队有文件同步的需要,常见的公有云服务要么就是不靠谱要么是速度慢,要么就是太贵:expressionless: 饱受好评的坚果云则是限制流量而且据说有隐性限制。 家里上传有 30M 带宽,足够满足常规的文件同步了。常见的私有云系统有 NextCloud/Syncthing/Resilio(BTSync)。NextCloud 更像是一个私人网盘,属于c/s模式,对中心服务器稳定性要求极高,家里路由器感觉无法担此重任。BTSync 是一个基于 BT 的同步软件,近年来大陆的 BT 情况并不好所以也暂不考虑。最终采用 Syncthing。Syncthing 是一个开源免费的文件同步系统,有多平台支持(官方不支持IOS,有一个第三方的收费客户端)。 Syncthing 是分布式的,不依赖中心服务器,如果节点有公网 IP 那么会走直连同步,否则走中继。Syncthing 有不少免费开放的公共中继节点可惜都不在大陆,速度比较慢。如果非常介意可以搭建一个私有中继服务。 先看看成品图: 安装 需要强调:Syncthing 是不分服务器/客户端的。本文仅把路由器节点作为逻辑上的「服务器」以便保证任何时候都有具有公网 IP 的节点在线以便加速传输。 在 release 页面可以看到各个平台编译好的安装包。由于我使用的是 J1900 软路由,所以选择 linux-64 版本。 # 进入用于保存程序的目录 cd /mnt/sda5/ # 下载程序 wget https://github.com/syncthing/syncthing/releases/download/v1.3.0/syncthing-linux-amd64-v1.3.0.tar.gz # 解压 tar -zxvf syncthing-linux-amd64-v1.3.0.tar.gz # 为了方便整洁改个名字 mv syncthing-linux-amd64-v1.3.0 syncthing # 给予执行权限 chmod +x syncthing/syncthing 其实到此为止我们直接执行 syncthing 就能开启服务了。它默认会在 \$HOME/.config/syncthing 创建配置文件。不过我们干脆一次性配置完再运行也不迟。 # 创建一个软链接,就可以在任何目录下执行了 ln -s /mnt/sda5/syncthing/syncthing /usr/bin/syncthing 开机自启...

October 12, 2019 · Chenhe

华硕路由器 ARP 绑定

何为 ARP 绑定 真想不到被吹爆的华硕路由器居然连 ARP 绑定功能都没有。这里要区别一下,在客户端列表中开启 MAC地址与IP绑定 其实仅仅是 DHCP 绑定,它可以保证每次给相同设备总是分配同一个 IP 地址,但前提是设备必须请求IP! 我们知道路由器内部会维护一个 ARP 表,记录 IP 与 MAC 的关系,每当设备请求 IP 时便会被记录,其超时时间因具体设置而不同。因此当设备长时间不在线(比如关机)时吗,ARP 记录就会失效,从而无法再通过 IP 给此设备发送数据。 有一个典型需求:PC 配置 WOL 网络唤醒,然后路由器设置端口转发,这样就可以在外面远程开机了。因此我们要进行 ARP 绑定,与 DHCP 绑定不同,ARP 绑定相当于把 IP 对应关系写死在表里,无论设备是否在线。 方案 ssh 或 telnet 登录路由器,执行 arp -s [IP] [MAC] 就搞定了。 但是这样每次重启都会失效,我们需要通过自启脚本来手动添加 ARP 项,因此官方固件是不行的,先刷梅林。 cd /jffs/scripts/ # 进入脚本目录 vi services-start # 打开编辑器(你也可以用其他编辑器) 将文件内容改为: #!/bin/sh arp -s [IP] [MAC] exit 0 保存,最后给予执行权限: chmod a+rx /jffs/scripts/* OK! 执行 arp 查看 ARP 表,对应项目如果标识有 [PERM] 就是已经绑定了。

September 28, 2019 · Chenhe

树莓派 RaspberryPi 折腾踩坑记

项目需要一个爬虫,正好朋友有一个闲置树莓派3b+拿来用。事实再一次证明,任何看起来很简单的事情其实都很复杂。而那些可能会发生的错误则一定会发生 (`⌒´メ) 环境: Raspberry Pi 3b+ Raspbian 操作系统 (基于 Debian stretch9) 显示问题 无信号 首当其冲的是接好屏幕却无信号,光是这个问题就折腾了一小时。根据经验,这种诡异的问题其原因往往非常简单,这次也不例外。因为只有一块显示器,所以要树莓派与电脑轮流使用。不巧,这东西不支持 HDMI 热插拔,开机时没检测到 HDMI 之后就默认为模拟输出了。找到问题对症下药就好啦,编辑系统 sd 卡根目录下的 Config 文件: # 找到这行配置,删除前面的#取消注释就好啦。 # 这会强制使用 HDMI 输出无论是否连接了显示器。 hdmi_force_hotplug=1 分辨率无法调节 默认分辨率很低,以至于设置窗口都显示不全。无论是直接编辑配置文件还是使用 UI 修改均无效。又是一个多小时的折腾,了解到它会自适应显示屏来调节分辨率忽略用户设置。同时猜测是不支持热插拔的缘故,导致无法正确识别显示器分辨率。同样继续编辑配置文件: # 加入下面这行忽略自动调节 hdmi_ignore_edid=0xa5000080 hdmi_group=2 # 1是CEA多用于电视,2是DMT多用于显示器 hdmi_mode=72 # 根据显示器分辨率调节,具体代码含义网上有很多资料。 # 比如: https://www.raspberrypi.org/documentation/configuration/config-txt/video.md 这下显示问题终于搞定了。 切换源 众所周知的,先把源 切换成国内来节约时间,这里使用清华开源镜像站,直接根据帮助文档操作就好。 注意不同系统版本源地址不同,下面是 Debian10 的配置。 修改 /etc/apt/sources.list,注释掉原来的所有内容,用下面内容取代: deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib 然后修改 /etc/apt/sources....

April 14, 2019 · Chenhe

NAT 科普与类型提升

起因是朋友买了一个迅雷玩客云,但是提示 NAT 类型有问题,导致诸多功能不好用。折腾一番后也进一步搜索了相关资料,深入了解一下。本文旨在用最通俗的语言解释清楚相关问题,在专业性方面可能有缺失。 使用 PS3/Xbox 朋友遇到无法联机或 NAT 类型显示为严格也是类似原因。 什么是 NAT 首先我们得先理解 NAT 的概念。它全称是 Network Address Translation 即网络地址转换。使用 NAT 的原因很多,主要是 IPv4 地址资源枯竭,以及为了网络安全(也便于监管)。我们知道每一个能够上网的设备必然有一个 IP 地址,但是并不是所有设备都拥有「公网IP」。而 NAT 就是把内网 IP 映射成公网 IP,从而使设备可以访问互联网。 这里说 公网IP 并不规范。现在很多运营商已经不分配公网 IP 了。 听起来很高端的技术其实就在我们身边。一般常规的家庭网络拓扑是这样的: 入户光纤 → 猫 → 路由器 → 终端设备 运营商只给我们分配了一个 IP 地址,这个 IP 理所应当被路由器占用着。而我们许多终端设备拿到的是路由器分配的内网地址,一般类似 192.168.x.x。显然这个内网地址是无法和互联网通讯的。因此我们需要 NAT 来建立内网 IP 与 公网 IP 的映射,这样当终端设备访问互联网,将数据交给路由器,然后路由器转交给服务器;服务器返回的数据交给路由器,路由器再根据映射传给终端就OK了。这个过程是 NAT。 什么是 UPnP UPnP 是通用即插即用协议,英文 Universal Plug and Play。在这里,其目的是更加方便地穿透 NAT。可以理解为有了 UPnP 软件可以根据需求让路由器进行动态地进行端口映射。而不是你去路由器后台一个个手动设置。 下面是我的 UPnP 列表: 可以看到根据请求,路由器自动地把 WAN 10960 端口映射到了 192.168.50.120:10960 上,其实这个是我们家的摄像头,这样就可以从外面直接看到画面了。 ...

December 18, 2018 · Chenhe

ps裁剪圆形gif

裁剪图片很多人都很熟悉了,但是如何把 GIF 裁剪成圆形估计不常见。这次捣鼓半天终于搞定了,记录一下。其实很简单,大神请略过。 比如这是一个表盘gif,我想把黑色部分去掉。 ...

September 29, 2018 · Chenhe

Wear OS ADB 应用安装指南

Wear OS 的坑 早在 Android Wear 1.x 时代,智能手表的应用都是先安装在手机上,然后蓝牙连接手表后会同步过去。但在自从升级到 AW2.0 (现改名为 Wear OS)后,这一做法被废弃,改为手表独立安装应用。不过在 Google 的开发者文档中却说依然支持蓝牙同步,着实坑了开发者一把。 与此同时,按照 Google 的说法,若用户安装的手机应用支持手表,那么他会在手表上收到通知。但是没有说清楚的是,这一功能仅支持 Google play. 在中国,作为 Wear OS 的官方合作伙伴,问问应用市场与华为应用市场却把这些功能弄得一团糟。 各种小坑最终整合成了一个大坑,用户想在手表安装个应用都成了件麻烦事。这篇教程就教各位如何使用 adb 手动安装应用。 软硬件准备 搭载 Wear OS 或 Ticwear 系统的设备一部。废话(=、=) Windows 电脑一部。MAC也行吧,请自行摸索。博主苹果黑,请不要问我关于苹果的东西。 本教程的所有操作均需要 adb工具。链接: 密码:cznr. 或者去谷歌中国官方 OR 谷歌国际官方下载。 adb简介:adb全称Android Debug Bridge,中文直译安卓调试桥,是一个谷歌官方发布的用于调试的程序,通过它可以对Android设备进行各种操作。 提取安装包 对于绝大部分情况,手表和手机的安装包不是同一个。下面先说一下如何从手机安装包里提取手表安装包。 以腕间图库的安装包为例。下载后会的到一个 .apk 文件。我们只需非常暴力地「直接」把后缀名改成 .zip 然后解压。然后打开解压的文件夹,在 /res/raw/ 目录下可以找到一个 android_wear_micro_apk.apk 文件,这个就是手表安装包啦~ 启用开发者模式与 ADB 调试 打开手表 设置→系统→关于,狂点 版本号 即可打开开发者模式。 进入手表 设置→开发者选项,打开 ADB 调试。如果你的设备不支持 USB 或者你希望通过 WIFI 调试,那么请一并打开 通过 WLAN 调试 选项。...

June 15, 2018 · Chenhe