Pig Cat

Full-Stack, Android, AI

在Android应用中集成使用traceroute工具

又是些莫名其妙的版本兼容问题。

背景知识 traceroute是一个常用于Linux系统的网络工具,它可显示数据包在IP网络中所经过路由的IP地址,理想状态下可探测本机和目标地址之间的所有路由节点。 其他操作系统中也有类似的替代品,实现都大同小异。一般用法如下: 终端输入: ~ traceroute -I baidu.com 输出: traceroute to baidu.com (39.156.66.10), 30 ho...

给MIUI开发一个刷新率开关

又闲下来了。

背景 我们很容易发现,现在小米等厂商支持高刷新率120Hz的手机,在系统设置中都隐藏了90Hz这个档位,只有60和120两种选项。对很多人来说,60虽然省电但是太不流畅,影响体验,120虽然流畅但太耗电,出门会有电量焦虑,折中的90其实才是最合适的选择(至少在心理上)。 我一直试图搞清楚为什么厂商不愿意开放90Hz这个选项,对系统来说,刷新率无非就是一个可以修改的数值。是什么原因不让用户多...

Android系统无限重启漏洞

我为世界做贡献。

2022年,一次偶然的机会,我发现了一个会导致Android系统无限重启致使设备完全不可用的高危漏洞,遂提交给了Google。当年11月的AOSP补丁对此进行了修复,本文是我提交漏洞报告的原文,现公开,待整理。具体可以在Android Security Bulletin—November 2022中搜索CVE-2022-20414了解更多。 Report description In ...

删除Android Studio中重复的JDK配置

又闲下来了。

问题 可能因为一些不经意的操作,导致如下这种情况:出现多余重复的JDK路径配置,其实指向的是同一个路径。 强迫症犯了之后,就会想怎么干掉这个(2)。 解决 第一步:先打开你最近打开的项目,找到 .idea/misc.xml 看看里面有没有那个多余的JDK路径,如果有就直接把这个misc.xml文件删掉。然后完全退出整个Android Studio。 第二步:在Android Studio...

当Google关心起你的健康数据

操碎了心的谷歌。

此文为初稿备份,终稿已发布于少数派:https://sspai.com/post/77024 今年五月,在 Android 开发者官方博客中,Google 隆重介绍了一个新平台,名为 Health Connect,并推出了相应的 Android API。其官方网站用非常显眼的大标题和副标题简洁地描述了其核心功能与优势:简化健康类应用之间的连接。 Health Connect: simpl...

让终端命令更有时间观念

摸鱼吗?

背景 我们无论是在Mac还是Linux平台上工作,都避免不了要使用终端来执行命令。然而系统默认的终端功能非常简单,没有命令建议、自动补全等功能,对强依赖终端的工作者来说很不友好。 还好有oh-my-zsh,它对zsh进行了增强,不仅有丰富的插件,还可以自定义主题配置。了解或使用过它的同学一定会觉得非常香。这里引用一篇少数派作者之前的文章,我就不赘述它的好处了:Oh My Zsh 配置指南 使...

简单几步实现内网穿透

摸鱼吗?

场景 为了避免阐述过多理论,我们直接从需求场景入手,来了解一下为什么需要内网穿透? 小明是少数派的一位咕咕作者,在家里电脑稿某文稿了一半,到公司后打算摸鱼继续稿,怎么办呢(此处假定他没有使用任何云同步软件,也不会使用git,就算会用他也忘了提交)? 此时,小明想通过ssh等远程访问设备文件的方式来下载家里那半稿子,但他的家庭网络是没有分配公网IP的,无法通过互联网直连。内网穿透就这样派上用...

谁家推送服务限制最严格

序列未来!

先说句题外话,又过了这么多年了,没想到国内Android的统一推送还是没有实现。 由于工作需要,最近正好在调研各家系统推送服务,我发现从他们的技术文档可以分析出很多有意思的东西,比如说能看出来哪家厂商的推送限制最严格,最考虑用户的综合体验。在讲解之前,我们先简单提几个推送服务的基本概念: 设备:用户所持有的某台设备,在技术文档中所提到的日活跃用户数一般也就指日联网设备数 应用:某台设备...

解决iptables导致无法联网的问题

啊这~

问题 先说下我的单机环境是Ubuntu 16.04,只放了点小应用,一直没升级系统(懒),防火墙规则也是简单地使用iptables来控制。 今天我因需要重启服务器之后,发现突然连不上了,ssh无法连接,ping也不通,我开始慌了。于是我只能进入云服务器商的后台,用网页版登录,不管你是阿里云还是腾讯云还是国外的服务商,现在大多都有这种功能。 进去之后,先任意ping一个公网IP,提示 “Net...

无需电脑如何执行adb shell命令

新玩意儿。

背景 ADB(Android Debug Bridge),是调试Android设备的一个命令行工具。对开发者来说,ADB自然是日常工作的得力助手;对我们业余玩家来说,它也可以用来控制一些默认情况下接触不到的功能设置。 在早期的Android平台上,我们只能通过USB数据线连接电脑和手机,然后再在电脑上使用ADB工具,前提是已经在开发者选项中开启了USB调试开关。 从Android 10开始,...

Rust为Android应用编译so库

