通過前幾天的練習,相信你們已經對如何作出一個簡單的界面有了初步的瞭解,而且已經作出來一個還不錯的天氣列表了。android
今天你們稍事休息,要練習的內容比較少,着重學習一些理論知識,先理清幾個概念。程序員
Android系統本質上是Linux系統,但相對於Linux系統,主要在驅動、性能、內存管理、設備管理等一些部分作了比較多的改動,以更適用於移動設備。數據庫
從上圖能夠看到,Android系統架構爲四層,分別是Linux內核、系統運行庫、應用程序框架以及應用層,每一層的做用分別爲:安全
提供了做爲一個操做系統所應有的基礎功能,包括各類硬件驅動、內存管理、電源管理等,該層做爲硬件和軟件之間的抽象層而存在。網絡
系統運行庫分爲兩部分,系統庫和Android運行時,系統庫提供了底層的Sqlite、SSL、OpenGL、Surface Manager等類庫,從數據庫到網絡再到界面繪製,都在這一層進行。架構
Android運行時,這一部分在Android4.4之前是Dalvik,也就是Google實現的Java虛擬機,全部的Android APP都運行在虛擬機裏面,每一個Dalvik虛擬機都是一個獨立進程。簡單的說就是每一個Android APP編譯以後會打包爲APK文件,APK文件內部包含資源文件、代碼文件(Dex)、AndroidManifest.xml以及別的配置文件,而Dalvik虛擬機則執行的是Dex文件。app
Android4.4之後,啓用了Dalvik虛擬機,而改用Android Runtime,根據Google的說明,新的Android Runtime會有更好的效率,執行速度更快、耗電更少、佔用內存更低。框架
這一層就是咱們代碼能夠直接調用的了,一般所說的Android API都會在這一層提供,主要包括Activity Manager、Window Manager、Content Provider等,等咱們對系統有了更多的學習以後,會慢慢用到其中的一部份內容。ide
這一層就是咱們平時能夠操做的APP了。Android自己既是個操做系統,又提供了基礎的APP,如SMS、Phone、Browser等,固然了,更多的APP是須要咱們程序員來實現的。性能
瞭解了Android系統的基礎架構後,再結合咱們正在開發的天氣預報APP來具體的學習一下Android APP項目的一個核心的文件——AndroidManifest.xml。
每個Android項目都包含一個清單(Manifest)文件--AndroidManifest.xml,它存儲在項目層次中的最底層,它是Android程序的全局配置文件,能夠定義應用程序及其組件的結構和元數據。它包含了組成應用程序的每個組件(活動、服務、內容提供器和廣播接收器)的節點,並使用Intent過濾器和權限來肯定這些組件之間以及這些組件和其餘應用程序是如何交互的。它還提供了各類屬性來詳細地說明應用程序的元數據(如它的圖標或者主題)的以及額外的可用來進行安全設置和單元測試頂級節點,咱們先來看一下天氣預報APP的這個文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.demo.weather" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.demo.weather.MainActivity" 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>
咱們逐次說明一下,
根節點定義了包名、版本號,其中package必定是惟一的,android:versionCode是供程序內部使用的版本號,android:versionName則會顯示給用戶。
這個節點指定Android應用中所須要使用的SDK的版本,android:minSdkVersion指定可運行的最低版本,android:maxSdkVersion指定可運行的最高版本,android:targetSdkVersion這個指定了目標版本。
指定的版本均爲數字,你們能夠對照下表參考:
Android版本 | API Level |
5.0 | 21 |
4.4w | 20 |
4.4 | 19 |
4.3 | 18 |
4.2.2 | 17 |
4.1.2 | 16 |
4.0.3 | 15 |
4.0 | 14 |
3.2 | 13 |
3.1 | 12 |
3.0 | 11 |
2.3.3 | 10 |
2.2 | 8 |
2.1 | 7 |
1.6 | 4 |
1.5 | 3 |
關於android:targetSdkVersion這個目標版本不少初學者會疑惑,不明白到底有什麼用。我我的的理解是好比你的APP指定了最低版本爲8,目標版本爲19,你開發過程當中作出來的程序在Android4.4的設備上是沒有任何問題的,其餘的版本Android系統就會進行相應的兼容適配。好比有些API在低版本是不提供的,就須要咱們在程序中進行版本判斷,進行不一樣的代碼處理。注意,這個時候你指定了最低版本是8,你最低可使用8的API,在程序編譯的時候,你用到了19的API是不會出現編譯錯誤的。
android:maxSdkVersion這個配置通常是不須要設置的,由於系統自己是向下兼容的。
這個節點指定了APP擁有的權限。Android系統對於權限管理是比較嚴格的,一個APP必須先聲明權限才能使用相應的功能。例如須要訪問網絡,則須要在這裏聲明一個android.permission.INTERNET權限,相應的如GPS、Camera、VIBRATE等都須要先聲明權限纔可使用。
這個節點指定了APP的組件、屬性,如icon、label、name、theme等。
這個節點是application的子節點,定義了整個APP的全部頁面。
除了以上咱們用到的幾個外,還有receiver、provider、service等,這些咱們在之後慢慢熟悉。
瞭解了Android自己的架構後,咱們稍微修改一下manifest文件。
把上面的圖標放到res\drawable-hdpi文件夾下,而後修改application節點下的android:icon="@drawable/ic_launcher" 爲 android:icon="@drawable/icon"
打開res\values\strings.xml文件,修改<string name="app_name">Weather</string>爲<string name="app_name">天氣預報</string>
打完收工,運行程序。
能夠發現應用左上角的圖標和名稱都變成了咱們想要的。
今天的內容比較少,主要是一些基礎理論知識,也但願你們多多查閱資料,對Android自己的結構有更多更深刻的瞭解。
附件是本次的工程文件,點擊下載。
此係列文章系本人原創,如需轉載,請註明出處 www.liuzhibang.cn