Android构建工具安装的问题

我想从命令行建立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中什么都没有,我需要的是aapt和apkbuilder,因为我想从没有ant的命令行构建apk。

最佳解决方法

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

android list sdk --all

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

android update sdk -u -a -t

-u代表--no-ui,-a代表--all和-t代表--filter。

如果需要安装多个软件包,则:

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

其中1,2,..,n是上面list命令列出的包号

次佳解决方法

跟其他答案提到的一样,可以使用--filter选项来限制已安装的软件包:

android update sdk --filter ...

其他答案没有提到是:可以使用常量字符串标识符,而不是过滤器选项的索引。这对自动或脚本化安装很有帮助。 --filter选项:

... This also accepts the identifiers returned by 'list sdk --extended'.

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

然后,可以使用字符串ids作为过滤器选项来精确指定所需的版本:

android update sdk --filter tools,platform-tools,build-tools-19.0.3等

第三种解决方法

ADB Build-Tools不会自动下载,需要通过命令android update sdk --no-ui

首先,在控制台输入命令:

android list sdk --all

然后,记住内容之前列出的编号并执行以下操作:

android update sdk -u --all --filter

命令应该在/YourFolder/android-sdk-linux/tools输入

对于远程文件夹(例如ssh打开的服务器)也可以输入:

**./android** list sdk --all

**./android** update sdk -u --all --filter

要获取ADB包的简单列表,在终端输入:

android list sdk

要安装所有软件包:

android update sdk --no-ui

或使用过滤器(其中逗号分隔符):

android update sdk --no-ui --filter 3,5,8,14

第四种方法

Android SDK Tools包的版本25.2.3(以及更高版本)包含一个新工具-sdkmanager - 它简化了从命令行安装build-tools的任务,位于android_sdk/tools/bin文件夹中。

sdkmanager packages [options]

The packages argument is an SDK-style path, wrapped in quotes (for example, "build-tools;25.0.0" or "platforms;android-25"). You can pass multiple package paths, separated with a space, but they must each be wrapped in their own set of quotes.

用法示例(在Mac上):

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/

还可以指定各种options,例如强制所有连接使用HTTP(--no_https),或者使用代理服务器(--proxy_host=address和--proxy_port=port)。

要检查可用选项,请使用--help标志。在我的机器(Mac)上,输出如下:

alex@mbpro:~/sdk/tools/bin$ ./sdkmanager --help

Usage:

sdkmanager [--uninstall] [] \

[--package_file ] [...]

sdkmanager --update []

sdkmanager --list []

In its first form, installs, or uninstalls, or updates packages.

is a sdk-style path (e.g. "build-tools;23.0.0" or

"platforms;android-23").

is a text file where each line is a sdk-style path

of a package to install or uninstall.

Multiple --package_file arguments may be specified in combination

with explicit paths.

In its second form (with --update), currently installed packages are

updated to the latest version.

In its third form, all installed and available packages are printed out.

Common Arguments:

--sdk_root=: Use the specified SDK root instead of the SDK containing this tool

--channel=: Include packages in channels up to .

Common channels are:

0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary).

--include_obsolete: With --list, show obsolete packages in the

package listing. With --update, update obsolete

packages as well as non-obsolete.

--no_https: Force all connections to use http rather than https.

--proxy=: Connect via a proxy of the given type.

--proxy_host=: IP or DNS address of the proxy to use.

--proxy_port=: Proxy port to connect to.

* If the env var REPO_OS_OVERRIDE is set to "windows",

"macosx", or "linux", packages will be downloaded for that OS.

第五种方法

尝试从命令行安装所有Android SDK相关的东西时,一个很大的信息来源是this Dockerfile。在Docker文件中可以看到,作者执行单个命令来安装platform tools和build tools,而无需任何其他交互。在OP提出的情况下,该命令将适用于:

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

第六种方法

大多数答案似乎都忽略了这样一个事实:可能需要在没有超级用户权限的无头环境中运行更新,这意味着脚本必须自动回答所有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}

无论您收到多少提示,所有这些都将被自动回答。该while/sleep循环看起来像yes命令的仿真。 yes的问题在于大量的'y'输出到stdout,并且在输出这些字符之间几乎没有任何延迟,所以不得不处理没有任何超时选项的版本。解决方案是在输出'y'加入延迟,这正是while/sleep组合所做的工作。

expect在某些linux发行版中默认不可用,因为没法将其作为CI脚本的一部分进行安装,所以不得不使用最通用的解决方案,没有什么比简单的bash脚本更通用。

