因為我的舊手機是固定丟在車上當導航的
懶得拿回家裡接線
所以研究了一下無線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