【軟件工程】Android中文文檔_第1頁
【軟件工程】Android中文文檔_第2頁
【軟件工程】Android中文文檔_第3頁
【軟件工程】Android中文文檔_第4頁
【軟件工程】Android中文文檔_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

【軟件工程】Android中文文檔

特性

?應用程序框架支持組件的重用與替換

?Dalvik虛擬機專為移動設備優(yōu)化

?優(yōu)化的圖形庫包含定制的2D圖形庫,3D圖形庫基于OpenGLESLO

(硬件加速可選)

?SQLite用作結構化的數(shù)據(jù)存儲

?多媒體支持包含常見的音頻、視頻與靜態(tài)圖像格式(如MPEG4,H.264,

MP3,AAC,AMR,JPG,PNG,GIF)

?GSM電話技術(依靠于硬件)

?藍牙Bluetooth,EDGE,3G,與WiFi(依靠于硬件)

?照相機,GPS,指南針,與加速度計(accelerometer)(依靠于硬件)

?豐富的開發(fā)環(huán)境包含設備模擬器,調(diào)試工具,內(nèi)存及性能分析圖表,與

Eclipse集成開發(fā)環(huán)境插件

Android架構

下圖顯示的是Android操作系統(tǒng)的要緊組件。每?部分將會在下面具體描述。

APPLICATIONS

HomeContactsPhoneBrowser

APPLICATIONFRAMEWORK

WindowContent

ActivityManager

ManagerProviders

TelephonyResourceLocationNotification

PackageManager

ManagerManagerManagerManager

LIBRARIESANDROIDRUNTIME

SurfaceManagerMediaSQLitcCoreLibraries

Framework

OpenGL|ESFreelypeWebKit

Machine

SGLSSLlibc

LINUXKERNEL

DisplayFlashMemoryBinder(IPC]

CameraDriver

DriverDriverDriver

AudioPower

KeypadDriverWiFiDriver

DriversManagemem

應用程序

Android會同一系列核心應用程序包一起公布,該應用程序包包含email客戶端,

SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應用程序

都是使用JAVA語言編寫的。

應用程序框架

開發(fā)人員也能夠完全訪問核心應用程序所使用的API框架。該應用程序的架構

設計簡化了組件的重用;任何一個應用程序都能夠公布它的功能塊同時任何其它

的應用程序都能夠使用其所公布的功能塊(只是得遵循框架的安全性限制)。同

樣,該應用程序重用機制也使用戶能夠方便的替奧程序組件。

隱藏在每個應用后面的是一系列的服務與系統(tǒng),其中包含;

程序庫

Android包含一些C/C++庫,這些庫能被Android系統(tǒng)中不一致的組件使用。它

們通過Android應用程序框架為開發(fā)者提供服務。下列是一些核心庫:

?系統(tǒng)C庫?一個從BSD繼承來的標準C系統(tǒng)函數(shù)庫(libc),它

是專門為基于embeddedlinux的設備定制的。

?媒體庫-基于PacketvideoOpenCORE:該庫支持多種常用的音頻、視

頻格式回放與錄制,同時支持靜態(tài)圖像文件。編碼格式包含MPEG4,

H.264,MP3,AAC,AMR,JPG,PNG。

?SurfaceManager-對顯示子系統(tǒng)的管理,同時為多個應用程序提供了

2D與3D圖層的無縫融合。

?LibWebCore—一個最新的web瀏覽器引擎用,支持Android瀏覽器與

一個可嵌入的web視圖。

?SGL-底層的2D圖形引擎

?3Dlibraries-基于OpenGLES1.0APIs實現(xiàn);該庫能夠使用硬件3D

加速(假如可用)或者者使用高度優(yōu)化的3D軟加速。

?FreeType-位圖(bitmap)與矢量(vector)字體顯示。

?SQLite-一個關于所有應用程序可用,功能強勁的輕型關系型數(shù)據(jù)庫引

擎。

Android運行庫

Android包含了一個核心庫,該核心庫提供了JAVA編程語言核心庫的大多數(shù)功

能。

每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik

虛擬機實例。Dalvik被設計成一個設備能夠同時高效地運行多個虛擬系統(tǒng)。

Dalvik虛擬機執(zhí)行(.dex)的Dalvik可執(zhí)行文件,該格式文件針對小內(nèi)存使用做

了優(yōu)化。同時虛擬機是基于寄存器的,所有的類都經(jīng)由JAVA編譯器編譯,然

后通過SDK中的"dxH工具轉(zhuǎn)化成.dex格式由虛擬機執(zhí)行。

Dalvik虛擬機依靠于linux內(nèi)核的一些功能,比如線程機制與底層內(nèi)存管理機制。

Linux內(nèi)核

Android的核心系統(tǒng)服務依靠于Linux2.6內(nèi)核,如安全性,內(nèi)存管理,進程管

理,網(wǎng)絡協(xié)議棧與驅(qū)動模型。Linux內(nèi)核也同時作為硬件與軟件棧之間的抽象

層。

一、開始

安裝SDK

本頁內(nèi)容介紹如何安裝AndroidSDK與如何設置你的開發(fā)環(huán)境。假如你還沒有

