使用新版android sdk tool 的 sdkmanager 安裝 android sdk 組件

25.2.3+sdk tools中胶逢,不僅sdk的gui更新工具用不了洒闸,$ANDROID_SDK_ROOT/tools目錄下的android.bat(Linux為shell)也變成了deprecated狀態(tài)池摧,官方推薦GUI界面使用studio集成管理器,命令行(使用場景:打包機或者CI系統(tǒng)中)界面使用$ANDROID_SDK_ROOT/tools/bin/sdkmanager.bat擎浴,參考官方文檔伦吠,來自己嘗試下。

假設現(xiàn)在要在自己的開發(fā)機上新安裝sdk惹骂,如果使用studio苏携,則需要翻墻,無法使用g.cn:80代理來加快速度对粪,或者干脆下載不了右冻。

從官方或者其他途徑下載到sdk tools,官方下載界面如下

sdk tools下載

相應的著拭,下載studio無sdk版本


studio下載

下載后解壓到D:\android\sdk\tools纱扭,開始使用sdkmanager,加上help參數(shù)儡遮,列出使用方式

cd D:\android\sdk\tools\bin
sdkmanager --help

基礎用法如下:

#列出已安裝和可用的包(包括已安裝的包)
sdkmanager --list [options]
#安裝包
sdkmanager packages [options]

packages參數(shù)為用--list參數(shù)輸出的可用的包的path乳蛾,官方叫做SDK-style path,例如安裝platform tools的方法:

sdkmanager "platforms;android-26"

如果要一次安裝多個包鄙币,可以使用--package_file參數(shù)指定包名配置文本文件肃叶,如下:

sdkmanager --package_file=package_file [options]

package_file文件內(nèi)容為SDK-style path,一行一個十嘿,沒有雙引號因惭,例如:

build-tools;23.0.1
build-tools;23.0.2
build-tools;23.0.3

刪除使用--uninstall參數(shù),例如:

sdkmanager --uninstall packages [options]
sdkmanager --uninstall --package_file=package_file [options]

更新已安裝的包

sdkmanager --update [options]

[options]參數(shù)列出了怎樣使用代理绩衷,強制使用http的方法蹦魔,具體如下:

選項 描述
--sdk_root=path 指定sdk根目錄
--channel=channel_id 指定更新頻道:0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary)
--include_obsolete 列出和更新包時是否包括已經(jīng)廢棄的包,和--list或--update同時使用
--no_https 強制使用http
--verbose 詳細輸出模式:錯誤唇聘、警告和完整信息
--proxy={http | socks} 代理方式用http或socks
--proxy_host={IP_address | DNS_address} 代理主機版姑,可以用IP地址,也可以用域名
--proxy_port=port_number 代理端口

想給其他操作系統(tǒng)下載sdk迟郎,可以設置環(huán)境變量REPO_OS_OVERRIDE剥险,值為windows, macosx, linux

使用代理g.cn:80,并且用http方式列出包信息:

sdkmanager --list --no_https --proxy=http --proxy_host=g.cn --proxy_port=80

為了防止每次都輸入一堆options參數(shù)宪肖,寫個bat腳本(shell腳本類似)表制,叫smeasy.bat吧健爬,內(nèi)容如下

@echo off
@rem %* 功能參數(shù),如:list update uninstall

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.

set SDK_MAN=%DIRNAME%sdkmanager.bat

set PARAM=

if "x%~1" == "x" goto execute

set PARAM=%*

:execute
%SDK_MAN% %PARAM% --no_https --proxy=http --proxy_host=g.cn --proxy_port=80

為了同步多臺機器的配置么介,最好寫個package_file娜遵,創(chuàng)建一個叫pack.txt的文件,里面填包名即可壤短,安裝時直接執(zhí)行

smeasy --package_file=pack.txt

使用--list參數(shù)列出包名時设拟,會有這種為了表格輸出有省略號的時候

list默認輸出

想列出完整包名,需要使用--verbose參數(shù)久脯,修改腳本最后一句為:

%SDK_MAN% %PARAM% --no_https --proxy=http --proxy_host=g.cn --proxy_port=80 --verbose

