【问题标题】:List installed sdk package via command line通过命令行列出已安装的 sdk 包
【发布时间】:2015-08-07 20:22:42
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 我一直在寻找这个,发现自己有这个 hacky 解决方法:
  • 你能分享一下你的解决方法吗?
  • 在 windows 上输入命令:%ANDROID_HOME%/tools/bin/sdkmanager --list

标签: android android-sdk-tools


【解决方案1】:

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

$ANDROID_HOME/tools/bin/sdkmanager --list

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

【讨论】:

  • 这列出了所有软件包,无论是否安装。 In its third form, all installed and available packages are printed out. 是否有一个变种只返回已安装的包,并以有用的格式返回它们以在其他地方重新安装相同的包集?
  • 据我所知,没有这样的变种。已安装的包有自己的表格,第一列列出了安装时需要的包路径。所以信息就在那里,只需要一些 shell 魔法来提取它。
  • 替代命令 from here sdkmanager --list --verbose 自版本 26.0.1 和 find ~/.android-sdk/ -name package.xml -exec sh -c 'eval $(xmllint --xpath "//*[local-name()='\'localPackage\'']/@path" $0) && echo $path' {} \; 仅列出已安装的软件包
  • @DavidBerry sdkmanager --list | sed -e '/Available Packages/q' 将很快打印已安装的包(比@albodelu 变体“稍微”短一点)。
【解决方案2】:

如 $ANDROID_HOME/tools/android list --help 中所述

  • list :列出现有目标或虚拟设备。
  • list avd :列出现有的 Android 虚拟设备。
  • list target :列出现有目标。
  • 列出设备:列出现有设备。
  • list sdk:列出远程 SDK 存储库。

我猜你正在寻找这个:

$ANDROID_HOME/tools/android list target

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

祝你好运!

【讨论】:

  • 酷,可以分享参考链接吗?
  • 这个答案没有回答发帖者的问题。我也有同样的问题。为了构建我的 Android 项目,我想自动安装 Android SDK 和它需要的任何模块。我不知道如何判断模块是否已经安装。
  • 在我有限的调查中,似乎:a) 您可以通过查看安装 Android SDK 的 build-tools 子目录(例如 /usr /local/android-sdk-macosx/build-tools),b) 其他模块可能存储在 add-ons 子目录中,c) 目标平台似乎安装在平台中。
  • 如前所述,这并没有回答如何列出已安装的软件包的问题。
  • 这是列出 AVD 目标,与 Q 无关
【解决方案3】:

如果您设置了路径,请运行

sdkmanager --list_installed

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

【讨论】:

  • 它对我不起作用,该选项不可用
  • @crgarridos 您的 sdkmanager 版本是什么?对我来说,它是 3.0,我在 Windows 上,当我运行 'sdkmanager --help' 时,默认会列出命令 '--list_installed'
  • 我在 v4.0 上运行,所以该选项可能已被删除
  • 这适用于最新版本(撰写本文时为 v6.0)。这应该是公认的答案。
【解决方案4】:

在我的 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

【讨论】:

    【解决方案5】:

    如果您只需要已安装的具有全名的软件包

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

    【讨论】:

      【解决方案6】:

      对于那些想要使用awk 获取“已安装包”和“可用包”之间的内部段落的人,但不包括“已安装包”和“可用包”行。

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

      【讨论】:

      【解决方案7】:

      这不是一个完整的清单,但 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。

      【讨论】:

        【解决方案8】:

        一个有点老的话题,但我有类似的问题,并注意到 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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-01-16
          • 2023-02-03
          • 1970-01-01
          • 2011-10-27
          • 2012-07-03
          • 2017-12-22
          • 2021-06-16
          • 2013-06-02
          相关资源
          最近更新 更多