步步爲營_Android開發課[1]_認識Android開發

Focus on technology, enjoy life!—— 楊煥州 QQ:804212028
原文鏈接:http://blog.csdn.net/y18334702058/article/details/44624305
本文可能存在參考或藉助部分外界資源,如有任何侵權行爲,請與我聯繫!


  • 主題:初步認識Android開發

概述:

Android是一種基於Linux的自由及開放源代碼的操作系統,主要使用於移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。中文名:安卓。

版本:

發條機器人(Android 1.0)
紙杯蛋糕(Android 1.5)
甜甜圈(Android 1.6)
鬆餅(Android 2.0/2.1)
凍酸奶(Android 2.2)
薑餅(Android 2.3)
蜂巢(Android 3.0)
冰激凌三明治(Android 4.0)
果凍豆(Android4.1和Android 4.2)
棒棒糖(Android5.0)

架構:

分爲四層,由上到下分別爲:程序應用層,應用框架層,運行庫層,Linux內核層。 這裏寫圖片描述

Android中的庫

下面是具體的類庫:
1、Android.util 核心使用包(看名字就知道啦),包括了低級類,例如,專用的容器、字符串格式化和XML解析程序。
2、Android.os 操作系統包,提供了基本操作系統服務的訪問時間,例如,消息傳遞、進程間通信、始終函數和調試。
3、Android.graphic 圖形API提供了支持畫布、顏色和繪畫原語的低級圖行類,讓你可以在畫布上畫畫。
4、Android.text 用來顯示和解析文本的文本處理工具。
5、Android.database 當使用數據庫的時候,提供處理遊標(cursor)所要求的低級類。
6、Android.content 內容API通過處理資源、內容提供器和包的服務,來管理數據訪問和發佈。
7、Android.view View是核心用戶界面類。所有的用戶界面元素都是使用一系列View來構造的,用來提供交互組件。
8、Android.widget 構建在View包的基礎上,Widget類是已經創建好的用戶界面元素,可以直接在應用程序中使用,他們包含列表、按鍵和佈局。
9、Com.google.android.maps 一個高級API,提供了對本地地圖控件的訪問,可以再應用程序中使用這些控件,它包括MapView控件以及用來對嵌入的地圖進行註釋和控制的Overlay和MapController類。
10、Android.app 一個提供了對應用程序模型進行訪問的高級包。應用程序包包含活動(Acitivity)和服務(Service)API,它形成所有應用程序的基礎。
11、Android.provider 爲了方便開發人員對某些標註的內容提供器進行訪問,provider包提供了一些類,從而提供了對所有的android發行版中包含的標準數據庫的訪問。
12、Android.telephony telephony Api允許直接與蛇鞭的電話棧進行交互,讓你可以直接打電話、監控電話狀態以及收發SMS消息。
13、Android.webkit webKit 包提供了與基於Web的內容相關的API,包括一個WebView控件,可以再活動或許cookie管理器重嵌入一個瀏覽器。
除了Android API之外,android棧還包含了一些可以提供程序框架使用的c/c++庫集合:
1、OpenGL 基於O噴GL ES ApI 的用來支持3D圖形的庫。
2、Free Type 支持位圖和矢量字體渲染。
3、SGL 用來提供2D圖形引擎的核心庫。
4、Libc 爲基於Linux的嵌入式設備而優化的標註C庫。
5、SQLite 用來存儲數據的輕量級關係數據庫引擎
6、SSL 用來支持使用安全套接字層(Secure Sockets Layer)加密協議的安全Internet通信。
7、Android.location 基於位置的服務API讓應用程序可以訪問到設備當前的物理位置,不管使用什麼樣硬件或技術來確定位置,基於位置的服務都提供了對位置信息的通用訪問。
8、Android.media 媒體API提供了對音頻和視頻文件的回收和錄製的支持,包括留媒體。
9、Android.opengl android使用OpenGL ES API提供了強大的3d渲染引擎,這種酒可以使用它來創建動態的3D用戶界面。
10、Android.hardware 當可用的時候,硬件API就會提供傳感器硬件,包括攝像頭、加速計和羅盤傳感器。
11、Android.buetooth, android.net.wifi和android.telephony android也提供了對硬件平臺的低級訪問,包括藍牙,wifi和電話硬件。

Apk結構文件