這樣就能列出完整的包名了纳胧,如下圖


完整包名

從圖中還能看到包之間有依賴關系,下載一個包時帘撰,其依賴的包也會被下載下來跑慕。

更新sdk tools時,發(fā)現(xiàn)失敗摧找,日志如下:

sdk tools更新失敗

經(jīng)過google核行,stackoverflow上已經(jīng)有解決辦法,需要使用--sdk_root參數(shù)指定另外的sdk根目錄(里面需要先放一個sdk tools)蹬耘,所以先copy一份sdk tools到另一個目錄D:\android\sdk_temp芝雪,然后把D:\android\sdk_temp\tools\bin\smeasy.bat腳本最后一句改為:

set SDK_ROOT=D:\android\sdk
%SDK_MAN% %PARAM% --no_https --proxy=http --proxy_host=g.cn --proxy_port=80 --verbose --sdk_root=%SDK_ROOT%

至此,腳本完成综苔。

完整版smeasy.bat腳本如下:

@echo off
@rem %* 功能參數(shù)绵脯,如:list update uninstall
set SDK_ROOT=D:\android\sdk
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.

set SDK_MAN=%DIRNAME%sdkmanager.bat

set PARAM=

if "x%~1" == "x" goto execute

set PARAM=%*

:execute
%SDK_MAN% %PARAM% --no_https --proxy=http --proxy_host=g.cn --proxy_port=80 --verbose --sdk_root=%SDK_ROOT%

對應的shell腳本smeasy.sh如下:

#!/bin/bash
DIRNAME=$PWD
SDK_MAN=$DIRNAME/sdkmanager
SDK_ROOT=$HOME/android/sdk

PARAM=
if [ $# -gt 0 ]
then
    PARAM=$*
fi

$SDK_MAN $PARAM --no_https --proxy=http --proxy_host=g.cn --proxy_port=80 --verbose --sdk_root=$SDK_ROOT

參考
sdk tools和studio下載地址:https://developer.android.com/studio/index.html#downloads
環(huán)境變量配置的變化:https://developer.android.com/studio/command-line/variables.html
sdkmanager配置說明:https://developer.android.com/studio/command-line/sdkmanager.html
sdk tools更新失敗解決辦法:https://stackoverflow.com/questions/43796568/cant-update-tools-android-sdk-command-line-tools-for-windows

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市休里,隨后出現(xiàn)的幾起案子蛆挫,更是在濱河造成了極大的恐慌,老刑警劉巖妙黍,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悴侵,死亡現(xiàn)場離奇詭異,居然都是意外死亡拭嫁,警方通過查閱死者的電腦和手機可免,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來做粤,“玉大人浇借,你說我怎么就攤上這事∨缕罚” “怎么了妇垢?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我闯估,道長灼舍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任涨薪,我火速辦了婚禮骑素,結果婚禮上,老公的妹妹穿的比我還像新娘刚夺。我一直安慰自己献丑,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布侠姑。 她就那樣靜靜地躺著阳距,像睡著了一般。 火紅的嫁衣襯著肌膚如雪结借。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天卒茬,我揣著相機與錄音船老,去河邊找鬼。 笑死圃酵,一個胖子當著我的面吹牛柳畔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播郭赐,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼薪韩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捌锭?” 一聲冷哼從身側響起俘陷,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎观谦,沒想到半個月后拉盾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡豁状,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年捉偏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泻红。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡夭禽,死狀恐怖鲫凶,靈堂內(nèi)的尸體忽然破棺而出箱歧,到底是詐尸還是另有隱情虐唠,我是刑警寧澤晤锥,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布仅财,位于F島的核電站,受9級特大地震影響村怪,放射性物質發(fā)生泄漏徽鼎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一酷麦、第九天 我趴在偏房一處隱蔽的房頂上張望矿卑。 院中可真熱鬧,春花似錦沃饶、人聲如沸母廷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琴昆。三九已至,卻和暖如春馆揉,著一層夾襖步出監(jiān)牢的瞬間业舍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工升酣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留舷暮,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓噩茄,卻偏偏與公主長得像下面,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绩聘,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容