iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0
Software Development

試著開發一些有用的工具程式系列 第 8

[Day 7] Electron + ADB!這樣能用嗎?

  • 分享至 

  • xImage
  •  

昨天ㄉ問題

昨天成功做出了第一個 Electron 視窗,但目前還只是一個 HelloWorld 程式
距離它變成一個可用的工具程式還有很長的一段路要走(

ADB 工具

我先去 Google 官網下載了 Android SDK Platform Tools,裡面就有 ADB 工具:

  • Windows:adb.exe + 一些 dll 檔案
  • macOS:adb 執行檔
  • Linux:adb 執行檔

整合到專案裡

我決定把 ADB 工具直接放到專案裡:
https://ithelp.ithome.com.tw/upload/images/20250922/20169153utpZmCNa7d.png

然後寫一個函數來根據不同平台找到對應的 ADB (我先只放 Arm Mac 跟 x86 Windows):

function getADBPath() {
  const platform = process.platform;
  const arch = process.arch;
  const basePath = path.join(__dirname, 'adb');
  
  if (platform === 'win32') {
    return path.join(basePath, 'win-x64/adb.exe');
  } else if (platform === 'darwin') {
    return path.join(basePath, 'mac-arm64/adb');
  }
  // 之後再加 Linux 支援
}

測試他

把 ADB 檔案放好後,修改程式碼來使用內建的 ADB:

const adbPath = getADBPath();
exec(`"${adbPath}" version`, (error, stdout, stderr) => {
  if (error) {
    console.log('ADB 錯誤:', error);
    return;
  }
  console.log('ADB 版本:', stdout);
});

https://ithelp.ithome.com.tw/upload/images/20250922/20169153oNuSPA78Mf.png

測試裝置連接

接下來測試看看能不能抓到連接的平板
我用 USB 線連接手機,開啟開發者選項和 USB 偵錯

exec(`"${adbPath}" devices`, (error, stdout, stderr) => {
  console.log(stdout);
});

結果顯示:

List of devices attached
XXXXXXXXXXXXXXX    device

下一步

明天要來處理使用者介面,把這些功能包裝成好看好用的 GUI。

https://ithelp.ithome.com.tw/upload/images/20250922/20169153Mf1TgEpzbw.png


上一篇
[Day 6] 終於要開始寫 Code 了
系列文
試著開發一些有用的工具程式8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言