我想从命令行设置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。


当前回答

不建议使用“android”命令。 命令行工具使用“tools/bin/sdkmanager”和“tools/bin/avdmanager”

如果你不需要Android Studio,你可以从developer.android.com的命令行工具部分下载基本的Android命令行工具。

从CLI来看,它应该是这样的:

curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

or

wget --output-document sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

在此之后,只需将存档解压缩到目标文件夹

unzip sdk-tools-linux.zip

现在我们可以安装你需要的一切…

./tools/bin/sdkmanager --install 'build-tools;29.0.2' 'platform-tools' 'platforms;android-29' 'tools'

可以使用./tools/bin/sdkmanager——list命令获取完整的软件包列表

有些包要求接受许可协议。你可以交互地接受它,或者只是把“y”传递给输入流,就像这样(如果有两个协议):

echo -ne "y\ny" | ./tools/bin/sdkmanager --install 'system-images;android-29;default;x86_64'

当然,为了方便起见,您可以导出诸如ANDROID_HOME或ANDROID_SDK_ROOT这样的变量(包括在~/中执行)。profile或~/.bash_profile)或修补PATH变量-所有这些都由您自行决定。

脚本的例子:

mkdir /opt/android-sdk
cd /opt/android-sdk
curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
unzip sdk-tools-linux.zip
echo -ne "y" | ./tools/bin/sdkmanager --install 'build-tools;29.0.2' 'platform-tools' 'platforms;android-29' 'tools'

要求: 卷曲(或wget)并解压缩

故障排除:

如果你看到警告:无法创建设置,你需要在ANDROID_HOME中的cmdline-tools目录中有工具目录(如果需要创建它,使用这个确切的名称)见Android命令行工具sdkmanager总是显示:警告:无法创建设置

其他回答

我就遇到了这个问题,所以我最终通过读取和解析可用工具列表来编写了一行bash dirty解决方案:

 tools/android update sdk -u -t $(android list sdk | grep 'Android SDK Build-tools' | sed 's/ *\([0-9]\+\)\-.*/\1/')

灵感来自@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'以接受许可证。

但是,它跑起来太慢了

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

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

你让它跑完吗?

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

例如:

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

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

Try

1. 列出所有软件包

android list sdk --all

2. 使用以下命令安装包

android update sdk -u -a -t package1, package2, package3 //comma seperated packages obtained using list command 

当我试图从命令行安装所有Android SDK相关的东西时,我遇到了一个很棒的信息来源,就是这个Dockerfile。在Dockerfile中,您可以看到作者执行了一个命令来安装平台工具和构建工具,而没有任何其他交互。在行动计划提出的情况下,该命令将被调整为:

echo y | $ANDROID_HOME/tools/android update sdk --all --filter build-tools-21.1.0 --no-ui