通过命令行列出已安装的 sdk 包

List installed sdk package via command line

我想通过命令行列出已安装的sdk包。(由于某些原因我无法使用GUI)

我做了一些研究,找到了几个命令来列出远程服务器上的可用包,但我还没有找到任何命令来列出已安装的 sdk 包。

谢谢

如 $ANDROID_HOME/tools/android list --help

中所述
  • list : Lists existing targets or virtual devices.
  • list avd : Lists existing Android Virtual Devices.
  • list target : Lists existing targets.
  • list device : Lists existing devices.
  • list sdk : Lists remote SDK repository.

我猜你正在寻找这个:

$ANDROID_HOME/tools/android list target

您可以在 Command Line Reference 中了解有关 android 工具的更多信息。

祝你好运!

使用 Android SDK 工具 25.2.3(及更高版本):

$ANDROID_HOME/tools/bin/sdkmanager --list

参见:https://developer.android.com/studio/command-line/sdkmanager.html#usage

它不完全是一个清单,但 source.properties 文件提供了出处的详细信息。我用它来比较不同机器上的 SDK:

for i in $(find -name source.properties); do
  if [ -e ../other.sdk/$i ] ; then
    echo ========================= $i
    diff -wu $i ../other.sdk/$i | grep -v Pkg.License
  fi
done

我脱掉 Pkg.License 因为它是 hyoooj。

在我的 mac 上只是 sdkmanager --list 不工作,需要指定路径。

使用 android studio 默认 SDK 位置路径为 ~/Library/Android/sdk/tools/bin/sdkmanager --list

如@tnissi 所述,这是针对 Android SDK 工具 25.2.3(及更高版本)的。

或通过以下方式添加路径:export PATH=$PATH:~/Library/Android/sdk/tools/bin

一个有点老的话题,但我遇到了类似的问题,并注意到 avdmanager 将已安装的平台列为目标

"%ANDROID_SDK_ROOT%\tools\bin\avdmanager" list target

Available Android targets:==============] 100% Fetch remote repository...
----------
id: 1 or "android-25"
     Name: Android API 25
     Type: Platform
     API level: 25
     Revision: 3
----------
id: 2 or "android-28"
     Name: Android API 28
     Type: Platform
     API level: 28
     Revision: 6

以防你只需要安装包的全名

sdkmanager --verbose --list | sed -n '/^Installed packages:$/,/^Available Packages:$/p'

对于那些想要使用 awk 获取 "Installed packages" 和 "Aavaliable Packages" 之间的内部段落但不包括 "Installed packages" 和 "Aavaliable Packages" 行的人。

sdkmanager  --list | awk '/Installed/{flag=1; next} /Available/{flag=0} flag'

如果您设置了路径,运行

sdkmanager --list_installed

这将打印出使用 sdkmanager 安装的所有包。