如何从命令行安装旧版Android构建工具?

akh*_*khy 32 android build-tools android-sdk-tools

我正在安装android SDK来创建一个自动构建服务器.我遇到了一个问题,我管理的许多基于Gradle的Android项目依赖于不同的构建工具版本.一些项目仍然需要旧的构建工具版本(例如v19.1.0).

我的android-sdk软件包是在build-tools版本20刚刚发布时下载的,所以这是唯一可以下载的版本android update sdk -u --filter build-tools.

我试图调用android update sdk -u --filter build-tools-19.1.0但它没有用.有没有一种从命令行安装旧版Android构建工具的简单方法?

注意:无法通过GUI安装

wte*_*ela 62

假设您已经下载了适用于Linux的Android SDK,您可以从命令行进行更新.

从sdk 下载使用android工具

您可以选择在无头模式下运行,而不是使用GUI运行android sdk管理器.你只需要指定-u(或--no-ui)标志.

列出可用于安装或升级的软件包:

$ cd android-sdk-linux
$ ./tools/android list sdk --all
Refresh Sources:
  (...)
  Fetching URL: https://dl.google.com/android/repository/repository-11.xml
  (...)
Packages available for installation or update: 166
   1- Android SDK Tools, revision 24.4.1
   2- Android SDK Tools, revision 25.0.9 rc10
   3- Android SDK Platform-tools, revision 23.1
   4- Android SDK Platform-tools, revision 24 rc1
   5- Android SDK Build-tools, revision 24 rc1
   6- Android SDK Build-tools, revision 23.0.2
   7- Android SDK Build-tools, revision 23.0.1
   8- Android SDK Build-tools, revision 23 (Obsolete)
  (...)
 162- Google Play Billing Library, revision 5
 163- Google Play Licensing Library, revision 2
 164- Android Auto API Simulators, revision 1
 165- Google Web Driver, revision 2
 166- Intel x86 Emulator Accelerator (HAXM installer), revision 6.0.1
Run Code Online (Sandbox Code Playgroud)

要下载特定软件包,您需要在以下命令的列表中指定要安装的项目编号:

$ ./tools/android update sdk -u -a -t [NO_OF_ITEM_TO_BE_INSTALLED]
Run Code Online (Sandbox Code Playgroud)

示例:如果我想安装andorid sdk构建工具修订版23.0.1,我会输入:

$ ./tools/android update sdk -u -a -t 7
Run Code Online (Sandbox Code Playgroud)

手动下载

由于并非每个包都列出(特别是旧的包)android sdk list,您也可以手动下载.您可以手动打开期间时显示的XML文件android sdk list- https://dl.google.com/android/repository/repository-11.xml

您可以找到各种类型的东西下载链接,例如:

手动下载例如版本19.0.1的构建工具

$ cd android-sdk-linux/build-tools
$ wget http://dl.google.com/android/repository/build-tools_r19.0.1-linux.zip
$ unzip build-tools_r19.0.1-linux.zip
$ mv android-4.4.2 19.0.1
$ rm build-tools_r19.0.1-linux.zip
Run Code Online (Sandbox Code Playgroud)

旁注(ubuntu):

如果您正在运行debian/ubuntu 64位,要运行,aapt您需要安装其他软件包:

sudo apt-get install lib32stdc++6
sudo apt-get install lib32z1
Run Code Online (Sandbox Code Playgroud)

如果您正在运行CentOs(RedHat),要运行,aapt您需要安装其他软件包:

sudo yum install zlib.i686 libstd++.i686
Run Code Online (Sandbox Code Playgroud)

在运行时aapt,如果您在使用GLIBC 2.14时出错,并且您不想升级您的语言环境GLIBC.然后你需要为sdk(build-tool,platform-tool)下载以下软件包:

构建工具:http://dl.google.com/android/repository/build-tools_r23.0.2-linux.zip

平台工具:https://dl.google.com/android/repository/platform-tools_r23.0.1-linux.zip


rgu*_*lia 7

您想要的是能够在命令行中获得SDK Manager GUI的相同功能.

发出此命令以查询存储库中的所有可用包.查询将返回左侧带有索引号的包.

[rgulia@xinu ~]$ android list sdk --all 
Refresh Sources:
  Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml
  Validate XML
  Parse XML
  Fetched Add-ons List successfully
  …
  Validate XML: https://dl-ssl.google.com/android/repository/sys-img/x86/addon-x86.xml
  Parse XML:    https://dl-ssl.google.com/android/repository/sys-img/x86/addon-x86.xml
  Packages available for installation or update: 138
  1- Android SDK Tools, revision 24.1.2
  2- Android SDK Platform-tools, revision 22
  3- Android SDK Build-tools, revision 22.0.1
  4- Android SDK Build-tools, revision 22 (Obsolete)
  5- Android SDK Build-tools, revision 21.1.2
  ….
Run Code Online (Sandbox Code Playgroud)

您可以使用grep命令缩小搜索范围.例如:

[rgulia@xinu ~]$ android list sdk --all | grep -i tools | grep 21
   5- Android SDK Build-tools, revision 21.1.2
   6- Android SDK Build-tools, revision 21.1.1 (Obsolete)
   7- Android SDK Build-tools, revision 21.1 (Obsolete)
   8- Android SDK Build-tools, revision 21.0.2 (Obsolete)
   9- Android SDK Build-tools, revision 21.0.1 (Obsolete)
  10- Android SDK Build-tools, revision 21 (Obsolete)
Run Code Online (Sandbox Code Playgroud)

最后,通过在此命令中提供其索引号来安装所需的包.

[rgulia@xinu ~]$ android update sdk -u -a -t 5
Run Code Online (Sandbox Code Playgroud)

选项具有以下含义:

-u (--no-ui)  # Headless mode
-a (--all)    # Includes all packages, included the obsolete ones
-t (--filter) # in this example we have filtered by package index, i.e. 5 
Run Code Online (Sandbox Code Playgroud)