下載SDK,你能夠點下面的連接進行下載,然后閱讀后續(xù)文檔學習如何安裝,

配置,并使用該SDK來創(chuàng)建Android應用程序。

升級?

系統(tǒng)與軟件需求

用Androidsdk的代碼與工具開發(fā)Android應用程序,你需要適合的開發(fā)電腦與開

發(fā)環(huán)境,如下描述:

所需操作系統(tǒng):

?WindowsXP或者Vista

?MacOSX10.4.8或者更高版本(僅支持x86)

?Linux(LinuxUbuntuDapperDrake版本已測試)

所需開發(fā)環(huán)境:

?EclipseIDE

o不兼容GNUJava編譯器(gcj)

?其他開發(fā)環(huán)境或者IDE

o不兼容GNUJava編譯器(gcj)

注:假如你的電腦上已經(jīng)安裝了jdk,請確定它是上面所列的版本號。另外需要

注意有些linux版本可能包含有jdk1.4或者者java的gnu編譯器,Adroid開

發(fā)是不支持在這兩種版本

安裝SDK

下載完SDK后,把.zip文件解壓到你電腦上合適位置.默認情況下,SDK文件被

解壓到android_sdk_<pJatforn?>_<re2ease>_<bui這個文

件夾包含tools/,samples/等.

請注意系統(tǒng)里SDK解壓后的文件夾的名字與位置一當你安裝Android插件與

使用SDK工具時,你將需要引用這個文件夾。

你能夠添加SDKtools的文件夾路徑到你的環(huán)境變量中.如上所述,tools/

文件夾位于SDK文件夾中。

?Linux環(huán)境下,修改~/.bash_profile或者者~/.bashrc文件.找至U環(huán)境變量

設置的地方,加入tools/的絕對路徑。假如找不到該設置,你需要新添

加一行:

exportPATH=${PATH}:<your_sdk_dir>/tools

?Mac環(huán)境下,在你的home文件夾里面查找.bash_profile,然后與linux一

樣處理。假如之前沒有.bash_profile文件,你能夠創(chuàng)建一個新的。

?Windows環(huán)境下,右擊我的電腦,并選擇屬性.在標簽頁高級,點擊環(huán)境

變量,當對話框出現(xiàn),在系統(tǒng)變量欄目里雙擊路徑(Path).并添加

tools/文件夾的完整路徑.

安裝Eclipse插件(ADT)

假如你要使用EclipseIDE作為開發(fā)Android應用的環(huán)境,你能夠安裝支持

Android工程與工具的通用插件AndroidDevelopmentTools(ADT).ADT插件包

含強大的擴張,使得創(chuàng)建,運行與調(diào)試Android更快速,更簡單。

假如你不使用EclipseIDE,就不必下載與安裝ADT插件

下載與安裝ADT插件,請按照你們各自Eclipse版本步驟安裝。

Eclipse3.3(Europa)Eclipse3.4(Ganymede)

1.開始Eclipse,然后選擇Help>1.啟動Eclipse,選擇Help>

SoftwareUpdates>FindandSoftwareUpdates

Install2.在出現(xiàn)的對話框里,點擊標簽

2.對話框出現(xiàn)后,選擇Search頁AvailableSoftware.

fornewfeaturestoinstall點3.點擊AddSite...

擊Next.點擊0K.

3.點擊NewRemoteSite.4.返回可用軟件的視圖,你會看

4.在對話框中,輸入遠程站點的到這個插件.選擇下一步到

名字(如AndroidPlugin),輸DeveloperTools并點擊

入站點如下:Install...

點擊0K.5.在接下來的安裝窗口,選中

5.你能夠看到新的站點添加到搜"AndroidDeveloperTools"與

索列表中(并檢查),點擊Finish."AndroidEditors'*oAndroid編輯

器特性是可選的,但是我們推薦

6.在下面的搜索結果對話框,選

安裝它,假如你選擇安裝,需要

擇復選框AndroidPlugin>

前面提到的WST插件。點擊

DeveloperTools.它將會檢查

Finish.

特性:"AndroidDeveloper

Tools",與"AndroidEditors',.6.重啟Eclipse。

Android編輯器的特性是可選

的,但我們推薦安裝它,假如你

選擇安裝,需要前面提到的WST

插件。點擊Next.

7.閱讀許可協(xié)議,然后選擇同意

許可協(xié)議,點擊Next.

8.點擊Finish.

9.ADT插件沒有簽名,你能夠點

擊“InstallAH”來安裝所有東西。

10.重啟Eclipse.

重啟之后,updateyourEclipsepreferences指向SDK文件夾:

1.選擇Window>Preferences...來打開屬性面板。(MacOSX:

Eclipse>Preferences)

2.從左邊面板選擇Androida

3.在主界面上定位SDK點擊Browse...然后定位SDK文件夾。

4.點擊Apply,然后點擊OK。

ADT安裝疑難解答

I你假如按照以上步驟下載ADT插件有疑問,這里是一些建議:

?假如你在防火墻保護下(企業(yè)防火墻)請確定你的Eclipse的代理設置合

適。在Eclipse3.3/34你能夠從主Eclipse菜單中配置:Window(在

Mac,Eclipse)>Preferences>General>NetworkConnections