apk文件實際是一個zip壓縮包,可以通過解壓縮工具解開。
以下是我們用zip解開helloworld.apk文件後看到的內容,可以看到其結構跟工程結構有些類似,如下圖所示:
|– AndroidManifest.xml
|– META.INF
| |– CERT.RSA
| |– CERT.SF
| |– MANIFEST.MF
|– classes.dex
|– res
| |– drawable
| | |–icon.png
| |– layout
| | |–main.xml
1.Manifest 文件
AndroidManifest.xml是每個應用都必須定義和包含的,它描述了應用的名字、版本、權限、引用的庫文件等等信息,如要把apk上傳到Google Market上,也要對這個xml做一些配置。
2.META-INF目錄
META-INF目錄下存放的是簽名信息,用來保證apk包的完整性和系統的安全。在eclipse編譯生成一個api包時,會對所有要打包的文件做一個校驗計算,並把計算結果放在META-INF目錄下。而在Android平臺上安裝apk包時,應用管理器會按照同樣的算法對包裏的文件做校驗,如果校驗結果與META-INF下的內容不一致,系統就不會安裝這個apk。這就保證了apk包裏的文件不能被隨意替換。比如拿到一個apk包後,如果想要替換裏面的一幅圖片,一段代碼,或一段版權信息,想直接解壓縮、替換再重新打包,基本是不可能的。如此一來就給病毒感染和惡意修改增加了難度,有助於保護系 統的安全。
3.classes.dex文件
classes.dex是java源碼編譯後生成的java字節碼文件。但由於Android使用的dalvik虛擬機與標準的java虛擬機是不兼容的,dex文件與class文件相比,不論是文件結構還是opcode都不一樣。目前常見的java反編譯工具都不能處理dex文件。
Android模擬器中提供了一個dex文件的反編譯工具dexdump。用法爲首先啓動Android模擬器,把要查看的dex文件用adb push上傳的模擬器中,然後通過adb shell登錄,找到要查看的dex文件,執行dexdump xxx.dex。
目前在網上能找到的另一個dex文件的反編譯工具是Dedexer。Dedexer可以讀取dex格式的文件,生成一種類似於彙編語言的輸出。這種輸出與jasmin[]的輸出相似,但包含的是Dalvik的字節碼。
4.res 目錄
res目錄存放資源文件。
5.resources.arsc
編譯後的二進制資源文件。

SDK目錄及它們的作用

1、add-ons
這裏面保存着附加庫,比如GoogleMaps,當然你如果安裝了OphoneSDK,這裏也會有一些類庫在裏面。
2、docs
這裏面是Android SDKAPI參考文檔,所有的API都可以在這裏查到。
3、market_licensing
作爲AndroidMarket版權保護組件,一般發佈付費應用到電子市場可以用它來反盜版。
4、platforms
是每個平臺的SDK真正的文件,裏面會根據APILevel劃分的SDK版本,這裏就以Android2.2來說,進入後有一個android-8的文件夾,android-8進入後是Android2.2SDK的主要文件,其中ant爲ant編譯腳本,data保存着一些系統資源,images是模擬器映像文件,skins則是Android模擬器的皮膚,templates是工程創建的默認模板,android.jar則是該版本的主要framework文件,tools目錄裏面包含了重要的編譯工具,比如aapt、aidl、逆向調試工具dexdump和編譯腳本dx。
5、platform-tools
保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,這裏和platforms目錄中tools文件夾有些重複,主要是從android2.3開始這些工具被劃分爲通用了。
6、samples
samples是Android SDK自帶的默認示例工程,裏面的apidemos強烈推薦初學者運行學習,對於SQLite數據庫操作可以查看NotePad這個例子,對於遊戲開發Snake、LunarLander都是不錯的例子,對於Android主題開發Home則是android m5時代的主題設計原理。
7、tools
作爲SDK根目錄下的tools文件夾,這裏包含了重要的工具,比如ddms用於啓動Android調試工具,比如logcat、屏幕截圖和文件管理器,而draw9patch則是繪製android平臺的可縮放png圖片的工具,sqlite3可以在PC上操作SQLite數據庫,而monkeyrunner則是一個不錯的壓力測試應用,模擬用戶隨機按鍵,mksdcard則是模擬器SD映像的創建工具,emulator是Android SDK模擬器主程序,不過從android 1.5開始,需要輸入合適的參數才能啓動模擬器,traceview作爲android平臺上重要的調試工具。

Dalvik虛擬機

Dalvik虛擬機它對內存的高效使用,和在低速CPU上表現出的高性能,令人刮目相看。它和標準的Java虛擬機是不同的。
1、Java虛擬機運行的是Java字節碼,而Dalvik虛擬機運行的則是其專有的文件格式DEX(Dalvik Executable)。
2、在Java SE程序中的Java類會被編譯成一個或者多個字節碼文件(.class)然後打包到JAR文件,而後Java虛擬機會從相應的CLASS文件和JAR文件中獲取相應的字節碼;
Android應用雖然也是使用Java語言進行編程,但是在編譯成CLASS文件後,還會通過一個工具(dx)將應用所有的CLASS文件轉換成一個DEX文件,最後使用Android打包工具(aapt)將DEX文件,資源文件以及AndroidManifest.xml文件(二進制格式)組合成一個應用程序包(APK)。應用程序包可以被髮布到手機上運行。

Focus on technology, enjoy life!—— 楊煥州 QQ:804212028
原文鏈接:http://blog.csdn.net/y18334702058/article/details/44624305

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章