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

时间:2013-11-04 19:23:32

标签: android command-line continuous-integration android-build

这与"Uninstall old Android SDK versions"有关,除了我想在无头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版本......

3 个答案:

答案 0 :(得分:3)

除工具之外的任何东西都可以通常用

重新安装
android list sdk -a

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

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

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

&#34; android&#34;命令本身存在于&#34; SDK工具&#34;包或工具/目录,因此您无法删除它,因为这样您就无法安装其他任何内容。我通常也不会删除平台工具/,因为除非您正在安装新的/旧版本,否则您无法构建任何内容。如果您查看&lt; sdk-folder&gt; / SDK Readme.txt,您将在第一段中看到以下内容以确认:

  

欢迎使用Android SDK!

     

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

     

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

答案 1 :(得分:2)

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

--filter参数,用于确定所需的软件包,并在每次要进行更新时使用它们。有关如何执行此操作的更详细说明here(甚至更多关于android命令here)。

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

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

在审核an excellent answer自动方式使用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规范中包含的组件实际上并未卸载。

答案 2 :(得分:1)

根据我能够收集的内容,您只需删除/platforms /skins/system-images

中的目录