假如無法安裝下載的ADT插件至I」Eclipse,按照如下的步驟來從你的電腦下載與

安裝插件:

1.按照默認安裝的第一部與第二步(如上).

2.在Eclipse3.3,點擊NewArchiveSite

InEclipse3.4,clickAddSite...,然后點擊Archive...

3.瀏覽與選擇己經(jīng)下載的壓縮文件。

4.從第五步開始完成上面剩下的流程。

更新你的插件,你務必按照這些步驟代替默認的更行說明。

更新ADT插件

在某些情況下,你機器上的SDK可能與ADT插件是兼容的,你能夠用下列步驟

從Eclipse里更新ADT插件。

Eclipse3.3(Europa)Eclipse3.4(Ganymede)

1.選擇Help>Software1.選擇Help>Software

Updates>FindandInstallUpdates...

2.選擇Searchforupdatesof2.選擇標簽頁Installed

thecurrentlyinstalledSoftwareo

features并點擊Finish.3.點擊Update...

3.假如ADT能夠更新,選擇并安4.假如ADT同意更新,選擇它并

裝更新。點擊Finish.

或者:

1.選擇Help>Software

Updates>Manage

Configuration.

2.展開導航樹并選擇Android

DevelopmentTools

<version>

3.AvailableTasks下選擇

ScanforUpdateSo

安裝注意事項

UbuntuLinux注意事項

.假如你需要幫助安裝與配置java在你的ubuntu機器上,下面資源可能對

你有幫助:

?這里有java與Eclipsed的安裝步驟,先安裝AndroidSDK與ADT插件.

1.假如你你開發(fā)機上使用64位版本,你需要用apt-get安裝

ia32-libs包

apt-getinstallia32-libs

2.下一步,安裝Java:

apt-getinstallsun-java6-bin

3.按照前面部分的提供步驟來安裝SDK與ADT插件.

其他版本Linux注意事項

.假如你在安裝Eclipse的ADT插件遇到這個錯誤:

?Anerroroccurredduringprovisioning.

?Cannotconnecttokeystore.

JKS

你的開發(fā)環(huán)境缺少適合的虛擬機,安裝SunJava6能夠解決這個問題,

然后你再重新安裝ADT插件。

?假如JDK已經(jīng)安裝到你的開發(fā)電腦上,請確定其版本在這頁的頂部列表

中已經(jīng)列出,有些Linux包含jdk1.4或者者java的gnu編譯器,以上二

者Android不支持。

更新SDK

本指南將幫助您升級您的開發(fā)環(huán)境與應用程序到SDK的最新版嘻假如你已經(jīng)

應用了往常版本的AndroidSDK,也需要使用本指南。

為了確保您的應用程序能夠兼容androidl.O系統(tǒng),您需要安裝新的SDK與用新

的API移植現(xiàn)有的android應用程序,下列各節(jié)指導您完成這一進程。

安裝新的SDK

解壓新的SDK以后,您應該完成下面的操作。

?擦除你的模擬器的數(shù)據(jù)

由于新的SDK版本公布,一些數(shù)據(jù)格式改變了。因此任何往常儲存的模

擬器數(shù)據(jù)務必清除。打開一個操縱臺/終端與操作SDK中的/tools目錄。

啟動模擬器援wipe-data的選項

Windows:emulator-wipe-data

Mac/Linux:./emulator-wipe-data

?更新您的PATH變量(Mac/Linux;可選)

假如你往常設置PATH變量為指向的SDKtools目錄,那么您務必更新以

指向新的SDK的。E.g.,.bashrcor.bash_profilefile:export

PATH=$PATH:<your_new_sdk_dir>/tools

更新ADTEclipse插件

假如您在Eclipse上使用ADT插件開發(fā),請按照下列步驟安裝新的插件匹配新

的SDKo

Eclipse3.3(Europa)Eclipse3.4(Ganymede)

1.選擇Help>Software1.選擇Help>Software

Updates>FindandInstallUpdates...

2.選擇Searchforupdatesof2.選擇theInstalledSoftware

thecurrentlyinstalledtab.

features并點擊Finish.3.點擊Update...

3.假如任何ADT有效,選擇并安4.假如任何ADT有效,選擇并點

裝擊Finish

4.重啟Eclipse.5.重啟Eclipse。

重新啟動之后,更新您的Eclipse設置指向SDK目錄。

1.選擇Window>Preferences...toopenthePreferencespanel.(Mac

OSX:Eclipse>Preferences)

2.選擇Androidfromtheleftpanel.

3.關于在主面板中SDK的定位,點擊Browse...并找到SDK的目錄。

4.點擊Apply,然后OK.

建立應用程序簽名

為了支持簽簽名,你應該首先確認Keytool關于SDK的編譯工具是有效的。在

大多數(shù)情況下,你能夠告訴的SDK編譯工具如何找到Keytool,通過設置你的J

AVA_HOME環(huán)境變量設置與一個合適的JDK。另外,您也能夠添加keytool的

JDK版本至IJ您的PATH變量

假如你正在開發(fā)Linux的一個版本,那原本使用的是GNU的JAVA編譯噴,請

