在命令行上卸载Android SDK的选定部分

这与“卸载旧的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版本…

    除了工具/之外的任何东西一般都可以重新安装

     android list sdk -a 

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

    我会经常吹掉我的附加组件/构建工具/文件夹并重新安装我的附加组件/和构建工具/。 如果你需要自动接受许可证,下面的另一个小技巧是,至少如果你一次安装一个:

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

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

    欢迎使用Android SDK!

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

    要开始开发应用程序,您必须使用SDK Manager安装Platform-tools和至少一个版本的Android平台。

    您似乎只需要下载所需的部件。 在没有其他参数的情况下执行android update sdk --no-ui下载所有内容,因此非常耗时且浪费。

    --filter参数用于确定所需的包,并在每次要进行更新时使用它们。 关于如何在这里做更详细的解释(以及更多关于android命令的信息 )。

    如果定期更改所需的组件(例如,定位到不同的平台),您可以创建一个脚本来删除不需要的各种文件夹下的组件(例如android-sdk-linux/platforms下的API),然后重新创建只有你想要的组件。

    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 } ' 

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

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

     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规范中包含的组件。

    从我能够收集的内容中,您可以删除/platforms /skins/system-images