我想从命令行设置Android开发环境,遇到以下问题:

wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz

解压完成后,运行

tools/android update sdk --no-ui

但是,它跑起来太慢了

Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml

结果是在文件夹build-tools中什么都没有,我想要的是apapt和apkbuilder,因为我想从命令行构建apk而没有ant。


当前回答

正如在其他回答中提到的,你可以使用——filter选项来限制安装的包:

Android SDK更新过滤器…

其他答案没有提到可以使用常量字符串标识符而不是用于筛选器选项的索引(索引将会更改)。这对于无人值守或脚本安装很有帮助。过滤选项:

... 这也接受'list sdk——extended'返回的标识符。

Android列表SDK——全部——扩展:

Packages available for installation or update: 97
----------
id: 1 or "tools"
     Type: Tool
     Desc: Android SDK Tools, revision 22.6.2
----------
id: 2 or "platform-tools"
     Type: PlatformTool
     Desc: Android SDK Platform-tools, revision 19.0.1
----------
id: 3 or "build-tools-19.0.3"
     Type: BuildTool
     Desc: Android SDK Build-tools, revision 19.0.3

然后你可以使用字符串id作为过滤器选项来精确指定你想要的版本:

Android更新SDK——过滤工具,平台工具,build-tools-19.0.3等

其他回答

但是,它跑起来太慢了

是的,我也遇到过同样的问题。有些文件下载非常慢(至少在过去几天是这样)。如果你想下载所有的东西,你可以做的不多。

结果是在文件夹build-tools中什么都没有,我想要的是apapt和apkbuilder,因为我想从命令行构建apk而没有ant。

你让它跑完吗?

您可以做的一件事是使用-t开关过滤正在下载的包。

例如:

tools/android update sdk --no-ui -t platform-tool

当我前几天尝试这样做时,我安装了18.0.0版本的构建工具。由于某种原因,最新版本18.0.1没有包含在这个过滤器中,获得它的唯一方法是使用——all开关安装所有东西。

我更喜欢放一个脚本来安装我的依赖

喜欢的东西:

#!/usr/bin/env bash
#
# Install JUST the required dependencies for the project.
# May be used for ci or other team members.
#

for I in android-25 \
         build-tools-25.0.2  \
         tool \
         extra-android-m2repository \
         extra-android-support \
         extra-google-google_play_services \
         extra-google-m2repository;

 do echo y | android update sdk --no-ui --all --filter $I ; done

https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh

默认情况下,命令行中的SDK管理器不包括列表中的构建工具。它们属于“过时”的类别。要查看所有可用的下载,使用

android list sdk --all

然后从命令行获取列表中的一个包,使用:

android update sdk -u -a -t <package no.>

其中-u代表——no-ui, -a代表——all, -t代表——filter。

如果你需要安装多个包,请:

android update sdk -u -a -t 1,2,3,4,..,n 

在1、2、…,n为上面list命令列出的包号

灵感来自@i4niac和@Aurélien Lambert的回答,这是我想到的

csv_update_numbers=$(./android list sdk --all | grep 'Android SDK Build-tools' | grep -v 'Obsolete' | sed 's/\(.*\)\- A.*/\1/'|sed '/^$/d'|sed -e 's/^[ \t]*//'| tr '\n' ',')
csv_update_numbers_without_trailing_comma=${csv_update_numbers%?}

( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
    | ./android update sdk --all -u -t $csv_update_numbers_without_trailing_comma

解释

在android list sdk——all命令的结果中获得一个以逗号分隔的数字列表,这些数字是构建工具包的索引(忽略过时的包)。 保持每隔几毫秒向终端抛出'y'以接受许可证。

在不安装整个android studio的情况下安装android环境:

下载JDK(版本大于8) 从https://gradle.org/install/下载gradle 从https://developer.android.com/studio下载命令行工具,只下载命令行工具 设置必要的环境变量 下载必要的SDK工具