確保該系統(tǒng)正在使用的Keytool的JDK版本,而不是使用gcj,假如keytool已經(jīng)

在您的路徑,它可能是指向在一個符號鏈接是/usr/bin/keytool。在這種情況下,

檢查符號鏈接的目標,以確保它指向正確的Keytool.

假如您使用的ant編譯你的.apk文件4而不是ADT,你務必重新產(chǎn)生你的

build.xml文件。為了做到這一點,請執(zhí)行下列步驟:

1.在您的android應用程序工程目錄中,找到并刪除目前的build.xml文件

2.2.運行actMtycreator,直接輸出到包含您的應用程序項目的文件夾

3.-execactivitycreator

--outyour.activity.YourActivity

運行這種方式/activityCreator不可能擦出或者創(chuàng)建新的Java文件(或者

manifest文件q,關于那些已經(jīng)存在的activity與packageo重要的是,package

與activity是真實存在的。該工具創(chuàng)建一個新的build.xml文件,與一個新的目錄

稱libs”中,這個目錄將放置第三方jar文件,這是你就能夠使用ant腳本自動處

理。

移植您的應用程序

更新過您的SDK以后,您可能會遇到破舊的代碼,由于框架與API的變化。

您需要更新您的代碼以匹配變化的Andriod的APL

開發(fā)與調(diào)試

要緊內(nèi)容

在eclipse上開發(fā)Android應用程序

在用eclipseIDE開發(fā)android應用程序之前,你首先要創(chuàng)建一個Android工程,

同時建立一個啟動配置,在此之后你才能夠開始編寫,運行,與調(diào)試你的應用程

序。

創(chuàng)建一個android工程

ADT提供了一個新的一程向?qū)В隳軌蚩焖俚膭?chuàng)建一個新的工程或者者在現(xiàn)相

代碼上創(chuàng)建工程。創(chuàng)建工程的步驟如下:

選擇File>New>Project

1.選擇Android>AndroidProject,然后按下Next

2.選擇項目內(nèi)容:

o選擇Createnewprojectinworkspace,為編碼創(chuàng)建一個全新

的工程。

輸入工程名稱(projectname),基礎軟件包的名稱(thebase

packagename),與Activity類的名稱。以創(chuàng)建stub.java文件等

文件與程序名字。

oi&WCreateprojectfromexistingsource,為己有代碼創(chuàng)建一

個工程。假如你想編譯運行SDK中提供的示例程序,能夠使用這個

選項。示例程序的存放在SDK的samples/目錄下。

瀏覽包含已有代碼的目錄,點擊ok,假如目錄中包含有可用的android

manifest文件,ADT將為你填寫合適的軟件包,activity,與應用程

序名稱。

3.按下Finish.

ADT插件會根據(jù)你的二程類型創(chuàng)建合適的文件與文件夾,如下:

?src/包含stub.javaActivity文件的文件夾.

?res/資源文件夾.

?AndroidManifest.xml工程清單.

創(chuàng)建一個啟動項

能夠在eclipse上運行調(diào)試應用程序之前,你務必為它創(chuàng)建一個啟動項。啟動項

指定哪個工程將被啟動,哪個actMty開始工作,與使用什么模擬器選項等。

按照下列步驟為Eclipse版本的應用程序創(chuàng)建合適的啟動項:

1.打開啟動項管理工具。

o在Eclipse3.3(Europa)的版本中,酌情選擇Run>OpenRun

Dialog...orRun>OpenDebugDialog...。

o在Eclipse3.4(Ganymede)版本中,酌情選擇Run>Run

Configurations...orRun>DebugConfigurations...。

2.在左邊的工程類型列表選擇AndroidApplication選擇,雙擊(或者者點

擊右鍵選擇new),創(chuàng)建一個新的啟動項。

3.輸入啟動項名稱。

4.在Android標簽中,瀏覽要開始的工程與Activity。

5.你能夠在Common標簽中設置更多的選項.

6.按下Apply儲存啟動配置,或者者按下Run或者Debug()。

運行與調(diào)試應用程序

一旦你設定了工程與工程啟動配置,你就能夠按照下列的說明運行與調(diào)試應用程

序了。

從eclipse主菜單,根據(jù)情況選擇Run>Run或者者Run>Debug,開始運行或

者者調(diào)試活動啟動項。

注意,這里活動啟動項是在運行配置管理中最最近一次選中的那個。它不一定就

是在EclipseNavigation面板中選擇的程序(假如有的話)

運行或者調(diào)試應用程序?qū)⒂|發(fā)下列動作:

?啟動模擬潛,假如他還沒有開始運行。

?編譯工程,假如在上次編譯的基礎上修改過代碼,將重新編譯。在模擬

器上安裝應用程序。

?Run選項,開始運行程序。

?Debug在”Waitfordebugger”模式下啟動程序然后打開調(diào)試窗口并將

EclipseJava調(diào)試器與程序關聯(lián)。

利用其他IDEs與工具開發(fā)Android應用程序

然而,假如你想在其他的IDE上開發(fā)程序,比如IntelliJ,或者者使用沒有ADT

