使用命令行“徒手”開發(fā)安卓項目

引言

Eclipse+ADT或者是Android Studio可以幫助我們快速建立項目,然而也正是因為如此,造成了自學(xué)者不求甚解的現(xiàn)象。比如,你能詳細(xì)道出安卓項目中每個文件的作用及其相互包含關(guān)系嗎?你知道R.layout.main,R.id.button等等中的R怎么來的嗎?為了知其所以然,我們很有必要通過命令行工具去徒手開發(fā)一個安卓項目。

創(chuàng)建安卓項目

在命令行窗口輸入以下命令:

android create project -n PictureBrowse -t android-21 -p PictureBrowse -k com.golfer.PictureBrowse -a PictureBrowse

按下回車鍵后即可生成一個符合要求的安卓項目

提示:

1.-n(name的縮寫)用于指定項目名稱;-t用于指定安卓系統(tǒng)版本(詳解參考附錄);-p用于指定項目的保存路徑(如果沒有交代父目錄,則會新建文件夾PictureBrowse并保存在當(dāng)前文件夾下);-k指定包名(包名決定了src文件夾內(nèi)嵌的文件夾,比如上面的例子,src文件夾中就會包含com文件夾,com文件夾又包含golfer文件夾,golfer文件夾又包括PictureBrowse文件夾);-a指定Activity的名稱。

2.使用android命令的前提是Sdk目錄下的platform-tools及tools的路徑已經(jīng)添加到path環(huán)境變量中,否則cmd會報錯。


附:關(guān)于安卓系統(tǒng)版本

Sdk的安裝目錄下有一個子目錄:platforms,它里面包含了已配備的安卓系統(tǒng)版本,打開后會發(fā)現(xiàn)里面是命名為android-21、android-24之類的文件夾。如果沒有配備android-19版本,而你把Compile Sdk Version設(shè)置為android-21(命令行中通過-t選項設(shè)置),則編譯項目時會報錯。其實這里的19、21、24表示的是API的版本。


項目文件解析

項目創(chuàng)建完畢后,打開PictureBrowse文件夾,可以看到如下子文件夾:

src文件夾保存負(fù)責(zé)業(yè)務(wù)實現(xiàn)的java源碼

res(resources的縮寫)是資源文件夾,其中的values子夾保存著字符串資源(strings.xml)、顏色資源(colors.xml)等;layout子夾保存布局文件(剛創(chuàng)建時只有一個以Activity的名稱命名的xml布局文件(如例子為PictureBrowse.xml),但其實我們可以增加很多布局文件,比如我們在layout下增加main.xml,然后我們只需在負(fù)責(zé)主線程的java文件(即剛創(chuàng)建時就存在的java文件)中的onCreate函數(shù)中添加如下代碼:setContentView(R.layout.main),就可以把main.xml中的布局顯示出來);drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi分別保存低、中、高、超高分辨率的圖片(圖片名稱需以字母開始,引用方式為:R.drawable-ldpi.圖片名,注意使用android studio創(chuàng)建的項目不區(qū)分ldpi、mdpi、hdpi、xhdpi)。

AndroidMainfest.xml用于控制應(yīng)用名稱、圖標(biāo)、訪問權(quán)限等整體屬性。

項目調(diào)試及運行

寫好代碼后,我們就可以進(jìn)行編譯以及生成apk并安裝了。這時候需要用到ant工具。ant命令有如下選項:

ant debug 生成用于調(diào)試的apk包

ant release 生成用于發(fā)布的apk包

ant install 將apk包安裝到Emulator模擬器(常用的有AVD((Android Virtual Devices)、Genymotion等)上

注意:

1.使用ant命令的條件:

下載了ant工具并且正確設(shè)置了JDK_HOME、ANT_HOME這兩個環(huán)境變量的值(它們的值分別是JDK、Ant的安裝路徑);

ant目錄下的bin的路徑已添加到環(huán)境變量path之中。

2.執(zhí)行ant命令時必須先切換至項目所在的目錄(比如例子中要切換至PictureBrowse目錄),這是因為我們必須指定對哪一個項目進(jìn)行生成,這里涉及到子夾build.xml的作用,此處省略)

R文件究竟是什么?

項目生成后,在項目目錄下會增加如下子目錄:bin、gen

其中g(shù)en文件夾就保存著R.java文件

R.java文件中定義了類R,里面包含很多內(nèi)部類(其實每種資源對應(yīng)一個內(nèi)部類),比如layout內(nèi)部類、strings內(nèi)部類、colors內(nèi)部類、id內(nèi)部類等。所以現(xiàn)在我們應(yīng)該可以理解R.layout.main、R.id.root是什么意思了吧。R文件相當(dāng)于資源字典,我們可以通過它引用各種資源,比如要在ImageView組件中顯示名為ic_launcher的圖片,就可以鍵入如下代碼:imageview.setImageResources(R.drawable-mdpi.ic_launcher)。這里還要指出的是R.id.root、R.drawable.ic_launcher的類型是int,因此面對以下代碼不要覺得很難理解:

int[] picture=new int[]{R.drawable.ic_launcher,R.drawable.image1,R.drawable.image2,}

初學(xué)者使用Android Studio時經(jīng)常遇到的一個問題是R文件缺失,造成缺失的原因往往是代碼復(fù)制時R文件沒有自動生成,解決辦法為:先Clean Project,再Rebuild Project.

這篇文章都是自己閱讀《Android瘋狂講義》前部分內(nèi)容后的體會,難免存在紕漏、不足乃至錯誤,期待與諸位共同交流!----陳光科(2016.09.13)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,627評論 2 380

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,765評論 25 708
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,495評論 0 17
  • 網(wǎng)上曾經(jīng)流行一句很抒情的話,“人的一生會遇到兩個人,一個驚艷了時光,一個溫柔了歲月”。我承認(rèn),這句話無論是聽起來或...
    淘十七閱讀 284評論 2 2
  • 前言 限于AppStore的審核機(jī)制,蘋果應(yīng)用審核通常需要一段時間。這對某些應(yīng)用開發(fā)迭代比較快的公司來說,往往上一...
    大慈大悲大熊貓閱讀 786評論 5 2