7

这与“卸载旧的 Android SDK 版本”有关,但我想在无头 Linux CI 服务器上执行此操作(磁盘空间不足)。

命令行工具是否android提供删除 SDK 旧部分的选项?快速浏览一下,它唯一可以删除的就是 AVD。我忽略了什么吗?

或者,我想我可以手动从 SDK_HOME 下删除东西。但是什么东西可以安全删除呢?除了这些还有其他候选人吗?

  • 我只需要支持 API 级别 14 及以上,所以我想我可以删除platforms/喜欢android-3android-4.
  • docs(800MB), samples(300MB)
  • 怎么样system-images?我是否需要android-18/armeabi-v7a/android-18/x86/如果我只想使用 Gradle(和 Ant)进行自动 APK 构建(没有模拟器的东西)?

至少在完全删除docs后,下次我运行android update sdk --no-ui时,它会再次开始获取它们:

   Downloading Documentation for Android SDK, API 19, revision 1

我可以避免update添加我丢弃的 SDK 的一部分吗?

免责声明:是的,磁盘很便宜,我真的应该添加更多。但是现在在这个特定的服务器(8.5G 磁盘)上我没有那个选项,但我仍然想让它运行 Android 19 版本......

4

3 回答 3

4

从我所能收集到的,你可以删除目录/platforms /skins/system-images

于 2016-02-05T06:31:19.560 回答
3

除了 tools/ 之外的任何东西都可以重新安装

android list sdk -a

android update sdk --no-ui -a --filter <#index>

我经常会删除我的 add-ons/ 和 build-tools/ 文件夹并重新安装我的 add-ons/ 和 build-tools/。如果您需要自动接受许可证,另一个小技巧如下,至少如果您一次安装一个:

android update sdk --no-ui -a --filter <#index> 0<<EOF
y
EOF

“android”命令本身位于“SDK Tools”包或 tools/ 目录中,因此您无法删除它,因为这样您就无法安装其他任何东西。我通常也不会删除平台工具/,因为那样你就无法构建任何东西,除非你正在安装新/旧版本。如果您查看 <sdk-folder>/SDK Readme.txt,您将在第一段中看到以下内容以确认这一点:

欢迎使用 Android SDK!

Android SDK 存档最初只包含基本的 SDK 工具。它不包含 Android 平台或任何第三方库。事实上,它甚至没有开发应用程序所需的所有工具。

为了开始开发应用程序,您必须使用 SDK 管理器安装平台工具和至少一个版本的 Android 平台。

于 2015-08-19T04:04:30.523 回答
2

您似乎只需要下载所需的部分。在没有其他参数的情况下执行 aandroid update sdk --no-ui会下载所有内容,因此既耗时又浪费。

--filter参数用于确定您需要的软件包,并在每次您想要进行更新时使用它们。这里有关于如何做到这一点的更详细的解释(这里还有更多关于android命令解释)。

如果定期更改需要的组件(例如针对不同的平台),您可以创建一个脚本,删除各种文件夹下不需要的组件(例如 API 下android-sdk-linux/platforms),然后仅使用您想要的组件重新创建.

android list sdk -e命令将给出可与该--filter参数一起使用的软件包的扩展列表,因此只允许安装特定组件。

在查看了使用命令自动接受许可证提示的出色答案自动化方式之后expect,我最终安装和更新了我需要的组件,而无需下载其他所有内容(在 Ubuntu 上):

expect -c '
set timeout -1;
spawn /opt/android-sdk-linux/tools/android update sdk --no-ui --filter tools,build-tools-20.0.0,platform-tools,android-16,extra-android-support,extra-android-m2repository;
expect {
    "Do you accept the license" { exp_send "y\r" ; exp_continue }
    eof
}
'

请注意tools,build-tools-20.0.0,platform-tools,android-16,extra-android-support,extra-android-m2repository使用参数指定的组件,这些组件--filter将下载限制为仅这些部分。

运行此脚本一次只会下载这些组件。再次运行确定没有什么需要更新,但确实给出了一组令人困惑的消息:

Error: Ignoring unknown package filter 'tools'
Error: Ignoring unknown package filter 'build-tools-20.0.0'
Error: Ignoring unknown package filter 'platform-tools'
Error: Ignoring unknown package filter 'android-16'
Error: Ignoring unknown package filter 'extra-android-support'
Error: Ignoring unknown package filter 'extra-android-m2repository'
Warning: The package filter removed all packages. There is nothing to install.
         Please consider trying to update again without a package filter.

这些消息只是意味着没有更新——--filter规范中包含的组件实际上并没有被卸载。

于 2014-08-15T19:40:49.337 回答