"淺談Android"第一篇:Android系統簡介
- Android系統架構
- Andorid已釋出的版本
- Android應用特色
- Android開發環境
- Android程式結構
- Logcat工具
- Hello World
1,Android系統架構
有圖有真相: 這是Android系統架構圖,夠一目瞭然了吧,Android大致可以分為四層架構,五塊區域。- Linux核心層(Linux Kernel)
- 系統執行層
- 應用框架層(Application Framework)
- 應用層(Applications)
2,Android已釋出的版本
有圖有真相:
從圖中我們能看到,Android最新版已經5.0了,名叫Android 5.0 Lollipop,中文簡稱為”棒棒糖“。自從2008年9月,谷歌正式釋出了Android 1.0系統,這也是Android系統最早的版本,隨後的幾年,谷歌以驚人的速度不斷更新發布Android系統,2.1、2.2、2.3系統推出使Android佔據了大量的市場。2011年2月,谷歌釋出了Android 3.0系統,這個系統版本是專門為平板電腦設計的,但也是Android為數不多比較失敗的版本,推出之後一直不見什麼起色,市場份額也少的可憐。不過很快,在同年10月,谷歌又釋出了Android 4.0系統,這個系統版本不再對手機和平板進行差異化區分,既可以應用在手機上也可以應用在平板上,除此之外,還引入了不少特性。3,Android應用特色
Android主要有什麼特色呢,有以下幾個方面來體現:
- 四大元件
- 豐富的系統控制元件
- SQLite資料庫等持久化技術
- 地理位置定位
- 強大的多媒體
- 感測器
4,Android開發環境
開發環境搭建所需要的軟體,配置等攻略,相信大家網上搜一搜,這類文章太多了。這裡只強調重要幾個工具:Android SDK、Eclipse、ADT。
4.1,Android SDK Android SDK谷歌提供的Android開發工具包,在開發Android程式時,我們需要引用該工具包,裡面包含了開發Android應用程式的API。 4.2,Eclipse 開發Java應用程式的神器,最好用IDE工具之一,特點是開源、超強的外掛功能、可支援多種語言開發。當然除此之外,谷歌也推出了Android Studio,專門針對Android程式定製的,但因為Android Studio才剛推出不久,不太穩定,畢竟新工具問題還是比較多的,Eclipse被應用已經很成熟了,網上各種關於Eclipse疑難雜症的解決方案很多,相比Android Studio就比較少了。 4.3,ADT ADT全稱叫做"Android Development Tools",是谷歌提供的一個Eclipse外掛,用於在Eclipse提供一個強大的、整合的Android開發環境。5,Android程式結構
有圖有真相:
從圖中看是不是一目瞭然,那麼接下來就一一講解吧。
5.1,src 毫無疑問,src目錄是放置我們所有Java程式碼的地方,它在這裡的含義和普通Java專案下的src目錄是完全一樣的。 5.2,gen 這個目錄裡的內容都是自動生成的,主要有一個R.Java檔案,你在專案中新增任何資源都會在其中生成一個相應的資源ID,這個檔案永遠不要手動去修改它。 5.3,assets 這個目錄裡主要可以存放一些隨程式打包的檔案,在你的程式執行時可以動態讀取到這些檔案的內容。另外,如果你的程式中使用到了WebView載入本地網頁的功能,所有網頁相關的檔案也都存放在這個目錄下。 5.4,bin 這個目錄頁不需要過多的關注,它主要包含了一些在編譯時自動產生的檔案。當然,會包括一個編譯好的安裝包,字尾為.apk的檔案。 5.5,libs 如果你的專案中使用到了第三方的jar包,就需要把這些jar包放在libs目錄下,放在這個目錄下的jar包都會被自動新增到構建路徑裡去。 5.6,res 這個目錄下的內容就有點多了,簡單點說,就是你在專案中使用到的所有圖片、佈局、字串等資源都要存放在這個目錄下,前面提到的R.Java中的內容也是根據這個目錄下的檔案自動生成的。當然這個目錄下還有很多子目錄,圖片放在drawable目錄下,佈局放在layout目錄下,字串放在values目錄下。 5.7,AndroidManifest.xml 這是你整個Android專案的配置檔案,你在程式中定義的所有四大元件都需要在這個檔案中註冊。另外還可以在這個檔案給應用程式新增許可權宣告,也可以重新指定你建立專案時指定的程式最低相容版本和目標版本。 5.8,proguard-project.txt 在釋出你的程式時候,有些apk檔案容易被人反編譯,所以此時這個檔案就發揮作用了,用來混淆你的程式程式碼,讓別人不那麼容易看到原始碼。 5.9,project.properties 指定了編譯程式時候所用的SDK版本6,Logcat工具
有圖有真相:
日誌在任何專案的開發過程中都會起到非常重要的作用,在Android專案中如果你想要檢視日誌則必須要使用Logcat工具。 Android提供了一個日誌工具類是Log,總共有個等級,級級遞增。
6.1,Log.v()
這個方法用於列印那些最為瑣碎的,意義最小的日誌資訊。對應級別 verbose,是Android 日誌裡面級別最低的一種。
這個方法用於列印一些除錯資訊,這些資訊對你除錯程式和分析問題應該是有幫助的。對應級別 debug,比 verbose 高一級。
6.3,Log.i()
這個方法用於列印一些比較重要的資料,這些資料應該是你非常想看到的,可以幫你分析使用者行為的那種。對應級別 info,比 debug 高一級。
6.4,Log.w()
這個方法用於列印一些警告資訊,提示程式在這個地方可能會有潛在的風險,最好去修復一下這些出現警告的地方。對應級別 warn,比 info 高一級。
6.5,Log.e()
這個方法用於列印程式中的錯誤資訊,比如程式進入到了 catch 語句當中。當有錯誤資訊打印出來的時候,一般都代表你的程式出現嚴重問題了,必須儘快修復。對應級別 error,比 warn 高一級。 小提醒:定製自己的日誌工具
比如,你正在編寫一個比較龐大的專案,期間為了方便除錯,在程式碼的很多地方都列印了大量的日誌。最近專案已經基本完成了,但是卻有一個非常讓人頭疼的問題,之前用於除錯的那些日誌,在專案正式上線之後仍然會照常列印,這樣不僅會降低程式的執行效率,還有可能將一些機密性的資料洩露出去。
那該怎麼辦呢,難道要一行一行把所有列印日誌的程式碼都刪掉?顯然這不是什麼好點子,不僅費時費力,而且以後你繼續維護這個專案的時候可能還會需要這些日誌。因此,最理想的情況是能夠自由地控制日誌的列印,當程式處於開發階段就讓日誌打印出來,當程式上線了之後就把日誌遮蔽掉。
public class LogUtil { public static final int VERBOSE=1; public static final int DEBUG=2; public static final int INFO=3; public static final int WARN=4; public static final int ERROR=5; public static final int NOTHING=6; public static final int LEVEL=VERBOSE; //釋出新版本時候 等級為6 public static void v(String tag,String msg){ if(LEVEL <=VERBOSE){ Log.v(tag, msg); } } public static void d(String tag,String msg){ if(LEVEL <=DEBUG){ Log.d(tag, msg); } } public static void i(String tag,String msg){ if(LEVEL <=INFO){ Log.i(tag, msg); } } public static void w(String tag,String msg){ if(LEVEL <=WARN){ Log.w(tag, msg); } } public static void e(String tag,String msg){ if(LEVEL <=ERROR){ Log.e(tag, msg); } } }
可以看到,我們在 LogUtil 中先是定義了 VERBOSE、 DEBUG、 INFO、 WARN、 ERROR、NOTHING 這六個整型常量,並且它們對應的值都是遞增的。然後又定義了一個 LEVEL 常
量,可以將它的值指定為上面六個常量中的任意一個。接下來我們提供了 v()、 d()、 i()、 w()、 e()這五個自定義的日誌方法,在其內部分別呼叫了 Log.v()、 Log.d()、 Log.i()、 Log.w()、 Log.e()這五個方法來列印日誌,只不過在這些自定義的方法中我們都加入了一個 if判斷,只有當 LEVEL 常量的值小於或等於對應日誌級別值的時候,才會將日誌打印出來。