插件的eclipse也能夠,SDK提供了安裝,編譯,調(diào)試應用程序所需要的工具。

創(chuàng)建一個android工程

AndroidSDK包含一個activityCreator的程序,它將為工程產(chǎn)生多個stub文件

與一個build文件。你能夠用這個程序創(chuàng)建一個新的Android工程或者者在現(xiàn)有

代碼上創(chuàng)建工程,如SDK中包含的例子。關于Linux與Mac系統(tǒng),SDK提供

activityCreator.py,一個Python腳本,Windows上則是activityCreator.bat一個

批處理腳本。不管是哪種平臺,用法是一樣的。

按下列步驟運行activityCreator創(chuàng)建Android匚程:

1.在命令行下,切換到SDK下的tools/目錄下,為你的工程文件新建一個

目錄。假如你是在現(xiàn)有代碼上創(chuàng)建工程,切換到程序的根目錄下。

2.運行activityCreator。在命令行下,你務必指定完全合格的類名作為參數(shù)。

假如你是創(chuàng)建一個全新的工程,這個類代表的與它同名的stub類與腳本

文件。假如是在現(xiàn)有代碼上創(chuàng)建工程,務必指定軟件包中其中一個Activity

類的名稱。命令選項的腳本包含:

o-out<folder>設定輸出目錄。默認情況下輸出目錄為當前目

錄。假如你想為工程文件創(chuàng)建一個新的目錄,能夠使用這個選項來指

向它。

o--ideintellij,在一個新的項目中生成IntelliJIDEA工程文

件。

這里有個例子:

-/android_linux_3dk/tools$./activityCreator.py--out

myprojcct.ActivityNamc

package:

out_dir:myproject

activity_name:ActivityName

-/androidlinuxsdk/tools$

actMtyCreator腳本生成下列文件與目錄(但是不能重寫已有文件):

?AndroidManifest.xml程序的清單文件,同時為工程指定ActMty類。

?build.xml一個Ant文件,用來編譯/打包應用程序。

?src/your/package/name/ActivityName.java你指定的輸入

Activity類。

?your_activity.iml,your_activity.ipr,

your_activity.iws[onlywiththe-ideintelliJflag]intelliJ

工程文件

?res/資源目錄.

?src/源代碼目錄.

?bin/build腳本的輸出目錄.

當然你需要避免移動SDK目錄,由于它將打斷編譯腳本。(再重新build之前

需要手動更新SDK的映射路徑)

編譯android應用程序

使用activitycreator生成的Ant文件build.xml來編譯程序

1.呼叫Ant之前,你需聲明JAVA_HOME環(huán)境變量,并將它設置為JDK的

安裝路徑。

注意:在windows上,JDK默認的安裝路徑為"ProgramFiles",這個路

徑將會引起Ant失敗,由于路徑中間有空格。解決這個問題,你能夠像這

樣指定環(huán)境變量JAVAJHOME:JAVA_HOME=c:\Prora-1\Java\然

而簡單的解決方法是將JDK安裝在沒有空格的目錄下。比如:

c:\java\jdkl.6.0_02.

2.假如你還沒有這么準備好,按照上面創(chuàng)建一個新的工程的介紹建立一個工

程。

3.現(xiàn)在你能夠為你的工程運行Ant編譯文件,只需在build.xml同文件夾下

輸入ant即可。每次修改原文件或者是資源,都需要重新運行ant,它將

把最新版的應生程序打包以便deploy.

運行Android程序

1.啟動模擬器(命令行下運行sdk目錄下的/tools/emulator)。

2.模擬器切換到主畫面(最好不要在程序運行的時候向模擬器安裝程序,能

夠按home鍵離開應用程序)。

3.運行adb,安裝myproject/bin./vappname>.apk文件。比如,安裝Lunar

Lander示例,命令行下,切換到SDK目錄下的/sample/LunarLander子

目錄下,輸入../../tools/adbinstallbin/LunarLander.apk

4.在模擬器中,打開可執(zhí)行程序列表,卷動屏幕,選中并啟動你的應用程序。

注意:當你第一次安裝一個ActMty時,你可能需要在啟動項顯示之前,或者者

其它程序調(diào)用它之前重新啟動模擬器。由于軟件包管理工具通常只有在模擬器啟

動時才能完全的審查manifestso

為程序附加調(diào)試器

這一節(jié)我們介紹如何在屏幕上顯示調(diào)試信息(比如CPU使用率),與如何將IDE

與模擬器上運行的程序關聯(lián)起來。

使用eclipse插件能夠自動的生成調(diào)試器。但你也能夠通過配置IDES來監(jiān)聽調(diào)

試端口得到調(diào)試信息。

1.設置模擬器調(diào)試配置選項。比如,等到調(diào)試信息被加載后才啟動應用程序。

注意,很多調(diào)試選項無需DDMS也能夠使用,比如模擬器上顯示CPU的

使用效率,或者者屏幕的刷新頻率。

配置IDE附加調(diào)試端口

DDMS將為每一個虛擬機分配一個特殊的調(diào)試端口,這個端口在模擬器上能夠

找到。你務必將你的IDE與此端口(虛擬機上信息欄中有列出這些端口)關聯(lián)

