[英]How to install old version of Android build tools from command line?
我正在安裝 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 安裝
假設您已經下載了適用於 linux 的 Android SDK,您有兩個選項可以從命令行進行更新。
使用android工具從 sdk 下載
除了使用 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
要下載特定軟件包,您需要在以下命令的列表中指定要安裝的項目編號:
$ ./tools/android update sdk -u -a -t [NO_OF_ITEM_TO_BE_INSTALLED]
示例:如果我想安裝 Android SDK 構建工具修訂版 23.0.1,我將輸入:
$ ./tools/android update sdk -u -a -t 7
手動下載
由於在執行android sdk list
時並未列出每個包(尤其是舊包),因此您也可以手動下載內容。 您可以手動打開在android sdk list
期間顯示的 XML 文件 - 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
旁注(ubuntu):
如果您運行的是 debian/ubuntu 64 位,要運行aapt
您需要安裝其他軟件包:
sudo apt-get install lib32stdc++6
sudo apt-get install lib32z1
如果您正在運行 CentOs (RedHat),要運行aapt
您將需要安裝其他軟件包:
sudo yum install zlib.i686 libstd++.i686
在運行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
您想要的是能夠在命令行中獲得與 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
….
您可以使用 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)
最后,通過在此命令中提供其索引號來安裝所需的包。
[rgulia@xinu ~]$ android update sdk -u -a -t 5
這些選項具有以下含義:
-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
回答我自己的問題,我剛剛發現實現我的目標的最佳方法之一是使用Jake Wharton 的 SDK 管理器 Gradle 插件。
就像添加 Gradle 插件一樣簡單。 任何必需的 SDK 包都將按需安裝到local.properties
指定的 SDK 位置。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+'
}
}
apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'
這種方法非常有效,尤其是在無頭 CI 環境中。 只是不要忘記添加ANDROID_HOME
環境變量,以防萬一您還沒有local.properties
(這很可能發生在 CI 環境中)
基於: 如何在命令行安裝Android SDK Build Tools? 其他人是我的版本:
#!/bin/bash -e
installAndroidSdk() {
local url=http://dl.google.com/android/android-sdk_r24.3-linux.tgz
sudo apt-get install -y lib32stdc++6 lib32z1
# Install android SDK
(
cd /opt
curl -o android.tgz -sL $url
tar xzf android.tgz
mv android-sdk-linux/ android
rm android.tgz
echo "export ANDROID_HOME=/opt/android" > /etc/profile.d/android.sh
echo "export PATH=\$PATH:\$ANDROID_HOME/tools:\$ANDROID_HOME/platform-tools" >> /etc/profile.d/android.sh
source /etc/profile.d/android.sh
android list sdk --all --extended > /tmp/android-skds
modules=( platform-tools build-tools-22.0.1 android-22 )
for module in ${modules[@]}; do
moduleId=$(less /tmp/android-skds | sed -n "s/id: \(.*\) or \"$module\"/\1/p")
if [[ ! -z "$moduleId" ]]; then
expect -c "
set timeout -1 ;
spawn android update sdk -u -a -t $moduleId;
expect {
\"Do you accept the license\" { exp_send \"y\r\" ; exp_continue }
eof
}
"
else
echo "[WARNING] - $module was not installed."
fi
done
echo "export PATH=\$PATH:\$ANDROID_HOME/build-tools/22.0.1" | sudo tee -a /etc/profile.d/android.sh
rm -f /tmp/android-skds
sudo apt-get install -y android-tools-adb
)
return $?
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.