第一章:
IDE:Eclipse ADT for java developer
其它: Apache Ant Java SE Development Kit5或6 Linux和Mac上使用Apache Ant 1.65+,
Windows上使用1.7+版本;(單獨的JRE是不能夠的,必需要有JDK),不兼容Gnu Java編譯器(gcj)java
Java_Home x:\xx\xx\java\JDK1.6.0-17
classpath:.;%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jarshell
Android爲Eclipse定製一個專用插件---Android Development Tools(ADT),此插件爲用戶提供一個強大的開發Android應用程序的綜合環境。
ADT擴展了Eclipse功能,可讓用戶快速地創建Android項目,建立應用程序界面。
安裝Android Development Tools plug-in編程
AVD(Android Virtual Device),每一個AVD模擬一套虛擬設備來運行Android平臺,這個平臺至少要有本身的內核、系統圖像和數據分區,還能夠有
本身的SD卡和用戶數據及外觀顯示器等。windows
Commnad:
Android list targets查看可用的平臺安全
開發環境:
JDK,開發工具Eclipse、Android SDK,安裝了ADT並進行SDK HOME的配置,建立一個AVD或使用真機(須要裝驅動)併發
第二章:
驅動含有推進和發動之意,計算機領域的驅動也含有推進之意。框架
驅動程序是硬件廠商根據OS編寫的配置文件,沒有驅動程序,計算機中的硬件就沒法工做(由於OS和硬件不認識,無法交流)。
驅動程序是硬件的一個構成部分,當安裝新的硬件時,也必須安裝對應的驅動程序。dom
windows是怎麼知道安裝的是什麼設備,以及要複製哪些文件呢:安裝是.inf文件。
.inf是從Windows95時代開始引入的一種描述設備安裝信息的文件,它使用特定的語法文字來講明要安裝的設備類型、生產廠商、型號、要複製的文件、複製到的目標路徑,以及要添加到註冊表中的信息。經過讀取和解釋這些文字,Windows能夠知道應該如何安裝驅動程序。
其它.inf文件不只能夠安裝驅動程序,還能夠安裝與硬件並無什麼關係的軟件,如Windows系統支持的「Windows更新」功能,在更新時下載的系統部件就是使用.inf文件來講明如何安裝該部件的。ide
所謂手機驅動,就是有的手機和計算機不能直接鏈接,必須使用手機自帶的磁盤驅動一下。其它就是安裝了一個讀取手機內存信息的程序。工具
若是經過串口鏈接計算機,通常不須要驅動程序,但須要用軟件來實現和手機的鏈接。手機的附贈光盤中一般會有這樣的軟件。
Android SDK目錄:
add-ons:裏面包含官方提供的API包,最主要的是Map的API
docs:裏面包含文檔,即幫助文檔和說明文檔
platforms:針對每一個版本的SDK版本提供了和其對應的API包以及一些示例文件,其中包含各個版本的Android
temp:包含一些經常使用 的文件模版
tools:包含一些通用的工具文件
usb_driver:包含AMD64和x86下的驅動文件
SDK Setup.exe:Android的啓動文件
SDK工具集:
Android模擬器:模擬器是運行在計算機上的虛擬移動設備。
調試監視服務ddms.bat
Android調試橋adb.exe:adb是具備多種用途的工具,能夠幫助管理設備和模擬器的狀態:
能夠經過下面幾種方法加入adb:
(1)在設備上運行shell命令
(2)經過端口轉發來管理模擬器或複製文件
(3)從模擬器或設備上覆制來或複製走文件
Android資源打包工具aapt.exe:此工具能夠建立apk文件,在apk文件中包含了Android應用程序的二進制文件和資源文件
Android接口描述語言aidl.exe:用於生成進程間接口代碼
建立SD卡工具
Dx工具dx.bat將class字節碼重寫爲Android字節碼(被存儲在dex文件中)
生成Ant構建文件activitycreator.bat
avd
Android做爲一個移動設備的平臺,其軟件層次結構包括OS,中間件Middle Ware和應用程序Applications
SSL Secure Socket Layer:位於TCP/IP協議與各類應用層協議之間,爲數據通訊提供安全支持
FreeType:位圖和矢量字體的功能
Android的各類庫通常是以系統中間件的形式提供的,它們均有一個顯著特色是與移動設備平臺的應用密切相關。
Android運行環境主要是指虛擬機技術-Dalvik。
Dalvik虛擬機和通常Java虛擬機不一樣,它執行的不是Java標準的字節碼(ByteCode),而是Dalvik可執行格式(.dex)中執行文件
在執行過程當中,每一個應用程序即一個進程(Android中一個應用就會對應Linux一個用戶,Linux的一個Process).
兩者的最大區別在於,Java VM是基於棧的虛擬機(Stack-based),而Dalvik是基於寄存器的虛擬機(Register-Based).
顯然,後者的最大好處在於能夠根據硬件實現更大的優化,這更適合移動設備的特色。
一個Android應用程序能夠利應用程序框架中如下幾個部分:
Activity(活動)
Broadcast Intent Receiver(廣播意圖接收者)
Service(服務)
Content Provider(內容提供者)
Intent and Intent Filter
Androidmanifest.xml至關於應用的配置文件,在這個文件中必須聲明應用 的名稱,應用所用到的Activity,Service以及receiver等
Android根據每一個進程中運行的組件及組件的狀態把進程放入一個Importance Hierarchy(重要性分級)
。進程按照重要程序分類可分爲如下5類:
前臺進程(foreGround)
可見進程Visible
服務進程Service
後臺進程Background
空進程Empty:不擁有任何活動的應用程序組件的進程。保留這種進程的惟一緣由是在下次應用程序的某個組件須要運行時,不須要從新建立進程,這樣能夠提升啓動速度
Linux和Android的關係以下:
Andorid採用Linux做爲內核
Android對Linux內核作了修改,以適應其在移動設備上的應用
Android開始是做爲Linux的一個分支,後來因爲沒法併入Linux的主開發樹,已被Linux內核組從開發樹中刪除(2010.2)
Android是在Linux2.6的內核基礎上運行的,提供核心系統服務。
內核部分還至關於一個介於硬件層和系統中其它軟件組之間的一個抽象層
Android系統的系統層面的底層是LInux,中間加上了一個叫作Dalvik的Java虛擬機,表面層上面是Android運行庫
在Android系統中,採用Yaffs2做爲MTD nand flash文件。Android2.2以上使用Ext4文件系統:
谷歌新Nexus S智能手機將是第一款使用ext4文件系統的Android設備。谷歌本月初在Android開發者博客發表了官方聲明,討論Android上ext4的採用將如何影響第三方應用開發商。
在上週的後續文章中,ext4的開發者Ted T'so評論了過渡問題,並就fsync數據丟失問題作了進一步的澄清,他說,因爲更高水平質量保證測試,在Android上的風險將是最小的。
文件系統的開發專家,T'so 在ext4的開發起到了關鍵做用,
ext4是目前Linux內核的標準文件系統。目前大多數Android設備使用YAFFS,一個適合用於閃存的輕量級的文件系統,一般用於移動和嵌入式設備。
YAFFS的問題,T'so在他的博客解釋,「在於它是單線程的,可能‘已經成爲雙核系統的瓶頸’。使用多核ARM處理器的下一代Android設備中,併發性將是重要的。
咱們但願看到雙核心的Android設備,包括平板電腦,最先將在CES上宣佈。」
Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.
Yaffs is Open Source...
You can have a look at the code at any time. Download it now! And it’s suitable for GPL and commercially licensed projects.
Read more
Royalty Free...
Whether you use yaffs under the GPL or under a commercial licence, Yaffs is free of any per-unit royalty.
Read more
Tried and tested in millions of devices...
Yaffs is widely used in Linux and proprietary commercial RTOSs. It’s been included in hundreds of devices, and shipped as part of Google’s Android, with millions of units sold.
Read more
Yaffs is a safe choice...
Yaffs has a long history, coupled with continuing development. There are thousands of developers who have used it, and it’s deployed in many millions of devices.
Read more
An active community...
There’s an active community of people who use Yaffs and who have developed with Yaffs, just a click or two away.
Read more
Suitable for open and closed source projects...
If you want to use Yaffs on an Open Source project, then go ahead and download the GPLed version now. It is also available under a closed source licence for commercial use.
Read more
Yaffs is fully supported...
Yaffs support is available through the Yaffs community but for those problems that aren’t suitable for a public forum, we offer consultancy with direct access to our developers.
Read more
A robust flash file system...
After more than 100,000 >random< power-failures during reading or writing, a test file showed NO data corruption at all! Read more
內核的做用就是將應用程序和硬件分離開來
內核的主要任務是負責與計算機硬件進行交互,實現對硬件的編程控制和接口操做,高度對硬件資源的訪問。除此以外,內核爲用戶應用程序提供一個高級的執行環境和訪問硬件的虛擬接口。
字符設備:提供鏈接的數據流,應用程序能夠順序讀取,一般不支持隨機存取。此類設備運行按字節/字符來讀寫數據,modem就是字符設備
塊設備:應用程序能夠隨機訪問設備數據,程序可自行肯定讀取數據的位置。硬件
若是以一個原始的Linux OS爲基礎,改形成一個適合於Android系統,所作的工做其實很是簡單,就是增長適用於Android的驅動程序。
Android的RIL(Radio Interface Layer)提供了電話服務和Radio硬件之間的抽象層。RIL負責數據的可靠傳輸,AT命令的發送,以及Respose的解析。應用處理器經過AT命令集與帶GPRS功能的無線通訊模塊通訊。AT commnad由Hayes公司發明,是一個調制解調器製造商採用折一個調制解調器命令語言,每條命令以字母「AT「開頭