打造一個(gè)全命令行的Android構(gòu)建系統(tǒng)

"IDE都是給小白程序員的接奈,大牛級別的程序員一定是命令行控,終端控通孽,你看大牛都是使用vim,emacs 就一切搞定"

這話說的雖然有些絕對序宦,但是也不無道理,做開發(fā)這行要想效率高背苦,自動(dòng)化還真是缺少不了命令行工具互捌,因?yàn)橹挥忻钚胁攀亲罴训娜藱C(jī)交互工具。其實(shí)IDE也是底層也是調(diào)用命令行工具而已行剂,只不過給普通開發(fā)者呈現(xiàn)一個(gè)更友好的開發(fā)界面秕噪。這里可不是宣揚(yáng)讓大家放棄IDE都改命令行,只是每種事物都有他存在的理由厚宰,無論是編程語言還是工具都是一個(gè)原則 “沒有最好的腌巾,只有最合適的”。

前一段時(shí)間做一個(gè)人產(chǎn)品 http://www.xbext.com ,發(fā)布產(chǎn)品的時(shí)候?yàn)榱私y(tǒng)計(jì)各渠道流量免不了要構(gòu)建不通的渠道包澈蝙,你懂得國內(nèi)渠道上百個(gè)吓坚,靠IDE編譯打包非吐血不可。這些重復(fù)勞動(dòng)最適合交個(gè)程序來做灯荧,很多程序員想不明白這個(gè)問題礁击,寧愿把大量的精力時(shí)間花在業(yè)務(wù)上,卻不知道用工具提高工作效率漏麦。在這里寫一篇簡單的教程客税,告訴大家怎么脫離IDE環(huán)境完成一個(gè)android項(xiàng)目的編譯構(gòu)建,有了這基礎(chǔ)開發(fā)什么自動(dòng)化構(gòu)建工具都不是什么難事了, 前一陣子做的一個(gè)打包html5應(yīng)用的在線工具AppBuilder就是基于命令行構(gòu)建完成的撕贞。

說到命令行自然是不需要圖形界面更耻,所以Android SDK的安裝下載自然都是在終端上進(jìn)行。下面是本文中使用的一些SDK和基本環(huán)境捏膨。

  • ubuntu server 14.04 (64位)
  • JDK 1.7
  • android-sdk_r24.0
  • gradle-2.2.1

進(jìn)入正題秧均,接下來一步一步介紹如何安裝配置一個(gè)命令行下的編譯構(gòu)建系統(tǒng).

step 1 安裝 JDK 環(huán)境

配合android的JDK最好選用JDK官方版本而不是Open JDK,下面是在unbuntu下安裝JDK 1.7的方法。

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

step 2 安裝 Android SDK

android sdk 工具包的一些命令行工具是基于32位系統(tǒng)的号涯,在64為平臺運(yùn)行32程序必須安裝 i386 的一些依賴庫,方法如下:

    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1

安裝完成32位的依賴庫后目胡,我們使用wget 去官方下載最新的linux下android SDK包。

    cd ~
    wget http://dl.google.com/android/android-sdk_r24.0.1-linux.tgz
    tar xvzf android-sdk_r24.0.1-linux.tgz

編輯 .profile 或者 .bash_profile 把下面的目錄增加到 path的搜索路徑中链快,確保android SDK的的一些命令工具可以直接在終端使用誉己,比如 adb 命令。

    ANDROID_HOME=$HOME/android-sdk-linux
    export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools"
    export ANDROID_HOME

使環(huán)境變量生效

    source ~/.profile

環(huán)境變量生效后域蜗,你可以使用android命令 列出sdk相關(guān)的列表巨双,以便我們選擇和自己項(xiàng)目匹配的SDK版本。(剛才只是安裝了最基礎(chǔ)的SDK霉祸,要完全滿足你的開發(fā)環(huán)境需要還得從下面的列表中選擇你需要的SDK和工具更新下載)

android list sdk --all

輸出如下所示:

   1- Android SDK Tools, revision 24.0.1
   2- Android SDK Platform-tools, revision 21
   3- Android SDK Build-tools, revision 21.1.2
   4- Android SDK Build-tools, revision 21.1.1
   5- Android SDK Build-tools, revision 21.1
   6- Android SDK Build-tools, revision 21.0.2
   7- Android SDK Build-tools, revision 21.0.1
   8- Android SDK Build-tools, revision 21
   9- Android SDK Build-tools, revision 20
  10- Android SDK Build-tools, revision 19.1
  11- Android SDK Build-tools, revision 19.0.3
  12- Android SDK Build-tools, revision 19.0.2
  13- Android SDK Build-tools, revision 19.0.1
  14- Android SDK Build-tools, revision 19
  15- Android SDK Build-tools, revision 18.1.1
  16- Android SDK Build-tools, revision 18.1
  17- Android SDK Build-tools, revision 18.0.1
  18- Android SDK Build-tools, revision 17
  19- Documentation for Android SDK, API 21, revision 1
  20- SDK Platform Android 5.0.1, API 21, revision 2
  21- SDK Platform Android 4.4W.2, API 20, revision 2
  22- SDK Platform Android 4.4.2, API 19, revision 4
  23- SDK Platform Android 4.3.1, API 18, revision 3
  24- SDK Platform Android 4.2.2, API 17, revision 3
  ....

