使用命令行+代理更新Android SDK

自動(dòng)化集成是當(dāng)前的主流趨勢(shì)义黎,一般配置自動(dòng)化集成環(huán)境都是采用Server版本,并沒(méi)有桌面環(huán)境(沒(méi)有UI)豁跑,之前寫了CentOS 安裝 Jenkins轩缤,還有Jenkins持續(xù)集成Android項(xiàng)目,下面就需要在Server上安裝Android SDK了,用來(lái)打包Android程序。

獲取SDK安裝包

獲取android-sdk-linux的安裝包贩绕,可以通過(guò)下面的命令直接獲取。

wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz

這個(gè)包有時(shí)候在下不需要翻墻也可以成功下載壶愤,如果下載不下來(lái)就需要翻墻下載了淑倾,再上傳到服務(wù)器上面,或者你的服務(wù)器可以直接翻墻征椒。(推薦一個(gè)國(guó)內(nèi)的鏡像網(wǎng)站http://tools.android-studio.org/index.php/sdk也可以在這個(gè)網(wǎng)站上下載)娇哆。
直接解壓安裝包:

tar zxvf android-sdk_r24.4.1-linux.tgz

安裝包解壓之后,就需要下載platform勃救,platform-tool以及Android SDK了碍讨。使用Android Studio是可以直接在SDK Manager下載的,但是Server上沒(méi)有UI,所以需要使用命令行更新了蒙秒。

android 命令

到andorid的安裝目錄里的tools目錄下勃黍,運(yùn)行命令:

android -h

 Usage:
   android [global options] action [action options]
   Global options:
  -s --silent     : Silent mode, shows errors only.
  -v --verbose    : Verbose mode, shows errors, warnings and all messages.
     --clear-cache: Clear the SDK Manager repository manifest cache.
  -h --help       : Help on a specific command.
...
-    sdk              : Displays the SDK Manager window.
-   list sdk          : Lists remote SDK repository.
...
- update sdk          : Updates the SDK by suggesting new platforms to install if available.
- update adb          : Updates adb to support the USB devices declared in the
                    SDK add-ons.

可以看到使用幫助中有update sdk,update adb的升級(jí)命令以及list sdk命令。
更新Android SDK主要用到兩個(gè)命令,一個(gè)是從服務(wù)器上獲取Android最新的可用SDK:

android list sdk

更新SDK的命令:

android update sdk

一般情況下我們不需要更新全部的SDK晕讲,只需要選擇性的更新部分SDK即可覆获,可以使用--filter參數(shù)马澈,來(lái)選擇要更新的SDK,還可以使用android update sdk --no-ui --all --force強(qiáng)制更新所有的SDK到電腦上弄息。
這里需要重點(diǎn)強(qiáng)調(diào)下--all參數(shù)痊班,開(kāi)發(fā)環(huán)境中不一定使用最新的SDK,有的時(shí)候就需要使用之前的build toolssdk摹量,這個(gè)時(shí)候可以使用參數(shù)--filter查到歷史的SDK:

android list sdk --all

列出所有的SDK,在選擇更新sdk的時(shí)候使用--filter選擇的時(shí)候也必須加上--all參數(shù)涤伐。
使用命令行更新比較麻煩的是遇到了個(gè)問(wèn)題: 一般更新Andorid SDK都是使用SDK Manager直接更新,而因?yàn)閴Φ膯?wèn)題dl-ssl.google.com/android無(wú)法使用。

使用代理更新SDK

真實(shí)情況是運(yùn)行命令android list sdk的時(shí)候缨称,都會(huì)卡在:

Fetching https://dl.google.com/android/repository/addons_list-2.xml

因?yàn)榇蠹叶贾赖脑騡oogle的服務(wù)是無(wú)法使用的凝果,還好Android SDK Manager命令提供了兩個(gè)代理參數(shù):

  • --proxy-host設(shè)置代理的host地址
  • --proxy-port設(shè)置代理的端口

可以通過(guò)代理使用國(guó)內(nèi)的Android鏡像,國(guó)內(nèi)的Android代理鏡像服務(wù)器:

http://mirrors.neusoft.edu.cn 端口:80
http://ubuntu.buct.edu.cn/ 端口:80
http://ubuntu.buct.cn/ 端口:80
http://sdk.gdgshanghai.com 端口:8000
IPv6: http://ubuntu.buct6.edu.cn/ 端口:80

使用代理查看SDK列表:

android list sdk --proxy-host ubuntu.buct.edu.cn --proxy-port 80 -s --all

 id: 1 or "doc-23"
 Type: Doc
 Desc: Documentation for Android SDK, API 23, revision 1
......

使用代理更新指定SDK:

android update sdk --no-ui --filter 1 --proxy-host ubuntu.buct.edu.cn --proxy-port 80 -s --all

這條命令會(huì)安裝id: 1 or "doc-23"Android 23的文檔 具钥。
安裝的時(shí)候會(huì)提示接受license:

Do you accept the license 'android-sdk-preview-license-52d11cd2' [y/n]:

選擇y同意之后才能繼續(xù)安裝豆村,等待安裝成功即可。
使用國(guó)內(nèi)的鏡像服務(wù)器安裝骂删,服務(wù)穩(wěn)定掌动,下載速度快,不需要翻墻宁玫。

  • 注:其中extra-android-m2repository粗恢,就是android的Support Libraries

