Windows WSL2 安裝 Android SDK Command-line Tools 指令列工具

在 WSL2 中要開發原生 Android 應用程式,幾乎離不開 Android SDK 的 Command-line Tools ,這包工具最重要的就是 adb 和 sdkmanager ,有了 sdkmanager 就可以繼續安裝其他 SDK 工具。

開啟 Android Develop 官方網站 ,往下捲動到 僅限指令列工具 ,複製 Linux SDK 工具套件 的下載連結(需要點進去,同意條款,才會有下載連結)

筆者取得的下載連結如下:
    
https://dl.google.com/android/repository/commandlinetools-linux-14742923_latest.zip
    

建立一個資料夾來儲存安裝工具:
    
mkdir -p ~/Android/Sdk


進入到目錄中:
    
cd ~/Android/Sdk


從剛剛取得的連結下載工具:
    
wget https://dl.google.com/android/repository/commandlinetools-linux-14742923_latest.zip


解壓縮:
    
unzip commandlinetools-linux-14742923_latest.zip


使用 ls 就會看到已經被解壓縮到 cmdline-tools 資料夾了:
    
ls
cmdline-tools  commandlinetools-linux-14742923_latest.zip
    

移除原本的下載檔案
    
rm commandlinetools-linux-14742923_latest.zip


然後這裡有個大坑,就是 cmdline-tools 資料夾內一定要有 latest ,檔案應該是要在 latest 資料夾內,如果沒有的話就使用下面的指令建立 latest 資料夾
    
mkdir -p ~/Android/Sdk/cmdline-tools/latest
    

然後把檔案搬進去。註:這是偷懶的寫法,會說無法移動 latest 資料夾,但是其他都會移動成功,不影響。
    
mv ~/Android/Sdk/cmdline-tools/* ~/Android/Sdk/cmdline-tools/latest/
    

檔案樹會長這樣:
    
~/Android/Sdk/cmdline-tools$ tree -L 3 .
.
└── latest
    ├── NOTICE.txt
    ├── bin
    │   ├── apkanalyzer
    │   ├── avdmanager
    │   ├── d8
    │   ├── lint
    │   ├── profgen
    │   ├── r8
    │   ├── resourceshrinker
    │   ├── retrace
    │   ├── screenshot2
    │   └── sdkmanager
    ├── lib
    │   ├── README
    │   ├── analytics-library
    │   ├── annotations
    │   ├── apkanalyzer-classpath.jar
    │   ├── apkparser
    │   ├── avdmanager-classpath.jar
    │   ├── build-system
    │   ├── common
    │   ├── d8-classpath.jar
    │   ├── ddmlib
    │   ├── device_validator
    │   ├── external
    │   ├── layoutlib-api
    │   ├── lint
    │   ├── lint-classpath.jar
    │   ├── misc
    │   ├── profgen
    │   ├── profgen-classpath.jar
    │   ├── r8-classpath.jar
    │   ├── r8.jar
    │   ├── repository
    │   ├── resourceshrinker-classpath.jar
    │   ├── retrace-classpath.jar
    │   ├── screenshot2-classpath.jar
    │   ├── sdk-common
    │   ├── sdklib
    │   ├── sdkmanager-classpath.jar
    │   └── zipflinger
    └── source.properties

19 directories, 24 files
    

編輯 ~/.bashrc 檔案:
    
vi ~/.bashrc
    

在最下面加入以下環境變數:
    
export ANDROID_HOME=$HOME/Android/Sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME

export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/emulator
    

重新讀取 ~/.bashrc 檔案
    
source ~/.bashrc
    

使用 sdkmanager 指令驗證是否安裝成功:
    
sdkmanager --licenses
[=======================================] 100% Computing updates...
All SDK package licenses accepted.
    

如果出現以下錯誤訊息,就代表路徑錯誤,路徑一定要長 cmdline-tools/latest/ 這樣,建立 latest 資料夾然後把檔案移動進去就可以了:
    
sdkmanager --licenses
Error: Could not determine SDK root.
Error: Either specify it explicitly with --sdk_root= or move this package into its expected location: &sdk>/cmdline-tools/latest/
    

查看 sdkmanager 版本:
    
sdkmanager --version
20.0
    

如果要使用虛擬機的話,執行以下指令安裝 emulator 套件
    
sdkmanager --install "emulator"
    

驗證 emulator 安裝成功:
    
emulator -version
INFO         | Android emulator version 36.5.10.0 (build_id 15081367) (CL:N/A)
INFO         | Graphics backend: gfxstream
Android emulator version 36.5.10.0 (build_id 15081367) (CL:N/A)
Copyright (C) 2006-2024 The Android Open Source Project and many others.
This program is a derivative of the QEMU CPU emulator (www.qemu.org).

  This software is licensed under the terms of the GNU General Public
  License version 2, as published by the Free Software Foundation, and
  may be copied, distributed, and modified under those terms.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
    

留言