做者:泥沙磚瓦漿木匠
網站:http://blog.csdn.net/jeffli1993
我的簽名:打算起手不凡寫出鴻篇巨做的人,每每堅持不了完成第一章節。html
交流QQ羣:【編程之美 365234583】http://qm.qq.com/cgi-bin/qm/qr?k=FhFAoaWwjP29_AonqzL0rpdQAjjqlHQQjava
若是個人幫到了你,是否樂意捐助一下或請一杯啤酒也好呢?有你支持,乾的更好~ android
點這參與衆籌 個人支付寶:13958686678 程序員
泥瓦匠又和你們見面了,在移動平臺幹過原生態開發,也幹過hybrid應用。能夠看看相關的文章 Android UI 。因此多多少少在這塊仍是有點了解。如今不少高級語言能夠開發app程序,包括Android,到我以爲目前Java語言開發Android程序仍是很火,很重要的。天然,Java的底子不可少。能夠看看泥瓦匠寫的很多基礎 Java Basic 。數據庫
咱們生活在一個通信的時代,我經歷過得2.5G時代,也就是GPRS等的時代,前面還有2G(GSM等)、1G,後面則你們熟悉的3G 4G的時代,明顯的顯示是下載速度的變化。Android則是一個這個時代通信的平臺系統。天然其中包括Android源自於PC系統的基礎,其功能包括所謂的內核系統、網絡、文件、2D、3D圖形、數據庫等。其中裏面咱們常常會使用其中的功能,他們組成了安卓(Andriod)。編程
本文提綱以下:小程序
1.2 淺析Android架構網絡
1.3 HelloWord的工程結構(★★★☆☆)架構
1.4 編譯中學習(★★★★☆)app
1.5 總結
Android其實也不難,泥瓦匠總是會說一些不大不小的話。可是我感受仍是有點道理,好比Android是技術,技術來源於生活。因此咱們要學會學着把技術還原到生活中,這樣其實咱們就知道其起源,其原理。對了咱們還能夠類比,好比
咱們徹底能夠把Android看成一個地球(叫作安卓地球)。
問: 安卓地球爲何會自轉,會公轉?(誰驅動)
答曰:安卓地球自轉工做來自太陽對它的做用。天然同理可得:Android也有屬於它的一套驅動系統,它叫作Linux內核(Linux Kernel),裏面包括着各類底層的驅動(藍牙 USB WiFi等)和一些像對電源的管理。而後咱們之後的一切操做都是基於這個基石搭建的。
二問:安卓地球上爲何有海,陸地和空氣?(擁有什麼)
答曰:安卓地球裏面擁有不少主要功能的實現。Android有一套庫(library),好比咱們常見存儲數據操做的SQLite庫,提供了數據庫和對數據的操做。還有WebKit庫位瀏覽Web提供支持。還有不少,我後面用圖總結。另外這裏同一層的有一個核心庫和虛擬機(Dalvik),叫做Android運行時。這詞雖然有點拗口,可是泥瓦匠會給你解釋解釋。下面咱們也會詳細介紹。
三問:安卓地球上的(碼)農民能種田,(碼)漁民能捕魚。這是地球對使用者的幫助。
答曰:安卓地球公開了其操做系統的各類功能,使他們能開發應用程序時用這些功能。咱們把它叫作應用框架(Application Framework)。
最後問:那些安卓地球上吃飯,泡腳的人享受着的生活。這是看得見摸得着的。那是安卓地球在應用程序使用層上,也就是咱們常常提起的應用程序。稱爲應用程序(Application)。
泥瓦匠的記憶宮殿:我以爲好記性不如爛筆頭,好筆頭不如來畫個圖。因此我總結學習須要方法,學習須要思路。下面我給出的是Android架構淺析的總結圖:
跟着泥瓦匠動手吧,扯了一下架構。以爲‘紙上學來總覺淺絕知此事要躬行’。說幹就幹吧。首先碼農程序員最熟悉的Hello World的愛人瞭解透徹,別看這個小程序,其實學問很大。細節注意每每是一我的的轉折點哦。
elicpse → 右鍵 new android application → next.. → finish
圖中,紅色框框中是咱們要了解的知識。由於如今Android版本2.3開始造成了新的里程碑,因此咱們須要在兼容方面,也就是圖中Mininum Require SDK 和 Target SDK 的設置。下面是Compile With,由於這要懂得下Dalvik VM,由於咱們知道不一樣版本的編譯下會有點不一樣的區別。或是修改或是新增。DalvikVM 和 JVM到底有什麼區別呢?區別不大,但效果很大。爲什麼呢?
由於,在PC端JVM 一般咱們javac 而後 .java文件到 .class及其打包下的 .jar。他們是基於堆棧架構,DVM呢?DVM其實也是到字節文件那塊而已。有什麼不一樣呢?
答案在這裏:DVM(dalvik vm)基於寄存器架構,其過程是: .java → javac → .class → dx.bat → .dex → .odex化。而odex化 把文件預先提取出來做用 加快軟件加載速度和開機速度。大大使咱們在Android系統上,操做以爲方便流暢。而後大家會發現旁邊多了一個工程目錄,這是咱們要講的重點:
下面咱們來看看這工程的含義,其中難點我也會標註:
你們和瓦匠想的同樣,很想跑起來試試,那就跑唄:右鍵項目 → run as Android application 便可。
其中補充下,項目中一個重要文件:清單文件 AndroidManifest.xml,其內容以下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.nsg.main" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="org.nsg.main.HelloActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
其中定義了版本代碼,應用運行所需的操做系統版本,還有些基礎的logo,名稱等配置。值得泥瓦匠一說的是,在activity元素裏面有個元素<intent-filter>的,它的做用:
一、意圖篩選器名稱android.intent.action.MAIN,代表應用入口點。
二、意圖篩選器類別android.intent.category.LAUNCHER,代表應用從設備啓動器圖標啓動。
泥瓦匠,怎麼說編譯中學習,咱們須要學習什麼呢?
答曰:編譯中學習,編譯工程的變化,及DVM的一些特徵。
當咱們右鍵 run 的時候,你們會發現工程目錄下的bin文件夾會發生變化,如圖所示:
這些都是什麼呢?讓咱們意義認識他們吧。
爲何說DVM很支持或者很適合在移動終端使用呢。其中不少有趣的特性分析給你們:
一、dex文件把全部編譯後的文件整到一塊兒,健身了文件的尺寸和IO操做,也提升了類的查找。
二、基於寄存器,代碼執行效率高。
其餘也有不少,你們能夠去找這方面的DVM知識。
Android第一篇我以爲是否是講的太多了,無論了,反正泥瓦匠都認爲應該知道的東西。別見怪哦~
仍是那句話,泥瓦匠想說:
如以上文章或連接對你有幫助的話,別忘了在文章按鈕或到頁面右下角點擊 「贊一個」 按鈕哦。你也能夠點擊頁面右邊「分享」懸浮按鈕哦,讓更多的人閱讀這篇文章