作者amilkamilk (我要成为干话王)
看板MobileComm
标题Re: [心得] adb编译,启动!解救慢吞吞的老手机!
时间Mon Mar 24 12:36:02 2025
因为我的旧手机是固定丢在车上当导航的
懒得拿回家里接线
所以研究了一下无线ADB简单分享给大家
基本上只要连在同一个网路的两支手机,
甚至用同一只手机操作都可以
不用接线了
以下针对要被ADB的手机成为目标手机
要操作指令的称为操作手机(操作手机可以跟目标手机是同一只)
但好像要目标手机在安卓10以後才能用无线adb
步骤如下
1.操作手机先安装Termux
https://play.google.com/store/apps/details?id=com.termux
2.操作手机打开Termux後
先安装adb
输入指令
pkg install android-tools
有(y/n)选y
3.确定两支手机连结到同一个wifi
(如果操作跟目标手机同一支则忽略)
我刚好有连结wifi
不确定没有wifi能不能继续
看说明是说在同一个wifi环境下侦错
可能不能用4g网路
4.目标手机去开发人员选项
打开无线侦错
勾选允许
再点一下无线侦错进入下一个画面
5.点选使用配对码配对装置
5.1如果操作手机跟配对手机是同一只
由於跳出配对画面,配对码就会消失
这时候要用分割视窗让配对画面在上半部
Termux在下半部来操作
6.在操作手机上输入配对画面的资料
adb pair ip位置:通讯埠
范例
adb pair 192.168.1.101:41733
接着输入配对码
让操作手机可以配对找到目标手机
7.配对好之後,配对画面会消失
8.接着操作手机输入
adb connect ip:通讯埠
注意是前一个画面的
通讯埠会跟配对的不一样
正常
9.连上之後就等同接线adb了,这时候如果是同一只手机,可以结束分割画面了
这边开始也可以接到任何要adb的其他操作
如果是像Chromecast
手表之类的装置
也都可以用上面的方式无线adb
10.继续输入原po的指令
adb shell pm compile -m everything -f -a
11.搞定收工
记得去把无线侦错关掉比较安全
我也会把Termux删除以策安全
还是其实留着没差,请其他大神分析
12.如果将来要继续使用adb
例如要跑原文的3.2
(2) 若只对尚未编译的程式进行编译 (适用於程式更新後):
adb shell pm compile -m everything -a
因为已经配对过了
直接从8.连线adb即可
不需要再次做7.以前的步骤
(当然打开无线adb跟同一个wifi还是需要)
※ 引述 《tom282f3 (小小年纪所向无敌)》 之铭言:
: 标题: [心得] adb编译,启动!解救慢吞吞的老手机!
: 时间: Sun Mar 23 21:58:26 2025
:
: 大家好,我的主力机是还没换过电池的原汁原味2018年旗舰Galaxy Note 9 (台版Exynos
6G
: B/128GB),用到现在第六年,应该比版上多数人的主力机都老了XD
:
: 究竟当年的旗舰机现在有多慢呢?随便开任何一个App都可以等十秒,结帐永远是我卡住
大
: 家......剩下的说多了都是泪QQ
:
: 前阵子研究了三星官方提供的Galaxy App Booster之後,搭配版友的讨论、网路上的文件
、
: 其他人的讨论等,整理了以下的一些心得,希望可以帮助跟我一样同样身陷在垃圾效能手
机
: 当中的人~
:
:
:
:
: 【Galaxy App Booster的原理?】
:
:
: (注意这段比较长,想要直接实践出真知的人,可以跳到下一段:
: 【如何手动进行编译】)
:
:
: Android的app预设并不是用底层硬体可以直接执行的机器语言 (Machine code,人通常看
不
: 懂) 储存的,而是以比较高阶 (人看得懂) 的程式语言形式储存在手机内部的。机器终究
不
: 是人,看不懂人类写的程式语言,只能读懂机器语言的一条条指令。高阶的程式语言,会
需
: 要先翻译为低阶的机器语言才能执行,可以类比为:
:
: - 程式语言:买一包最便宜的米
:
: - 机器语言:找钱包→带钱包→出门→走到某家量贩店→走到米的走道→反覆比较找到最
便
: 宜的米→把米拿起来→去结帐→走回家
:
: 可见机器语言所占用的空间较大,但对机器而言是不可或缺的。在远古的Android 2.2时
代
: ,机器语言是透过Dalvik编译的,它只会在执行app的时候同步监测最常反覆出现的指令
,
: 并且将这些反覆出现的指令编译为机器语言,这种做法称为JIT (Just-in-time)。这样做
的
: 好处是占用空间少,坏处就是执行效能差、耗电 (因为每次点开app後都要重新编译)。
:
: 到了Android 4.4、5.0的时代,Google一改以往的做法,推出了Android Runtime (ART)
取
: 代了Dalvik。ART的革命之处在於除了JIT以外,也支援对整个app提前编译为机器语言。
这
: 种做法称为AOT (Ahead-of-time),会占用较多的系统空间,但好处是AOT编译後就不需要
JI
: T再编译一次了,可以直接上手,大幅增进了效率,对使用者而言就是手机的速度变快、
耗
: 电变低了。在手机的Android系统升级後,第一次开机都会出现「更新应用程式... (1/50
0)
: 」的进度条,就是在执行ART的AOT编译。
:
: 理论上在安装时就进行完整编译是最好的选项,但是这样做耗时会太久,因此Android 7
以
: 後的系统,在首次安装时并不会完整执行AOT编译,只有在手机闲置且充电时会在背景默
默
: 进行「较为完整」的AOT编译。说是「较为完整」,是由於编译整个App消耗的空间太大、
时
: 间太久,因此Android预设并不会将整个App都进行编译,会搭配使用App时同步监测的成
果
: (称为profile),再对部分程式语言执行编译与最佳化,力图在速度与储存空间上取得平
衡
: 点。
:
: 然而......对老手机而言,这个平衡点就是App要花十秒才跑得出来XD,因此三星的Galax
y
: App Booster就是手动触发手机的AOT编译机制,让手机提前把程式语言编译为机器语言後
储
: 存起来,让下次使用时的速度得以提升。
:
: 对一个App进行AOT编译的比例 (称作Compiler filters) 由少到多,可以分成许多种 (各
家
: 厂商不同):
:
: - verify
: - interpret-only
: - quicken
: - space-profile、space
: - speed-profile、speed
: - everything-profile、everything
:
: 越下面的模式,编译比例越高,编译的耗时也越久,编译後的App执行速度理论上较快。
而
: 带有profile字样的代表虽然是同种方法,但只会针对同步监测的结果进行编译,编译耗
时
: 较短,但是之後执行会比不带有profile字样的更慢。
:
: Android 8~11预设似乎都是quicken (但各家厂商会有不同),Galaxy App Booster则是以
sp
: eed-profile进行编译。聪明的你一定发现了,那为何不用everything编译呢?这样速度
岂
: 不是会更快?我自己实测了之後,发现还真的有变快!
:
:
:
:
: 【如何手动进行编译】
:
:
: 理论上,Android 7以後的系统都支援手动编译,只需要电脑连接与adb即可,不需要root
权
: 限。
:
: 1. 先开启手机的「开发人员选项」,并且启用「USB 侦错」。
:
:
: 2. 将手机连接上电脑,输入指令「adb devices」以启动adb并确认连接。
:
: (1) 连接完成後,会跳出类似这样的内容,最後有「device」字样即为连接完成:
: List of devices attached
: 424947564e473498 device
:
: (2) 若最後为「unauthorized」,请你在手机上点「允许这台电脑进行USB侦错」:
: List of devices attached
: 424947564e473498 unauthorized
:
: (3) 若最後为「unauthorized」,但手机并未跳出讯息,请依序输入以下两条指令重
新
: 启动adb服务 (感谢kkkk1234版友提供):
: adb kill-server
: adb start-server
:
:
: 3. 输入指令,以everything模式重新编译程式
:
: (1) 若要强制对所有程式重新编译 (适用於第一次执行):
: adb shell pm compile -m everything -f -a
:
: (2) 若只对尚未编译的程式进行编译 (适用於程式更新後):
: adb shell pm compile -m everything -a
:
: (3) 若只要强制对特定程式进行编译 (将<package_name>取代为程式的套件名称,例
: 如Spotify为com.spotify.music):
: adb shell pm compile -m everything -f <package_name>
:
: 这个步骤最为关键!将所有程式以everything模式重新编译需要数小时的时间。输入
指
: 令後,手机就会开始在背景编译,此时无论拔掉传输线、重开机都无法阻止 (我试过了XD
)
: ,所以会有几个小时手机会发热、变慢、耗电大,也无法更新或安装其他程式 (会显示安
装
: 失败)。
:
:
: 4. (可跳过) 输入指令,重新编译UI的图像资源
:
: (1) 若要强制对所有程式重新编译:
: adb shell pm compile --compile-layouts -f -a
:
: (2) 若仅对未编译的程式进行编译:
: adb shell pm compile --compile-layouts -a
:
: 这个指令会编译UI的图像资源,但我感觉不出编译完的效果XD
:
:
: 5. 後记
:
: (1) 跑完後如果跳出以下错误讯息:
: Failure: the following packages could not be compiled: ......
: 这是正常的,列出的是因某些原因而无法编译的程式,如果不是系统程式的话,
: 有可能是因为手机剩余空间不够喔。
:
: 只要清出空间後,再执行一次3. (2) 适用於程式更新後的编译就OK了!
:
:
:
:
:
: 【如何手动移除编译】
:
:
: 1. 输入指令:adb shell pm compile -f -a -r install
:
: 这个指令会将所有程式回复为安装时的编译初始值。要注意这其实是将所有程式用比
较
: 简略的模式重新编译一遍,所以还是会花到不少时间!
:
:
:
:
: 【实测?】
:
:
: 实测我的Galaxy Note 9上有768个程式:
:
: - 移除编译:59分钟
: - 手动编译:大约4小时,只有几个程式无法编译
: - 编译图像资源:大约2分钟,跳出一堆无法编译的程式XD
:
: 整体编译完成後,空间多占据了5.2 GB,不过打开app马上就能发现顺滑很多!
:
: 差异是从「我明天就想换手机」变成「可以再战一年」的程度,非常推荐!
:
: 希望以上可以帮助到同样在使用老手机的各位版友,如果有错误的话也请不吝指正,谢谢
!
:
:
:
:
: 【参考资料】
:
:
: - 版友的讨论:
: #1VrNHVPE (MobileComm)
:
: - Google官方的文件:
: https://bit.ly/4kR6mzn
:
: - 中国CSDN文章:
: https://bit.ly/4hBoc6O
:
: - 对Galaxy App Booster反编译的探讨文章:
: https://bit.ly/4kQRdhw
:
: - XDA论坛上网友提供的Minimal ADB and Fastboot (把Google官方的adb提取出来的,
我
: 以前刷机都是用这个XD):
: https://bit.ly/4bT8XVB
:
: - Reddit论坛上的指令参考:
: https://bit.ly/4kWmlfM
:
: 另外Reddit这篇讨论串里面,网友还会再输入这个指令:
: adb shell pm bg-dexopt-job
: 这个指令会启动手机背景运作的编译最佳化程序,不过前面既然已经编译过了,而且
编
: 译最佳化也不是以everything模式运作 (需要root才能改),所以我认为是多余的XD
:
:
: --
: Sent from my Samsung Galaxy Note 9
:
: ○ PiTT // PHJCI
:
--
Sent from my Google Pixel 9 Pro XL
○ PiTT
// PHJCI
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.228.102.52 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MobileComm/M.1742790964.A.731.html
※ 编辑: amilkamilk (61.228.102.52 台湾), 03/24/2025 12:36:57
※ 编辑: amilkamilk (61.228.102.52 台湾), 03/24/2025 12:39:31
※ 编辑: amilkamilk (61.228.102.52 台湾), 03/24/2025 12:41:40
1F:推 k9120303 : 旧手机可以开WiFi侦错的话,不用配对别支手机吧?03/24 12:44
2F:→ k9120303 : 直接用aShell之类的Terminal APP就好了03/24 12:45
哈,我是文组
看不懂你说的是什麽
这是自己推敲出来的方式
如果有大神有更简单的方式
也欢迎分享
3F:→ k9120303 : 但还是推分享03/24 12:45
※ 编辑: amilkamilk (61.228.102.52 台湾), 03/24/2025 12:47:12
4F:推 k9120303 : 另外同WiFi下也可以用adb connect ip的方式连线03/24 12:49
5F:→ k9120303 : 楼主可以研究一下shizuku 哈哈03/24 12:50
6F:→ amilkamilk : 好的。感谢,真的是隔行如隔山XXD03/24 12:50
7F:→ amilkamilk : 看懂了,Shizuku配对更简单了03/24 12:53
8F:→ grantchiue : 刚看第一篇本来就要用 LADB 来弄,但发现公司没有03/24 13:15
9F:→ grantchiue : wi-fi 环境…03/24 13:15
10F:推 abc0922001 : 酷感谢教学03/24 13:29
11F:→ manbow77 : termux现在用google play就可以更新了03/24 13:38
12F:→ manbow77 : wifi adb好像安卓11以上才有 太旧的只能先刷机03/24 13:38
13F:→ manbow77 : 同个wifi 其中一台开热点给另一台连就可以了03/24 13:41
14F:→ manbow77 : termux可留着 adb以外还有各种方便用途03/24 13:43
※ 编辑: amilkamilk (114.136.145.105 台湾), 03/24/2025 13:54:51
15F:→ justin332805: LADB跟Shizuku都可以用 03/24 13:56
发现这两款好像在play shop都要收费
这样termux好像还有一点使用的价值
16F:→ justin332805: WiFi侦错下自己下指令给自己 03/24 13:56
17F:→ justin332805: 不用依靠别台装置 03/24 13:56
※ 编辑: amilkamilk (114.136.145.105 台湾), 03/24/2025 13:59:46
18F:推 slsamg7112 : 这样理论上shizuku+支援的终端app都能用吧 03/24 14:12
19F:推 k9120303 : ladb和shizuku在github上都是开源可以免费下载的 03/24 14:29
20F:→ amilkamilk : 这样play shop上收费好奸诈XXD 03/24 14:32
21F:推 k9120303 : aShell则放在gitlab, 个人觉得aShell好用许多 03/24 14:33
22F:→ manbow77 : 因为ashell就直接等於adb shell进入手机shell状态 03/24 14:38
23F:推 k9120303 : 重点是提示字和稳定度都比ladb好 03/24 14:42
24F:→ k9120303 : 在Reddit看到讨论 ladb某些函式的调用方法比较不好 03/24 14:43
25F:→ manbow77 : 其实透过termux一样可以自己adb自己 方法搜寻就有 03/24 14:43
26F:→ Louis430 : termux搞定後留不留都没差 反正最大问题保固早没了 03/24 16:13
27F:→ amilkamilk : 借这边问一下,旧手机如果是安卓10,有办法用另一 03/24 17:15
28F:→ amilkamilk : 支手机接线去ADB吗 03/24 17:15
29F:→ amilkamilk : 我直接把两只手机接线好像侦测不到ADB 03/24 17:15
30F:推 k9120303 : 有OTG功能的手机应该理论上可以(没试过) 但要改por 03/24 18:22
31F:→ k9120303 : t 03/24 18:22
32F:→ k9120303 : 用无线同WiFi下确定是可以的 03/24 18:23
33F:推 Yuwuen : 推推 03/24 22:00
34F:推 randy061 : 谢谢分享 03/24 22:43
35F:→ manbow77 : 两台手机透过OTG来ADB的话找专门app比较省事 03/24 23:23
36F:→ manbow77 : 但不见得每台手机都能用 需不需要root也不一定 03/24 23:24
37F:→ manbow77 : 直接商店搜寻otg adb应该就会有 03/24 23:25
38F:推 tcchu : shell的话我是用connectbot 但平常adb还是用电脑 03/25 02:21
39F:推 elcomcc : 谢分享 03/25 06:53
40F:推 athraugh : 推分享 教学 03/25 08:57
41F:推 nrsair : 感谢教学 03/25 10:20
42F:推 proton63 : S9/Note9 刷NOBLE ROM 4.3 OneUI 6.1.1 不香吗? 03/25 12:43
43F:推 spirit119 : 太厉害了 03/25 17:10
44F:→ grantchiue : 昨天 S24U 也编译了3个小时多 03/25 18:58