或者者是默認的端口8700o這樣能夠使IDE連接到模擬器上程序列表中的任一

個程序。

你的IDE需要能夠關聯(lián)模擬器上正在運行的程序,顯示它的線程,并同意你掛

起它,檢查它的狀態(tài),設置斷點。假如你在開發(fā)設置面板選擇了“等待調(diào)試”,應

用程序?qū)⒌鹊紼clipse連接后才運行,因此你需要在連接之前設置斷點。

修改正在調(diào)試的程序,或者者在當前程序運行時選擇“等待調(diào)試”將引起系統(tǒng)殺死

這個應用程序。假如你的程序處于一種壞的狀態(tài),你能夠使用方式殺死它,方法

很簡單,只需要設置與鉤掉復選框。

應用程序簽名

Android系統(tǒng)要求所有的程序通過數(shù)字簽名才能安裝,假如沒有可用的數(shù)字簽名,

系統(tǒng)將不許安裝運行此程序。不管是模擬器還是真實設備,只要是android系統(tǒng),

這都適用。鑒于此原因,在設備或者者是模擬器上運行調(diào)試程序之前,你務必為

你的應用程序設置數(shù)字簽名。

懂得android程序簽名的重要兒點::

?所有的程序都務必簽名,沒有被簽名的程序,系統(tǒng)將不能安裝。

?你可使用自簽署證書簽署你的應用程序,務必是無憑證授權是的。

?系統(tǒng)僅僅會在安裝的時候測試簽名證書的有效期,假如應用程序的簽名是

在安裝之后才到期,那么應用程序仍然能夠正常啟用。

?你能夠使用標準工具-KeytoolandJarsigner-生成密鑰,來簽名應用程序

的.apk文件。

AndroidSDK工具能夠幫助你在調(diào)試時給應用程序簽名。ADT插件與Ant編譯

工具都提供了兩種簽名模式-debug模式與release模式

?debug模式下,編譯工具使用JDK中的通用程序Keytool通過已知方法

與密碼創(chuàng)建秘鎖與密鑰。每次編譯的時候,工具使用debug密鑰簽名應

用程序的.apk文件。由于密碼是己知的,工具不需要在每次編譯的時候提

示你輸入密鎖與密鑰。

.當你的應用程序己經(jīng)準備release了,你能夠在release模式下編譯。

release模式下,工具編譯時不可能將.apk文件簽名。你需要用Keytool

生成密鑰與密鎖,再用JDK中的Jarsigner工具給.apk文件簽名。

簽名基本設置

為了支持生成密鎖與密鑰,你首先要確定Keytool在SDK編譯工具中是有效的。

在很多情況下,你能夠設置JAVA_HOME環(huán)境變量,告訴SDK如何找到Keytool,

或者者你能夠在PATH變量中添加Keytool的JDK版本。

假如你是在linux版本中開發(fā),原本是來自JavaGnu編譯器,請確定系統(tǒng)用的

是Keytool版本的JDK,而不是gcj版本的。假如Keytool已經(jīng)在PATH中,它

將指向符號連接/usr/bin/keytool。這種情況下,核實符號連接的目標是指向JDK

下的Keytool

Eclipse/ADT中的簽名

假如你是在Eclipse下開發(fā),并已經(jīng)按照上面所介紹的安裝了Keytool,默認情

況下是能夠在debug模式下簽名的。當你運行調(diào)試程序的時候ADK將給.apk文

件簽名,并安裝到模擬器上。這部分不需要特殊的動作,ADT已經(jīng)進入Keytool

在release模式下編譯程序,在Package面版上按project右鍵,選擇Android

Tools>ExportApplicationPackage.或者者你能夠點擊ManifestEditor,

overview頁面上的“Exportingtheunsigned.apk”連接,導出未簽名apk文件。

儲存.apk文件之后,用Jarsigner及你自己的密鑰給apk文件簽名,假如沒有

密鑰,你能夠用Keystore創(chuàng)建密鑰與密鎖。假如已經(jīng)有一個密鑰了,如公共密

鑰,就能夠給.apk文件簽名了。

Ant簽名

假如用Ant編譯.apk文件,假設你使用最新版的SDK中包含的activitycreator

工具生成build.xml文件,默認情況下能夠使用debug簽名模式。當你運行Ant

對build.xml編譯程序,build腳本將生成密鎖與密鑰并簽名.apk文件。這部分不

需要做其它特殊的動作。

release模式下編譯程序,你需要做的是在Ant命令中指定編譯目標“release”。

比如,假如是在bulid.xml所在目錄下運行ant,輸入下列命令:

antrelease

build腳本編譯程序時并沒有簽名。編譯完.apk文件后,你需要用Jarsigner與

你自己的密鑰給.apk文件簽名。假如沒有密鑰,你能夠用Keystore創(chuàng)建密鑰與

密鎖。假如已經(jīng)有一個密鑰了,如公共密鑰,你就能夠給.apk文件簽名了。

調(diào)試證書期限

自簽名證書用丁程序的debug模式下(默認情況下是Eclipse/ADT與Ant

builds),自它創(chuàng)建時間起有一年的期限。

