話說很久沒弄 Android 開發了,這兩天為了想把 Go 寫的東西包起來放上去跑,大費周章、不情不願的把 Android Studio 裝起來,結果要連上裝置的時候一直沒辦法認證成功。古董 Android 7 還沒有 WiFi pairing 的功能,所以本機產生的 adbkey 一直沒辦法被允許。想先用 USB 連,但目標是類似 Android TV 的東西,上面根本沒有 USB device 的接口。問廠商,還跟我說用對話框認證,就根本不會跳出來啊。後來他們把自己電腦裡的 adbkey 寄來,果然就可以了。但不想用他們的蓋掉我本機的,就照著 adb 說明,把寄來的 adbkey
, adbkey.pub
另存一個目錄,然後設定環境變數 $ADB_VENDOR_KEYS
指到那目錄,卻怎麼也測不成功。
後來先把本機端 adb server 跑成 foreground, 命令用 env ADB_TRACE=all ./adb nodaemon server
. 結果看到這神秘的幾行:
1 | adb I 01-27 19:46:16 264189 264189 auth.cpp:408] watch descriptor 1 registered for '/home/john/.android/xxx |
non-adb_key
是什麼鬼?接下來去 github 找 adb 原始碼看到:
1 | if (!android::base::EndsWith(name, ".adb_key")) { |
好啊,一定要這樣就對了,我還以為它會每個檔案都讀讀看,結果是只讀 .adb_key
結尾的啊(參考)。把 xxx/adbkey
改成 xxx/xxx.adb_key
之後就可以了。