新东西来啦!

前言 Rust是个好东西,Google也开始把它用于AOSP了。我们开发应用同样也可以使用Rust来编写原本为C++的Native代码。网上搜罗一圈,入门的文档不多不少,这里稍微归纳整理一下吧,毕竟Hello World是人类的一大步。 安装Rust Rust的文档真的非常棒,目前的翻译版本也几乎满足所有学习需求。安装很简单,参考官网(Rust-lang.org)即可,一行命令: curl ...

Android手机如何修改DPI触发平板模式

从最根本动手。

前言 目前,微信可以支持平板和手机同时登录,不过并不是所有人都有Android平板设备。实际上,我们可以修改系统文件来达到目的。 我看了下网上(主要是酷安社区)很多方法其实都已经过时了,包括一些修改工具App。所以你以为改了实际上对微信没用,会发现其他软件都受dpi影响了,但是打开微信还是正常的手机分辨率,也就触发不了平板登录。 分析 下面我简单说一下原因,主要是很多ROM随着版本升级,可能...

个人网站Log4j2漏洞风险排查

世纪漏洞。

前言 Log4j2漏洞事件已经过去了几个月,影响面可以说是非常的广。本质上还是权限和代码注入问题,这里就不作赘述,和SQL注入在原理和形式上都异曲同工。 我个人没太明白还是,如此流行的开源库,竟然开发者和使用者这么久都没发现这个巨大漏洞(可能早有人发现但并未公布),而且作为一个日志记录工具,权限未免太高。 修复 从互联网上可以查到最新的修复建议: 升级到最新版本: 目前官方已推出最新A...

解决Android Studio升级到Arctic Fox后编译失败的问题

我都不知道为什么我能解决。

问题 从Android Studio 4.1.3升级到最新的Arctic Fox之后,整个组件化工程会编译不过。 编译错误显示: e: [kapt] 'com.sun.tools.javac.util.Context' class can't be found ('tools.jar' is absent in the plugin classpath). Kapt won't work...

Apache和PHP环境打开php页面File Not Found问题

一些无聊的小问题。

问题 之前搞了个腾讯云的轻量应用服务器(预装环境LAMP)来玩,结果最近发现网站目录下面的php文件访问不了,在浏览器打开就出现“File Not Found”的提示。 搜罗了很多答案,没有一个明确能解决问题的,不过还是得到了一些启示。下面属于我的个例,不一定能解决所有此类问题。 解决 腾讯云的这种服务器预装的软件都在此目录下面,包括相关配置: [root@VM-0-15-centos ~]...

IDE Eval Reset忘了重置进不去怎么办

偶尔探索一下,就能解决全网问题。

问题 我相信很多白嫖怪都知道目前JB全家桶“极为先进”的使用方法——其实就是无限重置30天(IDE Eval Reset)。具体使用方法就不赘述了。 这里会出现一个问题,尤其是针对电脑上安装了多款JB家的IDE用户来说(比如我就是,IDEA、PyCharm和CLion都在使bai用piao),如果超过30天未打开其中某个IDE进行试用重置,那么你就会发现打不开了,要求你补充License,而...

Android Shortcut启动导致其他Activity销毁问题

小问题而已。

问题 我们都知道,从API 25开始,Android加入了类似3D Touch一样的功能,即长按桌面图标可以弹出快捷方式菜单(最多4个)。早期国产系统的桌面Launcher并没有积极适这一功能,所以各大应用也懒得做,后来才逐渐完善。目前包括微信、支付宝等都可以长按弹出快捷方式,支付宝更是支持动态配置。 开发文档直接看官方的就行:https://developer.android.com/g...

聊一聊MIUI最近更新的原子内存

是黑科技还是噱头?

前言 比起最近雷布斯的个人演讲,其实我更好奇MIUI 12.5增强版(超级Bug-list修复版)推出的那四个性能优化项目: 焦点计算 - 处理器智能调度机制 原子内存 - 精细化内存管理机制 液态存储 - 文件存储管理机制 智能均衡 - 对旗舰硬件性能的智能调配 作为技术爱好者,这个“原子内存”还真是提起了我的兴趣,因为其他三项还算比较好理解。毕竟内存管理这件事,是操作...

最简单改变状态栏文字及背景颜色的方法

不要再吃老本了。

问题 我们知道,Android的状态栏(StatusBar)是可以由开发者自行更改背景颜色的,至于文字颜色,不能直接由自己修改色值,而是黑白两种颜色,对应的是Light和Dark两种全局主题模式。 为了良好的用户体验,我们在状态栏背景为深色时,需要给予白色字体,反之亦然。比如这样: 然而,有些时候我们在Light Mode下并不需要黑色字体,就需要自己手动修改了。 方法 以前我们修改状态栏...

安装Anaconda后终端base前缀问题

杂七杂八。

问题 最近想训练个小模型来用用,于是乎我在macOS安装 Anaconda | Individual Edition ,选择的是图形界面安装(64-Bit Graphical Installer),整个过程很顺利,一路下一步就行了。 然鹅,安装完之后,我发现我的终端命令行前缀出现了一个base,像这样: (base) -> ~ 这就很无语。 原因 猜测原因应该是Anaconda安装后...