當證書到期時,將會有編譯錯誤。And下錯誤顯示如下:

debug:

[echo]Packagingbin/samples-debug.apk,andsigningitwith

adebugkey...

[exec]DebugCertificateexpiredon8/4/083:43PM

在Eclipse/ADT下,你能夠看到類似的錯誤。

解決這個問題的簡單方法是刪除debug.keystore文件。Linux/MacOSX下這個

文件儲存在“android下,windowsXP下,文件儲存在C:\Documentsand

Settinqs\<user>\LocalSettinqsXApplicationData\Androido

windowsVista下文件儲存在

C:\Users\<user>\AppData\Local\Androido

下次編譯時,編譯工具將生成新的密鎖與密鑰。

使用ApiDemo示例應用程序

AndroidSDK包含了一套示例程序,他們驗證了許多功能與API的用法。

ApiDemos軟件包被提早安裝在模擬器中,因此你能夠啟動模擬器,在主畫面的

應用程序抽屜里打開它。

你也能夠在vSDK>/samples/ApiDemos中找到源碼,可用看看它,學習Demo

的實現(xiàn)方法。

假如你愿意,你還能夠?qū)piDemo的示例程序作為一個工程加載進來,修改并

在模擬器上運行。然而,在這之前你首先要卸載之前已經(jīng)安裝的ApiDemos。假

如你沒有移除之前安裝的版本而直接在開發(fā)環(huán)境中運行或者修改ApiDemos,將

會有安裝錯誤。

調(diào)試

Android有相當廣泛的一套工具幫助你調(diào)試你的應用程序:

I/MemoryDealer(763):MemoryDealer(this=0x54bda3):

Creating2621440bytesheapat0x438db000

I/Logger(1858):getView()requestingitemnumber0

I/Logger(1858):getView()requestingitemnumber1

I/Logger(1858):getView()requestingitemnumber2

D/ActivityManager(763):Stopping:

HistoryRecord{409dbb20com.android.home.AllApps}

你能夠用legcat閱讀這些信息°

設備上的調(diào)試與測試設置

Android同意你設置多個設定以便你測試與調(diào)試程序。獲得模擬器的開發(fā)設置,

能夠選擇DevTools>DevelopmentSettingso按照下列選項將打開開發(fā)設置頁

(或者其中之一):

?Debugapp選擇要被調(diào)試的程序,你不需要設置這個來關聯(lián)調(diào)試器,但

是這個變量有兩個作用:

o防止Android在調(diào)試的斷點處長時間停留時拋出錯誤。

o同意你選擇WaitforDebugger選項來暫停程序啟動,直到調(diào)試器

被關聯(lián)上(如下介紹)

?Showscreenupdates選中這個選項時,屏幕上任何被重繪的矩形區(qū)域

會出現(xiàn)粉紅色。這關于發(fā)現(xiàn)屏幕不必要的繪圖很有用。

?ShowCPUusage在屏幕頂端顯示一個CPU進度,顯示CPU的使用

情況。上面紅色欄顯示總的CPU使用率,下方綠色欄顯示目前畫面的

CPU使用時間。注意:一旦打開次功能就不能關掉,除非重新啟動模擬

器。???

?Showbackground沒有activity屏幕顯示時顯示背景面板,這個通常在

調(diào)試的時候才會發(fā)生。

模擬重視起后這些設置仍被經(jīng)歷。

頂端調(diào)試技巧

快速堆棧轉(zhuǎn)儲

從模擬器上獲得堆轉(zhuǎn)儲,你能夠登錄adbshell,用“ps”命令找到你想要

的進程,然后用“kill-3",堆棧使用軌跡將顯示在log文件中。

在模擬器屏幕上顯示有用信息

獲得模%器中應用程序狀態(tài)信息(dumpsys)

獲得無線連接信息

你能夠通過DalvikDebugMonitorService工具獲得無線連接信息。在

Device菜單中選擇"Dumpradiostate"

記錄跟蹤數(shù)據(jù)

記錄無線數(shù)據(jù)

默認情況下系統(tǒng)不記錄無線數(shù)據(jù)(數(shù)據(jù)很多)。然而,你能夠用下面的

命令記錄無線數(shù)據(jù):

adbshell

logcat-bradio

運行adb

獲得模擬器屏幕截圖

DalvikDebugMonitorServer(DDMS)能夠抓取模擬器屏幕截圖。

使用調(diào)試幫助類

編譯安裝Anroid應用程序

Android要求專門的編譯工具能夠正確的編譯資源文件與應用程序的其他部分,

因此,你務必為你的應用程序建立一個專門的編譯環(huán)境。

Android目前不支持的在本地代碼上開發(fā)第三方應用程序。

移出一個Android應用程序

Eclipse技巧

在Eclipse上執(zhí)行任意java代碼

在Eclipse上,當程序停在斷點處時你能夠執(zhí)行任意代碼。比如,在一個含有“zip”

字符串參數(shù)的函數(shù)中,你能夠獲得軟件包信息,調(diào)用類方法。你也能夠執(zhí)行任意

靜態(tài)方法:如,輸入android,os.Debug.startMethodTracing(),啟

動dmTraceo

