我想从命令行设置Android dev环境,遇到以下问题:
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
结果是文件夹构建工具中没有任何东西,我想要的是aapt和apkbuilder,因为我想在没有ant的情况下从命令行构建apk。
答案 0 :(得分:472)
默认情况下,命令行中的SDK Manager不包含列表中的构建工具。他们处于“过时”类别。要查看所有可用下载,请使用
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是上面列出命令列出的包裹编号
答案 1 :(得分:138)
如其他答案所述,您可以使用--filter
选项限制已安装的软件包:
android update sdk --filter ...
其他答案没有提及您可以使用常量字符串标识符代替过滤器选项的索引(将更改)。这对无人参与或脚本安装很有帮助。 --filter
选项的人:
...这也接受&#39; list sdk --extended&#39;返回的标识符。
android list sdk --all --extended
:
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 update sdk --filter tools,platform-tools,build-tools-19.0.3
等
答案 2 :(得分:65)
版本25.2.3(及更高版本)的updateArray
包中包含新工具 - sdkmanager - 这简化了从命令行安装构建工具的任务。
它位于Android SDK Tools
文件夹中。
用法(来自documentation):
android_sdk/tools/bin
sdkmanager packages [options]
参数是一个SDK风格的路径,用引号括起来(for 例如,packages
或"build-tools;25.0.0"
)。您可以 传递多个包路径,用空格分隔,但它们必须 每个都用自己的引号括起来。
示例用法(在我的Mac上):
"platforms;android-25"
您还可以指定各种options,例如强制所有连接使用HTTP(alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/
25.0.0/
alex@mbpro:~/sdk/tools/bin$ ./sdkmanager "build-tools;25.0.2"
done
alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/
25.0.0/ 25.0.2/
),或者使用代理服务器(--no_https
和--proxy_host=address
)。
要检查可用选项,请使用--proxy_port=port
标志。在我的机器(Mac)上,输出如下:
--help
答案 3 :(得分:54)
ADB Build-Tools不会自动下载,通过命令android update sdk --no-ui
所以安装Buil-Tool类型(在控制台中):
android list sdk --all
记住在项目之前列出的数字并执行以下内容:
android update sdk -u --all --filter <number>
命令应该输入/ YourFolder / android-sdk-linux / tools
同样对于远程文件夹(例如由ssh打开的服务器),输入:
**./android** list sdk --all
**./android** update sdk -u --all --filter <number>
对于简单的ADB包列表,请在终端输入:
android list sdk
安装所有包:
android update sdk --no-ui
或使用过滤器(逗号为分隔符):
android update sdk --no-ui --filter 3,5,8,14
答案 4 :(得分:32)
我尝试从命令行安装Android SDK时遇到的一个很好的信息来源是this Dockerfile。在Dockerfile中,您可以看到作者执行单个命令来安装platform tools
和build tools
而无需任何其他交互。在OP提出的情况下,该命令将适用于:
echo y | $ANDROID_HOME/tools/android update sdk --all --filter build-tools-21.1.0 --no-ui
答案 5 :(得分:21)
我刚刚通过命令行安装了android sdk依赖项,因为工具和网络附带的文档非常缺乏,我想我会发布我在这里发现的内容。
我与android sdk r24.4.1
合作linux
。您可以运行两个命令来列出可用的包:
android list sdk
更详尽:
android list sdk --all
特定包装的包装编号因上述每个命令而异!例如,前者将包API 23.1 revision 3
列为包#3
,后者将其列为#29
。
现在,使用android命令安装有两种不同的方法。
tools/android update sdk --no-ui --filter <package number>
和
tools/android update sdk -u -a -t <package number>
鉴于每个安装命令都可以将包#作为参数,您使用哪个包号?经过大量的在线搜索和反复试验,我发现了
android update sdk --no-ui --filter
使用android list sdk
和
android update sdk -u -a -t
使用android list sdk --all
换句话说 - 要安装API 23.1 revision 3
,您可以执行以下任一操作:
android update sdk --no-ui --filter 3
或
android update sdk -u -a -t 29
疯狂,但它确实有效。
答案 6 :(得分:20)
大部分的答案似乎忽略了一个事实,你可能需要在一个没有超级用户权限的无头环境,这意味着脚本必须回答所有Settings settings = ImmutableSettings.settingsBuilder()
.put("cluster.name", cluster)
.put("client.transport.ping_timeout", "20s")
.build();
this.client =
new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress(host, port));
许可证自动提示运行更新。
这是诀窍的例子。
y/n
无论你得到多少提示,所有这些都会得到回答。这个FILTER=tool,platform,android-20,build-tools-20.0.0,android-19,android-19.0.1
( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
| android update sdk --no-ui --all \
--filter ${FILTER}
循环看起来像yes命令的模拟,实际上它是几乎。这个问题while/sleep
是它洪水泛滥了标准输出yes
而且事实上发送我不得不处理有任何形式的超时选项这些字符的版本之间没有延迟。它将污染&#34;污染&#34; stdout和脚本将失败抱怨输入错误。解决方案是在将'y'
发送到标准输出之间设置延迟,这恰恰是'y'
组合所做的。
while/sleep
是默认不可用在某些Linux发行版,我没有办法安装它作为我的CI脚本的一部分,所以只好用最通用的解决方案,没有什么能比简单的bash脚本更通用,对吗?
事实上,我在博客上发表了这篇文章(NSBogan),如果您有兴趣,请查看更多详情。
答案 7 :(得分:12)
不建议使用“ 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
或
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)并解压缩
故障排除:
如果看到Warning: Could not create settings
,则需要将tools
目录放在ANDROID_HOME的cmdline-tools
目录中(如果需要,请使用此确切名称创建),请参见Android Command line tools sdkmanager always shows: Warning: Could not create settings
答案 8 :(得分:10)
如果您安装了sdkmanager
(我使用MAC)
运行sdkmanager --list
列出可用的包。
如果要安装构建工具,请从可用软件包列表中复制首选版本。
安装首选版本
sdkmanager "build-tools;27.0.3"
答案 9 :(得分:8)
然而,它在运行时太慢了
是的,我遇到了同样的问题。一些文件下载非常慢(或者至少它们已经过去几天)。如果你想下载所有内容,你可以做很多事情。
结果是文件夹构建工具中没有任何东西,我想要的是aapt和apkbuilder,因为我想在没有ant的情况下从命令行构建apk。
你让它完成了吗?
您可以做的一件事是使用-t
开关过滤正在下载的软件包。
例如:
tools/android update sdk --no-ui -t platform-tool
有一天,当我尝试安装版本18.0.0的构建工具时。出于某种原因,此过滤器不包含最新版本18.0.1,获得它的唯一方法是使用--all
开关安装所有内容。
答案 10 :(得分:5)
我更喜欢放置一个安装我的依赖项的脚本
类似的东西:
document.addEventListener("DOMContentLoaded", function(event) {
Label.prototype = new google.maps.OverlayView();
});
https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh
答案 11 :(得分:4)
受@ i4niac&amp;的回答启发@AurélienLambert,这就是我想出来的
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
命令结果中构建工具包的索引(忽略过时的包)。答案 12 :(得分:4)
我刚遇到这个问题,所以我终于通过阅读和解析可用工具列表来编写了一行bash脏解决方案:
tools/android update sdk -u -t $(android list sdk | grep 'Android SDK Build-tools' | sed 's/ *\([0-9]\+\)\-.*/\1/')
答案 13 :(得分:2)
Nate在https://stackoverflow.com/a/19416222/1104031帖子中说,默认情况下无法自动下载构建工具。
但是我写了一个小工具,为你做了一切
我在https://stackoverflow.com/a/17863931/1104031帖子中使用了“expect”工具作为danb。
您只需要android-sdk和python27
,expect
。
此脚本将安装所有构建工具,所有sdks以及自动构建所需的一切:
import subprocess,re,sys
w = subprocess.check_output(["android", "list", "sdk", "--all"])
lines = w.split("\n")
tools = filter(lambda x: "Build-tools" in x, lines)
filters = []
for tool in tools:
m = re.search("^\s+([0-9]+)-", tool)
tool_no = m.group(1)
filters.append(tool_no)
if len(filters) == 0:
raise Exception("Not found build tools")
filters.extend(['extra', 'platform', 'platform-tool', 'tool'])
filter = ",".join(filters)
expect= '''set timeout -1;
spawn android update sdk --no-ui --all --filter %s;
expect {
"Do you accept the license" { exp_send "y\\r" ; exp_continue }
eof
}''' % (filter)
print expect
ret = subprocess.call(["expect", "-c", expect])
sys.exit(ret)
答案 14 :(得分:2)
从developer.android.com下载android SDK(对于Windows操作系统,当前为149mb文件)。值得注意的是,android删除了sdkmanager GUI,但是在tools文件夹内的bin文件夹中有sdkmanager的命令行版本。
sdkmanager
,然后按Enter。--
(空格),双连字符(sdkmanager --list
),类型列表
short
(此列表列出了SDK管理器中的所有软件包)有关更多参考,请遵循官方文档here
我希望这会有所帮助。 :)
答案 15 :(得分:1)
我试过这个以进行全部更新,并且有效!
echo y | $ANDROID_HOME/tools/android update sdk --no-ui
答案 16 :(得分:1)
如其他响应中所述,构建工具需要安装--all
标志。您还最好使用-t
过滤器标志来避免安装所有包,但无法过滤所有构建工具。
在AOSP错误跟踪器中已经有对这两点的功能请求。随意投票给他们,这可能会让他们有一天发生:
答案 17 :(得分:0)
在不安装整个 android studio 的情况下设置 android 环境:
答案 18 :(得分:0)
尝试
1。列出所有套餐
android list sdk --all
2. 使用以下命令
安装软件包android update sdk -u -a -t package1, package2, package3 //comma seperated packages obtained using list command
答案 19 :(得分:-1)
android update sdk
此命令将更新并安装SDK Tools,Build Tools,SDK平台工具的所有最新版本。
这对我有用。