事实上,这里有一篇博客(NSBogan),可以参阅更多细节。

本文摘录翻译自:

androidsdktools安装_如何命令行安装Android SDK Build Tools(构建工具)?相关推荐

  1. linux android build tools,build.gradle 文件中的 Android SDK Build Tools version

    build.gradle 文件中的 Android SDK Build Tools version Android,Gradle,SDK 2018.07.17 在 Android Gradle Plu ...

  2. Unity3D安装:从命令行安装 Unity

    推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 从命令行安装 Unity 如果要在组织中自动部署 Unity,可以从命令行安装 Editor 和其他组件.这些组件 ...

  3. Linux使用笔记:Oracle数据库安装配置(命令行安装)

    文章目录 1. Oracle数据库安装配置 1.1. 安装准备 1.2. 修改内核参数 1.3. 创建安装用户和目录 1.4. 修改配置文件 1.5. 开始安装 1.5.1. 上传安装包 1.5.2. ...

  4. android sdk build tools 版本,SDK Build Tools 版本说明

    Android SDK Build-Tools 是构建 Android 应用所需的一个 Android SDK 组件,安装在 /build-tools/ 目录中. 您应始终让 Build Tools ...

  5. Ubuntu18.04安装sagemath(命令行安装,超方便)

    Ubuntu果然是易用的,不像网上那么多编译源码sagemath的教程,直接一行命令就解决! sudo -i apt update apt-get update apt install sagemat ...

  6. mac电脑macOS常用软件必备软件命令行安装,史上最全mac插件2

    mac电脑macOS常用软件必备软件命令行安装,史上最全mac插件1见博客链接 mac电脑macOS常用软件必备软件命令行安装,史上最全mac插件  是我的第一篇文章,非常全,不敢轻易编辑.你懂的.. ...

  7. Ubuntu 14.04使用命令行安装VirtualBox

    Ubuntu 14.04使用命令行安装VirtualBox 基本安装命令: #sudo sh -c 'echo "deb http://download.virtualbox.org/vir ...

  8. mysql命令行安装报错_centos命令行安装mysql随机密码查看方法(遇到问题及其解决办法)...

    mysql初次命令行安装登录时报错: 未输入密码:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwo ...

  9. websphere7 linux 命令行安装(静默安装)

    1 登陆root用户,解压该安装包 was.cd.70011.trial.base.opt.linux.ia32.tar.gz 2.编辑配置文件responsefile.nd.txt. respons ...

最新文章

  1. C6678-SRIO和FPGA的通信
  2. python程序员需要掌握哪些技术-高级的python 后端程序员, 应该掌握哪些技能点 ?...
  3. If you study Math, Physics and Chemistry well, you will be the strongest of the world and the truth
  4. 重磅 | AI 圣经 PRML《模式识别与机器学习》官方开源了!
  5. oraclf 复杂查询练习_SQL复杂查询—练习(四)
  6. java 8 lambda_玩Java 8 – Lambda,路径和文件
  7. c语言 static的用法
  8. impala和mysql语法,impala CREATE TABLE语句
  9. (node:2612) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
  10. pycharm安装scrapy失败_大数据开发神器——Scrapy 框架(读懂Spider流程图)
  11. 图解deconvolution(transpose convolution)
  12. Canon imageRUNNER 2525i打印机驱动通过IP地址进行安装
  13. 简单理解t检验与秩和检验
  14. LSDB和SPF算法
  15. ALOHA协议(纯ALOHA协议:想发就发;时隙ALOHA协议:控制想发就发的随意性)
  16. OSPF配置及MD5验证
  17. python判断生肖
  18. CentOS8下载及设置安装源(最新设置)
  19. go (golang) DNS域名解析实现
  20. java括号用法_Java双括弧使用技巧

热门文章

  1. [代码]ural 1655 Somali Pirates
  2. CALL TRANSACTION - bdc_options
  3. mysql 动态传入表名 存储过程_面试再问MySQL存储过程和触发器就把这篇文章给他...
  4. linux eclipse java_实验一 Java开发环境的熟悉(Linux + Eclipse)
  5. 【学习笔记】Tableau基础介绍
  6. PP模块: 最简单的混合生产方式
  7. 使用特殊的技术更新数据库(ABAP)
  8. 汽车需要镀晶吗?镀晶是起什么作用的?
  9. ABAP门派现状报告
  10. MM--关于STO步骤和配置