可能會(huì)出現(xiàn)的錯(cuò)誤

  • 第一個(gè)可能會(huì)出現(xiàn)的錯(cuò)誤
 Cannot run program "/var/lib/jenkins/tools/android-sdk/build-tools/23.0.1/aapt": error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at com.android.builder.png.AaptProcess$Builder.start(AaptProcess.java:163)
    at com.android.builder.png.QueuedCruncher$1.creation(QueuedCruncher.java:106)
    at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:203)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:248)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 4 more
Thread(png-cruncher_2) has a null payload

因?yàn)槭褂胊apt是32位的欧瘪,不能在64位的系統(tǒng)上面運(yùn)行眷射,需要安裝對(duì)32位的支持。
CentOS安裝命令:sudo yum install libz.so.1
Ubuntu安裝命令:sudo yum apt-get install lib32z1

  • 第二個(gè)可能會(huì)出現(xiàn)的錯(cuò)誤
    這個(gè)錯(cuò)誤出現(xiàn)在build tools的版本為:25.0.0上面

/build-tools/25.0.0/aapt:** /lib64/libc.so.6: version GLIBC_2.14' not found (required by /var/lib/jenkins/tools/android-sdk/build-tools/25.0.0/aapt)/var/lib/jenkins/tools/android-sdk/build-tools/25.0.0/aapt: /lib64/libc.so.6: versionGLIBC_2.14' not found (required by /var/lib/jenkins/tools/android-sdk/build-tools/25.0.0/lib64/libc++.so) FAILED

該問(wèn)題出現(xiàn)的原因是因?yàn)?code>libc庫(kù)的版本低佛掖,CentOS 的libc版本為2.14妖碉,需要升級(jí)到CentOS 7才有支持GLIBC_2.14,如果不想升級(jí)CentOS,就需要自己編譯glibc 2.14,編譯的步驟:

wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure -prefix=/opt/glibc-2.14
make -j4
sudo make install
export LD_LIBRARY_PATH=/opt/glibc-2.14/lib

這樣就可以使用glibc 2.14了,但是aapt并沒(méi)有指定使用編譯的glibc-2.14芥被,指定aapt使用glibc-2.14就可以解決上面的問(wèn)題了欧宜。
首先將build tools中的aapt重命名為:aapt_

cd /path/to/build-tools
mv aapt aapt_

再新建一個(gè)腳本aapt用來(lái)指定glibc 2.14的環(huán)境變量,設(shè)置環(huán)境變量之后再啟動(dòng)重命名的aapt_拴魄,腳本為:

#!/bin/sh
echo "$0"_$@
export LD_LIBRARY_PATH=/opt/glibc-2.14/lib && "$0"_ $@

這樣就解決了上面的錯(cuò)誤冗茸,完成了Android SDK的安裝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市匹中,隨后出現(xiàn)的幾起案子夏漱,更是在濱河造成了極大的恐慌亡鼠,老刑警劉巖亏栈,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件随闽,死亡現(xiàn)場(chǎng)離奇詭異欧聘,居然都是意外死亡迅矛,警方通過(guò)查閱死者的電腦和手機(jī)逻澳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門兽埃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)板丽,“玉大人,你說(shuō)我怎么就攤上這事刹勃】昂睿” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵荔仁,是天一觀的道長(zhǎng)伍宦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)乏梁,這世上最難降的妖魔是什么次洼? 我笑而不...
    開(kāi)封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮遇骑,結(jié)果婚禮上卖毁,老公的妹妹穿的比我還像新娘。我一直安慰自己落萎,他們只是感情好亥啦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著练链,像睡著了一般翔脱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上媒鼓,一...
    開(kāi)封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天届吁,我揣著相機(jī)與錄音,去河邊找鬼绿鸣。 笑死疚沐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的潮模。 我是一名探鬼主播亮蛔,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼再登!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起晾剖,我...
    開(kāi)封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锉矢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后齿尽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體沽损,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年循头,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绵估。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炎疆。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖国裳,靈堂內(nèi)的尸體忽然破棺而出形入,到底是詐尸還是另有隱情,我是刑警寧澤缝左,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布亿遂,位于F島的核電站,受9級(jí)特大地震影響渺杉,放射性物質(zhì)發(fā)生泄漏蛇数。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一是越、第九天 我趴在偏房一處隱蔽的房頂上張望耳舅。 院中可真熱鬧,春花似錦倚评、人聲如沸浦徊。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辑畦。三九已至,卻和暖如春腿倚,著一層夾襖步出監(jiān)牢的瞬間纯出,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工敷燎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留暂筝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓硬贯,卻偏偏與公主長(zhǎng)得像焕襟,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饭豹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,160評(píng)論 25 707
  • afinalAfinal是一個(gè)android的ioc鸵赖,orm框架 https://github.com/yangf...
    passiontim閱讀 15,434評(píng)論 2 45
  • 明明想要靠近,卻總是一副無(wú)所謂的樣子拄衰。明明是在期盼它褪,見(jiàn)到后卻不敢向前。
    goldfish2017閱讀 240評(píng)論 0 0
  • 16歲翘悉,選擇一個(gè)人出國(guó)茫打,大概是我這輩子做的最勇敢的決定。 離開(kāi)家的那天,陽(yáng)光出奇的明媚老赤,爸媽把我送到機(jī)場(chǎng)轮洋,告訴我要...
    七七吶閱讀 765評(píng)論 0 4