自動(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 tools
和sdk
摹量,這個(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: version
GLIBC_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
的安裝