你对 Android 一无所知_开发者模式(一)

3,259次阅读
没有评论

共计 2446 个字符,预计需要花费 7 分钟才能阅读完成。

提醒:本文最后更新于 2024-03-09 11:15,文中所关联的信息可能已发生改变,请知悉!

开发者模式!多么让人热血沸腾的一个词!这就像是后备隐藏能源,全球热核战争,午夜三点轰鸣的服务器机房一样。朗读其中的选项,任何人都能获得驾驶 EVA 的既视感!?
你对 Android 一无所知_开发者模式(一)

每个 geek 的硬盘里,都应该有一部战争游戏

强制 GPU 渲染,4*MSAA,启用 HW 叠加层……本系列会逐一介绍开发者模式里有意思的功能。而作为使用频率最高的功能,本期的主角自然是……

USB 调试模式—前言

USB 调试几乎是开发者模式里最强大的功能,通过 Google 开放的 ADB SDK 的命令,你几乎可以对你的 android 做任何事。如果你想给你的爪机整上氢 OS 或 smartOS,那打开 USB 调试基本就是你要做的第一件事。

当然烧录 ROM 只是 USB 调试实现的无数功能之一,ADB 更有意思的玩法在于无 root 情况下获得对 android 的超级管理。为了演示 ADB 命令的作用,这里以我服役多年的 Huawei P10 为例。

1.sudo 权限

由于 Huawei 手机的防爆机制极为严苛,用户几乎无法通过第三方 app 获取 root 权限,想要获得权限甚至需要向官方递交申请,这就为许多顽固第三方 app 赢得了空间。而 ADB 的出现一举解决了这个问题。

首先,第一步就是打开【USB 调试】与【仅充电下启用 USB 调试】
你对 Android 一无所知_开发者模式(一)
在 PC 上准备好 ADB 工具包,并打好爪机驱动

你对 Android 一无所知_开发者模式(一)
连接设备,WIN+R+cmd 启用终端,cd 到 adb sdk 目录下
你对 Android 一无所知_开发者模式(一)
用 adb devices 命令列出已连接设备,确认连接成功
你对 Android 一无所知_开发者模式(一)
为了干掉顽固的第三方,我们首先需要知道第三方 app 的应用包名,以系统默认浏览器为例,在 MIUI 中我们可以轻易的在应用设置中找到包名:com.android.browser
你对 Android 一无所知_开发者模式(一)
然而 EMUI 中我们甚至不能在设置里查看,这时一条通用的途径是用:
adb shell pm list packages >installed_apps.txt命令导出应用包列表再查看
你对 Android 一无所知_开发者模式(一)
看到 adb 目录下生成的 txt 就表明导出成功了,里面列举了所有系统进程及 app 包名,我们只需要找出自己的目标即可。
你对 Android 一无所知_开发者模式(一)
此时,在终端中输入 adb shell pm uninstall --user 0+ 要卸载的应用包名就可以绕过 root 权限卸载,以系统默认浏览器为例
输入:adb shell pm uninstall --user 0 com.android.browser
你对 Android 一无所知_开发者模式(一)
大大的 Success~ 进手机查看一下,浏览器原地消失了?

2. 权限管理

adb sdk 还内嵌了对 app 权限的管理命令。在多数 Android 魔改版中 app 权限设置都只是些表面功夫,比如永远关不掉的系统更新,权限在背地里永远处于 allow 状态。解决这种状态,只要用 adb 强制关闭即可。

先来看下华为应用市场的占有权限,在 adb 中执行:
adb shell appops get com.huawei.appmarket
你对 Android 一无所知_开发者模式(一)
可以看到 appmarket 所有相关权限状态与访问记录。
实际每种权限的状态有 4 种,分别为:
[Allow,
Deny,
Default,
Ignore ]
在 EMUI 中,所有这些权限都不能主动修改,而在这里,通过命令 adb shell appops set + 应用包名 + 权限状态 我就可以为所欲为
比如臭名昭著的大学毒瘤 app: 知到
adb shell appops get com.able.wisdomtree
你对 Android 一无所知_开发者模式(一)
权限不多,但我对他恨之入骨
如果要禁用它地指纹读取,我只要:
adb shell appops set com.able.wisdomtree USE_FINGERPRINT ignore
你对 Android 一无所知_开发者模式(一)
再次查看,权限已变为 ignore 状态。Easy peasy lemon squeasy~?
之所以不激进地使用 deny,是因为有些 app 检测到权限 deny 后会终止运行,而给他们分配 ignore 权限可以做到混淆视听,让 app 不调用权限的情况下也能运行。

3. 状态分析

此外,ADB 命令可以用来做大量的数据分析,pull 出系统的各种状态,这类命令多而琐碎,这里放出几个,大家感兴趣自行探索。

adb shell dumpsys 前缀命令可以“倒出“系统的各种硬件状态,比如:
adb shell dumpsys battery
你对 Android 一无所知_开发者模式(一)
可以看到目前的充电方式,最大充电功率,电池温度等。

adb shell dumpsys window displays可以显示出屏幕的 dpi,实际渲染分辨率,屏幕出厂信息等(过多,图中未截出)
你对 Android 一无所知_开发者模式(一)
adb shell dumpsys package + 包名 可以查看应用包名,USER_ID,文件资源代码路径,版本信息,权限信息,签名版本等。例如:
adb shell dumpsys package com.ironhidegames.android.kingdomrush
这句可以找到近乎完整的应用信息,要素过多这里就不放了

adb shell top 可以 pull 出系统实时资源占用表,可以看出各进程的优先级,峰值 CPU 占有率,内存占用总量等。
你对 Android 一无所知_开发者模式(一)
表面上说,这个窗口类似 win 上的资源管理器,只有观赏价值,但并不说明这些数据没有用,最近也有越来越多的人尝试用 adb 做数据分析,比如 B 站 up EPC 新出炉的教程:https://www.bilibili.com/video/BV1FK4y1f7vm
其中就用 adb 导出了内存占用日志,通过 ps -A>>/sdcard/memory.log 就可以做到,对此不多赘述。

4.Monkey! 以及尾声

Monkey 算是 adb 里有意思的一个工具,通过向应用发送随机的点按来对 app 进行压力测试,运行:
adb shell monkey -p com.ironhidegames.android.kingdomrush -v 100
之后小猴子会对 kingdomrush 发送 100 次的随机事件,在终端里可以看到随机数种子,以及成吨的信息,这个功能我觉得主要还是硬核开发者的玩具吧,你也可以把随即次数设成 1w+ 试试 hhh
你对 Android 一无所知_开发者模式(一)
对于开发者模式,可玩的内容还有很多,接下来应该会试着写写 4 *MSAA 以及一些图形学设置的简单对比吧,这里要感谢 android 开发团队,把用户文档写的如此透彻。

正文完
 9
Pumpkin_300
版权声明:本站原创文章,由 Pumpkin_300 2020-11-20发表,共计2446字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)