這里包括不同的Android API 版本和不同的構(gòu)建工具筑累,選擇你想要安裝項(xiàng)目的序號,這里我想安裝 build tools 19.1 ,build tools 21 及 android 4.2.2以上的SDK所以選擇序號 “1,2,3,20,21,22,23”

android update sdk -u -a -t  1,2,3,10,20,21,22,23

step 3 安裝gradle構(gòu)建環(huán)境

使用Ant構(gòu)建項(xiàng)目已經(jīng)是過去式了丝蹭,這里我們選用更加強(qiáng)悍和方便的構(gòu)建工具gradle 慢宗。

下載 grdle 二進(jìn)制包

cd ~
wget https://services.gradle.org/distributions/gradle-2.2.1-bin.zip

釋放到本地Home目錄,創(chuàng)建名字為"gradle"的符號鏈接,符號連接的好處是方便版本更新奔穿,有了新的版本直接修改符號鏈接即可镜沽。

 unzip gradle-2.2.1-bin.zip 
 ln -s gradle-2.2.1 gradle

配置gradle環(huán)境變量并使其生效,編輯 ~/.profje 文件增加下面內(nèi)容

GRADLE_HOME=$HOME/gradle
export PATH=$PATH:$GRADLE_HOME/bin

保存后使環(huán)境變量使其生效

source ~/.profile

環(huán)境變量生效后你可以在終端敲入'gradle'命令并運(yùn)行用以檢測gradle是否安裝成功。

gradle

如果安裝配置的沒有問題將會提示類似下面的信息

:help

Welcome to Gradle 2.2.1

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

BUILD SUCCESSFUL

驗(yàn)證是否可以編譯android 應(yīng)用

完成以上的環(huán)境配置巫橄,我們的一個(gè)Android下的基礎(chǔ)構(gòu)建環(huán)境就全部配置好了淘邻,接下來做的事情就是嘗試使用gradle 編譯一個(gè)android 應(yīng)用出來驗(yàn)證我的編譯環(huán)境是否OK,下載我寫的一個(gè)gadle demo 例子進(jìn)行測試。

git clone https://github.com/examplecode/gradle_demo
cd gradle_demo/hello-apk-with-gradle
gradle build

一切順利的話湘换,編譯完成后,你會在 “hello-apk-with-gradle/build/outputs/apk” 目錄下找到編譯好的apk包。至于如何整合到你自己的項(xiàng)目中去彩倚,只需要仿照例子給你的項(xiàng)目提供一個(gè)"gradle.build" 腳本即可筹我。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市帆离,隨后出現(xiàn)的幾起案子蔬蕊,更是在濱河造成了極大的恐慌,老刑警劉巖哥谷,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岸夯,死亡現(xiàn)場離奇詭異,居然都是意外死亡们妥,警方通過查閱死者的電腦和手機(jī)猜扮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來监婶,“玉大人旅赢,你說我怎么就攤上這事』蠡蹋” “怎么了煮盼?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長带污。 經(jīng)常有香客問我僵控,道長,這世上最難降的妖魔是什么鱼冀? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任报破,我火速辦了婚禮,結(jié)果婚禮上雷绢,老公的妹妹穿的比我還像新娘泛烙。我一直安慰自己,他們只是感情好翘紊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布蔽氨。 她就那樣靜靜地躺著,像睡著了一般帆疟。 火紅的嫁衣襯著肌膚如雪鹉究。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天踪宠,我揣著相機(jī)與錄音自赔,去河邊找鬼。 笑死柳琢,一個(gè)胖子當(dāng)著我的面吹牛绍妨,可吹牛的內(nèi)容都是我干的润脸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼他去,長吁一口氣:“原來是場噩夢啊……” “哼毙驯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灾测,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤爆价,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后媳搪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铭段,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年秦爆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了序愚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鲜结,死狀恐怖展运,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情精刷,我是刑警寧澤拗胜,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站怒允,受9級特大地震影響埂软,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纫事,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一勘畔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丽惶,春花似錦炫七、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抡秆,卻和暖如春奕巍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背儒士。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工的止, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人着撩。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓诅福,卻偏偏與公主長得像匾委,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子权谁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

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