打開代碼執(zhí)行窗口,主菜單中選擇Window>ShowView>Display,打開顯示窗

口,一個簡單的文本編輯器。輸入你的代碼,高亮顯示文字,單擊J圖標(或者

者CTRL十SHIFT十D)運行代碼。代碼在被選線程的上下文中運行,而這個

線程務必是停在斷點處或者者單步停止點。(假如你手動掛去線程,你務必單步

執(zhí)行。線程停在Object.wait()是沒有用的)。

假如你目前是停在斷點,你能夠簡單的按下(CTRL+SHIFT+D)高亮并執(zhí)行

一段代碼。

你能夠高亮同一選中區(qū)域的文字,通過按下ALT+SHIFT+向上/向下箭頭來改

變所選區(qū)域的大小

下面是一些例子,輸入內(nèi)容與eclipse顯示窗口的回應信息。

InputResponse

zip(java?lang.String)

/work./device/out/linux-x86-debug/anciroici/app/an

zip,endsWith(".zip")(boolean)true

zip.endsWith(n.jarH)(boolean)false

你也能夠利用剪貼板在不調(diào)試時插入執(zhí)行代碼。在eclipse文檔中查找

"scrapbook”有關。

手動運行DDMS

增加JUnit測試類

在Eclipse/ADT,你能夠在程序中添加JUnit測試類,然而,測試運行正常之前你

需要設置專門的JUnit配置,

Hello,Android!

作為開發(fā)者,你的第一感受是你拿到這個開發(fā)框架寫“Hell。,World!”程序時的難

易程度給你留下的。當然,在Android里,這個非常容易,下面我給你演示:

下面的章節(jié)將全面描述

讓我們開始把

創(chuàng)建工程

創(chuàng)建一個盡可能簡單的工程,Eclipse的插件能夠使Android的開發(fā)變得簡單。

首先,你需要對如何創(chuàng)建“Hello,World!”有個大概的熟悉:

1.在菜單中File>New>Project中創(chuàng)建一個新的Android項目。

2.在創(chuàng)建Android項目的對話框里填寫項目的全面信息。

3.編輯自動生成代碼的模板去顯示一些輸出。

這樣就能夠了,下一步,我們將全面講解每一步。

1.創(chuàng)建一個新的Android項目

打開Eclipse,選擇File>New>Project假如Android的Eclipse的插

件正確安裝了,彈出的對話框里就會有一項“Android”,這一項有唯一的

子項“AndroidProject”。

卜NewProject□x

Selectawizardo

Wizards:

typefiltertex

l/XjavaProject

來JavaProjectfromExistingAntBuildfile

)2Plug-inProject

>^General

▼(^Android

?AndroidProject

D?C++

>&CVS

>及EclipseModelingFramework二J

?Next>Cancel

選中“AndroidProject”,點下一步。

2.填寫工程的全面信息

下一步需要你填寫項目的全面信息,這里有個例子:

9NewAndroidProject□x

NewAndroidProject

CreatesanewAndroidProjectresource.a

Projectname:|HelloAndroid

Contents

?Createnewprojectinworkspace

OCreateprojectfromexistingsource

0Usedefautlocation

Properties

Packagename:|com.android.hello

Activityname:|nelloAndroid

Applicationname:|Hello,Android

?<BackFinish

每一項具體的意思:

工你想把工程儲存在你機錯上哪個目錄里

包>包的命名空間(需要遵循java編程語言的命名規(guī)則),你的所有

名代碼都會在這個命名空間下。這也會生成包的名稱從而活動自動生

成。你使用的這個包的名字務必與其他安裝在你機器上的包名字不

沖突,因此,使用一個標準規(guī)則的包名字是非常重要的。如上例,

我們使用包的名字為氣。01總的「34',但你需要使用一個不一致的

類型。

“活這是插件為你自動生成類的名字。它也會是Android活動類的一個

動”子類。一個活動僅僅是一個包含一些功能并能執(zhí)行的類。假如它選

名擇,能夠創(chuàng)建用戶界面,但這不是務必的。

程這是最后生成應用程序的名字。

可選框里"Usedefaultlocation”同意你選擇其他目錄儲存項目產(chǎn)生的

其它文件。

3.編輯自動生成代碼

運行插件后,會自動生成一個類“HelloAndroid”(能夠在程序包里

HelioAndroid>src>com.android.hello找到)。像這樣:

publicclassHelloAndroidextendsActivity{

/**活動第一次被創(chuàng)建后調(diào)用。★★/

@Override

publicvoidonCreate(BundlesavedinstanceState){

super.onCreate(savedinstanceState);

setContentView(R.layout.main);

}

)

現(xiàn)在,你能夠執(zhí)行程序了。只是我們還能夠進一步研究下,這樣我們能更

好得懂得程序。因此,下一步我們能夠改一些代碼

建立UI

看下面我們修改的代碼,你能夠在你的HelloAndroid.java文件里做相同的修改,

我們來逐行分析:

packagecom.android.hello;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.widget.Textview;

publicclassHelioAndroidextendsActivity{

/**活動第一次被創(chuàng)建后調(diào)用*/

@Override

publicvoidor.Create(BundlesavedlnstanceState){

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論