我想从命令行设置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。
默认情况下,命令行中的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命令列出的包号
默认情况下,命令行中的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 sdk依赖项,由于工具和在线附带的文档严重缺乏,我想我将在这里发布我发现的东西。
我正在使用android sdk r24.4.1 for linux。你可以运行两个命令来列出可用的包:
Android列表SDK
更详尽的是:
Android列表SDK——所有
对于上面的每个命令,特定包的包号不同!例如,前者将包API 23.1修订版3列为包#3,后者将其列为包#29。
现在,使用android命令有两种不同的安装方式。
Tools /android update SDK——no-ui——filter <package number>
and
Tools /android update SDK -u -a -t <包号>
假设每个安装命令都可以将package #作为参数,那么使用哪个包号呢?经过大量的网上搜索和尝试和错误,我发现
Android更新SDK——no-ui——过滤器使用Android列表SDK的包号
and
Android update SDK -u -a -t使用Android list SDK——all中的包号
换句话说,要安装API 23.1修订版3,你可以这样做:
Android更新SDK—no-ui—filter 3
or
Android更新SDK -u -a -t 29
很疯狂,但很有效。