2016Android應(yīng)用開發(fā)入門教程_第1頁
2016Android應(yīng)用開發(fā)入門教程_第2頁
2016Android應(yīng)用開發(fā)入門教程_第3頁
2016Android應(yīng)用開發(fā)入門教程_第4頁
2016Android應(yīng)用開發(fā)入門教程_第5頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Android應(yīng)用開發(fā)入門教程PAGE2PAGE2PAGE11PAGE11目 錄第一篇Android系統(tǒng)結(jié)構(gòu)和SDK使用 5第1章 Android的系統(tǒng)介紹 5系統(tǒng)介紹 5軟件結(jié)構(gòu)和使用的工具 7第2章AndroidSDK的開發(fā)環(huán)境 10AndroidSDK的結(jié)構(gòu) 10AndroidSDK環(huán)境安裝 安裝JDK基本Java環(huán)境。 安裝Eclipse 12獲得AndroidSDK 122.2.4(1).在Eclipse3.4(Ganymede)中安裝ADT 142.2.4(2).在Eclipse3.5(Galileo)中安裝ADT 172.2.5.在Eclipse中配置AndroidSDK 20Android中運行仿真器環(huán)境 21建立Android虛擬設(shè)備 21運行虛擬設(shè)備 22使用Android中的工具 23使用logcat 24使用仿真器控制 25命令行工具adb、mksdcard等 26使用設(shè)備控制 28Android中建立工程 29建立工程 29查看和編輯各個文件 31運行工程 33第二篇Android應(yīng)用程序的概述和框架 36第3章Android應(yīng)用層程序的開發(fā)方式 36應(yīng)用程序開發(fā)的結(jié)構(gòu) 36API參考文檔的使用 36第4章Android應(yīng)用程序示例 40HelloActivity程序的運行 40HelloActivity的源文件結(jié)構(gòu) 41Android.mk文件 41AndroidManifest.xml文件 42源代碼文件 42布局文件 43其他資源文件 43HelloActivity的編譯結(jié)構(gòu) 43SkeletonApp的程序的運行 44SkeletonApp的源文件結(jié)構(gòu) 44SkeletonApp的編譯結(jié)構(gòu) 46第5章Android應(yīng)用程序的內(nèi)容 47Android應(yīng)用程序的概念性描述 47應(yīng)用程序的組成部分 47應(yīng)用程序的生命周期 48應(yīng)用程序包含的各個文件 50使用am工具啟動Android應(yīng)用程序 51第三篇Android的UI系統(tǒng)實現(xiàn) 53第6章UI的基本外形和控制 53控件和基本事件的響應(yīng) 53事件響應(yīng)方法 54第二種響應(yīng)方法 56第三種響應(yīng)方法 57鍵盤事件的響應(yīng) 57運動事件的處理 59屏幕間的跳轉(zhuǎn)和事件的傳遞 62跳轉(zhuǎn)的方法 62帶有返回值的跳轉(zhuǎn) 63菜單的使用 66彈出對話框 67提示信息和兩個按鈕的對話框 68提示信息和三個按鈕的對話框 69列表項對話框 70單選項和按鈕對話框 70復(fù)選項和按鈕對話框 71文本的按鍵對話框(使用布局文件) 72樣式的設(shè)置 74預(yù)定樣式對話框 74自定義樣式對話框 74窗口透明樣式示例 75第7章控件(Widget)的使用 78Android中控件的層次結(jié)構(gòu) 78基本控件的使用 79普通按鈕 79圖像區(qū)域 80圖像按鈕 82進度條 83多種控件 85自定義的視圖 86第8章視圖組(ViewGroup)和布局(Layout)的使用 89Android的屏幕元素體系 89幾種獨立使用的視圖組 90網(wǎng)頁視圖 90旋轉(zhuǎn)按鈕 91文本切換器 93圖像切換器 94作為簡單容器使用的視圖組 95單選按鈕組 95使用滾動條 96布局(Layout) 99基本的布局內(nèi)容 99線性布局(LinearLayout) 100相對布局(RelativeLayout) 101表單布局(TableLayout) 103網(wǎng)格(Grid)視圖組 103列表(List)視圖組 107使用Tab組織UI 109第9章2D圖形接口的使用 使用2D圖形接口的程序結(jié)構(gòu)。 圖像、圖形、文本的基本繪制 文本的對齊方式 使用路徑效果(PathEffect) 剪裁效果 記錄繪制的過程 121動畫效果 123第10章OpenGL3D圖形的使用 125使用OpenGL圖形接口的程序結(jié)構(gòu)。 125基本的繪制 126渲染器的實現(xiàn) 1273D動畫效果的實現(xiàn) 129第一篇Android系統(tǒng)結(jié)構(gòu)和SDK使第1章 的系統(tǒng)介紹???????????系統(tǒng)介紹

???????????軟件結(jié)構(gòu)和使用的工具系統(tǒng)介紹AndroidGoogleAndroidGoogleLinux平臺的、開源的、智能手機操作系件和應(yīng)用程序,由于源代碼開放,Android可以被移植到不同的硬件平臺上。OHA(OpenHandsetAlliance,開放手機聯(lián)盟)Google33Android移動平臺系統(tǒng)的發(fā)展而組建的一個組織。HTCGoogleG2HeroNexusAndroid手機,如下圖所示:圖G1、G2、Hero和NexusOne手機GoogleAndroid可以基于仿真器環(huán)境。Android1.5以前的仿真環(huán)境,Android1.6以后的仿真器環(huán)境如下所示:圖Android1.5以前的仿真器環(huán)境圖Android1.6以后的仿真器環(huán)境作為一個手機平臺,Android在技術(shù)上的優(yōu)勢主要有以下幾點:全開放智能手機平臺多硬件平臺的支持使用眾多的標(biāo)準(zhǔn)化技術(shù)核心技術(shù)完整,統(tǒng)一SDK和文檔完善的輔助開發(fā)工具Android的開發(fā)者可以在完備的開發(fā)環(huán)境中進行開發(fā),Android的官方網(wǎng)站也提供了豐富的文檔、資料。這樣有利于Android系統(tǒng)的開發(fā)和運行在一個良好的生態(tài)環(huán)境中。軟件結(jié)構(gòu)和使用的工具從宏觀的角度來看,Android是一個開放的軟件系統(tǒng),它包含了眾多的源代碼。從下至上,Android系統(tǒng)分成4個層次:1層次:Linux操作系統(tǒng)及驅(qū)動;2層次:本地代碼(C/C++)框架;3層次:Java框架;4層次:Java應(yīng)用程序。Android系統(tǒng)的架構(gòu)如圖所示:PAGEPAGE10PAGE9PAGE9JavaJavaJavaJavaJavaLinux用戶空間C/C++<-->JAVA系統(tǒng)API圖Android系統(tǒng)的架構(gòu)Android的第1層次由C語言實現(xiàn),第2層次由C和/C++實現(xiàn),第3、4層次主要由Java代碼實現(xiàn)。12Linux12、3、4層次運行于用戶空間。第2層次和第3層次之間,是本地代碼層和Java代碼層的接口。34AndroidAPIAndroid3層次以下API即可。AndroidJavaAndroidJava基本類組成。對于Android應(yīng)用程序的開發(fā),主要關(guān)注第3層次和第4層次之間的接口。除了軟件本身的代碼之外,Android還提供了一系列工具來輔助系統(tǒng)開發(fā),這些主要的工具包括:aap(ndrodssetPakgigozp(zipjakassets。adb(dridebgBrige,ndoid調(diào)試橋adbkAndroid的調(diào)試器連接在一起。andodandodndrodirtulevices(。L(AndrodInterfaceDscipionLngugndrodL工具可以生成進程Service可能使用的接口。Devices,Android虛擬設(shè)備)用于配置模擬器,模擬出類似的設(shè)備效果(DalvikDeugniorServi,vkvk或者設(shè)備上管理進程并協(xié)助調(diào)試??梢允褂盟鼩⑺肋M程,選擇某個特定的進程來調(diào)試,產(chǎn)生跟蹤數(shù)據(jù),觀察堆(heap)和線程信息,截取模擬器或設(shè)備的屏幕畫面,還有更多的功能。dx:dx工具用于將.class字節(jié)碼(bytecode)Android字節(jié)碼(保存在.dex文件中)這個字節(jié)碼文件AndroidJava虛擬機運行用的。Draw9-patch:Draw9-patch(WYSIWYG)NinePatch圖形。Eulato(drod系統(tǒng)的運行,使用模擬器非常適合調(diào)試和測試應(yīng)用程序。Hierarchy層級觀察器(view)的布局層次展現(xiàn)出來,此外,還給當(dāng)前界面提供了一個具有像素柵格(grid)的放大鏡觀察器。ksdcard(dikiage(例如SD卡。Monkey:Monkey是在模擬器或設(shè)備上運行的一個小程序,它能夠產(chǎn)生隨機的用戶事件流,例如:點擊(cictucgesueMney給正在開發(fā)的程序做隨機的但可重復(fù)的壓力測試。sqlite3:sqlite3SQLitesqlite標(biāo)準(zhǔn)命令行工具。TraceviewAndroid應(yīng)用程序產(chǎn)生的跟蹤日志(tracelog)轉(zhuǎn)換為圖形化的分析視圖。2章AndroidSDK的開發(fā)環(huán)境???????????AndroidSDK

???????????AndroidSDK的環(huán)境安裝Android中運行仿真器環(huán)境Android中建立中程AndroidSDKAndroidAndroidAPISDKEclipseIDE開發(fā)環(huán)境。AndroidSDK的結(jié)構(gòu)運行仿真器AndroidSDK文檔示例代碼運行仿真器AndroidSDK文檔示例代碼底層映像安裝插件設(shè)置SDKADTEclipse開發(fā)環(huán)境Eclipse開發(fā)環(huán)境本機JAVA環(huán)境工具WindowsLinux圖Android系統(tǒng)的IDE開發(fā)環(huán)境AndroidSDKWindowsSDK中工具不同Android開發(fā)者的網(wǎng)站上SDK。Android的SDK命名規(guī)則為:android-sdk-{主機系統(tǒng)}_{體系結(jié)構(gòu)}_{版本}例如,Android提供SDK的幾個文件包如下所示:android-sdk-windows-1.5_r2.zipandroid-sdk-linux_x86-1.5_r2.zipandroid-sdk-windows-1.6_r1.zipandroid-sdk-linux_x86-1.6_r1.zipSDK的目錄結(jié)構(gòu)如下所示:add-ons:附加的包;docs:HTML格式的離線文檔;platforms:SDK核心內(nèi)容;tools:工具。在platforms中包含了的各個AndroidSDK版本的目錄中,包含系統(tǒng)映像,工具、示例代碼等內(nèi)容。data/:包含默認(rèn)的字體、資源等內(nèi)容;images/Android(Androidsystemimage),默認(rèn)的用戶數(shù)據(jù)映像(userdataimage),默認(rèn)的內(nèi)存盤映像(ramdiskimage)等等,這些映像是仿真器運行的時候需要使用的;samples/Androidskins/:包含了幾個仿真器的皮膚,每個皮膚對應(yīng)了一種屏幕尺寸;templates/SDK開發(fā)工具的模板;tools/Anydevelopmenttoolsthatarespecifictotheplatformversion.android.jar:AndroidAndroid應(yīng)用程序的時候被使用。Android的發(fā)布版本API級別Android1.12Android1.53Android1.64Android2.05Android2.0.1Android的發(fā)布版本API級別Android1.12Android1.53Android1.64Android2.05Android2.0.16Android2.17AndroidSDKADTDevelopmentEclipse集成環(huán)境的一個插件。EclipseAndroid應(yīng)用程序既容易又快速。AndroidSDK環(huán)境安裝Android的SDKWindows版本需要以下的內(nèi)容:JDK1.5或者JDK1.6Eclipse集成開發(fā)環(huán)境ADT(AndroidDevelopment插件AndroidSDK其中ADT和AndroidSDK可以到Android開發(fā)者的網(wǎng)站去下載,或者在線安裝亦可,ADT的功能如下所示:EclipseIDEAndroid開發(fā)工具。例如,ADTEclipse訪問DDMS工具的很多功能——屏幕截圖、管理端口轉(zhuǎn)發(fā)g提供了一個新的項目向?qū)ojtidndridAndroid應(yīng)用程序的過程變得自動化,以及簡單易行。AndroidAndroidmanifestXML在Eclipse環(huán)境中使用AndroidSDK的步驟如下所示:安裝JDK基本Java環(huán)境。Eclipse的運行需要依賴JDK,因此需要下載使用JDK的包,并進行安裝。JDK1.6版本其文件為jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe,點擊直接進行安裝即可。安裝EclipseEclipse集成開發(fā)環(huán)境是開放的軟件,可以到Eclipse的網(wǎng)站上去下載:/downloads/Eclipse包含了以下的幾個版本Eclipse3.3(Europa)Eclipse3.4(Ganymede)Eclipse3.5(Galileo)在AndroidEclipse3.4和Eclipse3.5Eclipse3.3Android官方的驗證。如果使用Eclipse3.4,可以去下載eclipse-SDK-3.4-win32.zip包;如果使用Eclipse3.5,可以去下載eclipse-SDK-3.5.1-win32.zipeclipse.exe文件。獲得AndroidSDKAndroidSDKAndroidAndroidSDK,可能使用到兩種方式:AndroidSDK的包(Archives)通過軟件升級的方式(Setup)下載AndroidSDKAndroidSDK1.6AndroidSDK1.1AndroidSDK1.5AndroidSDK1.6可以直接從AndroidSDK包含LinuxWindowsMACWindowsWindows的版本,例如:android-sdk-windows-1.5_r2.zip,android-sdk-windows-1.6_r1.zip,這個M的大小。以這種方式下載的AndroidSDK,不需要安裝,直接解壓縮即可。目前Android系統(tǒng)推薦使用的方式軟件升級獲得Android包:android-sdk_r04-windows.zip從ndrdndrodSK的相關(guān)包aoid-sk_r4ino.zpndrd20MSetupSDK是通過這個可執(zhí)行程序獲得的。解AndroidSDK的基本目錄結(jié)構(gòu),但是其中還沒有實際的內(nèi)容。SDKSetup.exeAndroidSDK運行程序,AndroidSDK的,出現(xiàn)SDK的下載界面:圖AndroidSDK的安裝界面SettnsForce項,并且選擇保存(Saveadpl。圖設(shè)置安裝路徑回到InstalledPackages中,進行安裝,出現(xiàn)Android的各個版本的SDK、工具、文檔的安裝界面,如下所示:圖選擇要安裝的組件每個組件可以選擇,接受(Accept)表示安裝,拒絕(Reject)表示不安裝,接受全部(AcceptAll)表示安裝所有的內(nèi)容。文檔一般安裝成最新的版本。選擇后,安裝程序?qū)⒁来伟惭b各個組件。PAGE14PAGE14PAGE15PAGE15圖安裝界面tempzipAndroidSDK。2.2.4(1).在Eclipse3.4(Ganymede)中安裝ADT第一步:啟動Eclipse選擇“Help”>“SoftwareUpdates...”準(zhǔn)備安裝插件。圖Eclipse3.4中選擇軟件升級第二步:在打開的對話框中點擊“AvailableSoftware”,出現(xiàn)Eclipse的現(xiàn)有軟件對話框。圖Eclipse3.4中選擇要安裝的插件點擊右側(cè)自上而下的第3個按鈕,“AddSite...”準(zhǔn)備增加插件。圖增加ADT的路徑在“AddSite”對話框中,輸入Android插件的路徑:/android/eclipse/ArchiveADT(目前最新的版ADT-0.9.5.zip)。pluginURLDeveloperDeveloperTools”中,圖Eclipse3.4中選擇安裝Android的DDMS和ADT然后點擊“Install...”按鈕,繼續(xù)運行,如圖所示:圖Eclipse3.4中進行安裝Android的DDMS和ADT選擇Next將出現(xiàn)如圖的對話框:圖Eclipse3.4中選擇同意Android的協(xié)議選擇接受(accept)FinishAndroid組件的階段。安裝的過程要經(jīng)過尋找依賴和安裝兩個階段,如圖所示:圖Eclipse3.4中解決依賴關(guān)系和安裝第四步:安裝完成,關(guān)閉并重新啟動Eclipse。再次進入Eclipse3.4后,將發(fā)現(xiàn)ADT已經(jīng)被安裝。2.2.4(2).在Eclipse3.5(Galileo)中安裝ADT第一步:啟動Eclipse選擇“Help”>“InstallNewSoftware...”準(zhǔn)備安裝插件。圖Eclipse3.5中選擇安裝新軟件第二步:出現(xiàn)軟件升級的對話框Eclipse3.5的軟件升級的對話框3個按鈕,“AddSite...”準(zhǔn)備增加插件。圖Eclipse3.5中增加ADT插件的路徑在“AddSite”對話框中,輸入Android插件的路徑:/android/eclipse/另外的一種方式是點擊Archive…按鈕,這樣可以不使用網(wǎng)絡(luò),直接指定磁盤中的ADT包(最新的版本是ADT-0.9.5.zip)。with/android/eclipse/,后面的列表變?yōu)榱恕癉eveloperTools”,其中包含了兩個項目:AndroidDDMSAndroidDevelopment選擇繼續(xù)進行安裝:圖Eclipse3.5中選擇安裝Android的DDMS和ADT選中后,點擊Finish將出現(xiàn)安裝的詳細(xì)信息的對話框,如圖所示:圖Eclipse3.5中選擇安裝Android的插件選擇Next進行下一步的安裝。圖Eclipse3.5中選擇同意Android的協(xié)議20202121FinishAndroid圖Eclipse3.5中選擇進行Android的插件第五步:安裝完成,關(guān)閉并重新啟動Eclipse。再次進入Eclipse3.5后,將發(fā)現(xiàn)ADT已經(jīng)被安裝。2.2.5.在Eclipse中配置AndroidSDK進入安裝ADT的Eclipse環(huán)境后,選擇“Window”>“Preference”,從左側(cè)的列表中選擇Android項:圖Eclipse中選擇AndroidSDK的路徑左側(cè)的Android選項是由于安裝了Android的SDK而出現(xiàn)的。在SDK設(shè)置SDKLocation中,點擊“Browse”…按鈕;選擇Android,SDK的目錄,點擊“OK”按鈕。中運行仿真器環(huán)境Android虛擬設(shè)備AndroidAndroidEclipseWindow”>“AndroidAVDManagerAndroidSDKandAVDDeviceManager圖AndroidSDK和AVD管理器AndroidNew選擇建立一個虛擬設(shè)備。建立新的Android虛擬設(shè)備的窗口為CreatenewAVD,如圖所示:圖建立新的AVDPAGE22PAGE22PAGE23PAGE23Android虛擬設(shè)備的建立包含了以下的一些選項:名字(ae目標(biāo)(agK版本(KplatformK)SDSDSD卡映像文件,SDmksdcard工具建立的。皮膚(n:這里皮膚的含義其實是仿真器運行尺寸的大小,默認(rèn)的尺寸有P(32x0,-L(480x320)等,也可以通過直接指定尺寸的方式制定屏幕的大小。屬性:可以由用戶指定仿真器運行的時候,Android系統(tǒng)中一些屬性運行虛擬設(shè)備AndroidSDKandAVDDeviceManagerAndroidHVGA-P(320x480)尺寸的運行結(jié)果如圖所示:圖使用仿真器的運行Android系統(tǒng)出現(xiàn)窗口的左側(cè)是運行的仿真器的屏幕,右側(cè)是模擬的鍵盤。設(shè)備啟動后,可以使用右側(cè)的鍵盤模擬真實設(shè)備的鍵盤操作,也可以用鼠標(biāo)點擊(或者拖拽和長按)屏幕,模擬觸摸屏的操作。PC鍵按鍵之間的映射關(guān)系如下表所示:仿真器的虛擬按鍵鍵盤的按鍵HomeHOMEMenu(左軟按鍵)F2orupbuttonStar(右軟按鍵)Shift-F2orPageDownBackESCCall/dialbuttonF3Hangup/endcallbuttonF4SearchF5PowerbuttonF7AudiovolumeupbuttonKEYPAD_PLUS,Ctrl-5AudiovolumedownbuttonKEYPAD_MINUS,Ctrl-F6CamerabuttonCtrl-KEYPAD_5,Ctrl-F3切換到上一個布局方向(例如portrait和landscape)KEYPAD_7,Ctrl-F11切換到下一個布局方向(例如portrait和landscape)KEYPAD_9,Ctrl-F12切換Cell網(wǎng)絡(luò)的開關(guān)on/offF8切換CodeprofilingF9切換全屏模式Alt-Enter切換跟蹤球(trackball)模式F6臨時進入跟蹤球(trackball)模式(當(dāng)長按按鍵的時候)DeleteDPadleft/up/right/downKEYPAD_4/8/6/2DPadcenterclickKEYPAD_5Onionalpha的增加和減少KEYPAD_MULTIPLY(*)/KEYPAD_DIVIDE(/)Android仿真器啟動虛擬設(shè)備之后,默認(rèn)就可以使用主機的網(wǎng)絡(luò)作為自己的網(wǎng)絡(luò)、使用主機的音頻設(shè)備作為自己的聲音輸出。使用Android中的工具AndroidWindow->ShowViewOther選項,Android的各個工具。調(diào)用的過程如下圖所示:圖選擇Android的各個工具選擇Android工具的對話框如圖所示:圖選擇Android工具的對話框Device(設(shè)備控制EmulatorControl(仿真器控制FileExplore(文件瀏覽Heap(堆內(nèi)存LogcatResourceExplore(資源瀏覽Threads(線程等使用logcatLogcatLogAndroid圖使用Logcat工具顯示LOGLogcatLinuxGUI的LogcatAndroid、ID(Pid)、標(biāo)簽(tag)、Log內(nèi)容(Message)等項目。#logcat[options][filterspecs]LogcatLog的過濾器(Filter)Log信息,屏蔽其他的信息。logcatsystem/bin目錄中,Logcat的使用方法如下所示:#logcat[options][filterspecs]logcat工具的選項如下所示:-s '*:s-f<filename> 輸出到文件,在默認(rèn)情況下是標(biāo)準(zhǔn)輸出-rkbytes>] 循環(huán)log的字節(jié)數(shù)(16),需要–f-n<count> log4-v<format>設(shè)置log的打印格式,<format>是下面的一種:briefprocesstagthreadrawtimethreadtimelong-c log并退出-d log并退出(不阻塞)-g 得到環(huán)形緩沖區(qū)的大小并退出-b<buffer> 請求不同的環(huán)形緩沖區(qū)('main'(默認(rèn))、'radio'、'events')-B將log輸出到二進制文件中使用仿真器控制選擇EmulatorControl選項可以開啟仿真器的控制對話框,它的界面如下所示:圖Android仿真器控制界面它甚至可以模擬打電話,發(fā)短信的過程。例如在incomingnumber中輸入電話號碼,然后點擊Call按鈕。這是仿真器的運行界面如圖所示:圖Android仿真器接收來電接受電話的程序已經(jīng)被調(diào)用起來,這里顯示的電話號碼1-234-56,也是在仿真器控制的窗口中設(shè)置的。模擬發(fā)送短信的界面顯示如下所示:圖Android仿真器接收短信命令行工具adb、mksdcard等AndroidWindows的開始->cmd并確adbmksdcardAndroidSDK的tools目錄中,使用命令行的窗口如圖所示:PAGEPAGE27PAGE28PAGE28#psUSERPID PPID#psUSERPID PPIDVSIZERSS WCHAN PCNAME圖在命令行中使用adbadb(AndroidDebugBridge,Android調(diào)試橋)AndroidUSB連adb進行調(diào)試,通常在命令行的界面中。shellAndroidLinuxshellshell提示符后執(zhí)行Android系統(tǒng)提供的Linux命令。#ls-l使用ls命令查看Android系統(tǒng)根目錄:#ls-ldrwxrwxrwtrootroot2009-06-1502:17sqlite_stmt_journalsdrwxrwxsystemcache2009-06-1502:18cachedsystemsystem2009-06-1502:17sdcardlrwxrwxrwxrootroot2009-06-1502:17etc->/system/etcdrwxr-xr-xrootroot2009-05-2802:16systemdrwxr-xr-xrootroot1970-01-0100:00sysdrwxr-xrootroot1970-01-0100:00sbindr-xr-xr-xrootroot1970-01-0100:00proc-rwxr-xrootroot90751970-01-0100:00init.rc-rwxr-xrootroot16771970-01-0100:00init.goldfish.rc-rwxr-xrootroot1065681970-01-0100:00init-rw-r--r--rootroot1181970-01-0100:00pdrwxrwx--xsystemsystem2009-05-2802:49datadrwxrootroot1970-01-0100:00rootdrwxr-xr-xrootroot2009-06-1502:18devAndroidout/target/product/generic/rootetc、proc等Androidsystem映像被掛接到根data目錄中。使用ps命令可以查看Android系統(tǒng)的進程:root10280188c008de040000c74cS/initroot2000c004b33400000000Skthreaddroot3200c003cf6800000000Sksoftirqd/0root4200c00486b800000000Sevents/0root5200c00486b800000000Skhelperroot10200c00486b800000000Ssuspendroot42200c00486b800000000Skblockd/0root45200c00486b800000000Scqueueroot47200c016f13c00000000Skseriodroot51200c00486b800000000Skmmcdroot96200c0065c7c00000000Spdflushroot97200c0065c7c00000000Spdflushroot98200c006990c00000000Skswapd0root100200c00486b800000000Saio/0root269200c016c88400000000Smtdblockdroot304200c00486b800000000Srpciod/0root5401740328c003aa1cafe0d08cS/system/bin/shroot54517225620876c008e3f4afe0c584Szygotemedia5461174043496ffffffffafe0c45cS/system/bin/mediaserverbluetooth5471 1168568 c008de04afe0d25cS/system/bin/dbus-daemonroot5481800300c01f3b04afe0c1bcS/system/bin/installdroot5511840356c00ae7b0afe0d1dcS/system/bin/qemudroot55411268116ffffffff0000e8f4S/sbin/adbdsystem57054517565223972ffffffffafe0c45cSsystem_serverradio60954510570417584ffffffffafe0d3e4Scom.android.phoneapp_461154511338019492ffffffffafe0d3e4Scess.acoreapp_126325459539213228ffffffffafe0d3e4Scom.android.mmsapp_4645app_5 6559719212964ffffffffafe0d3e4Scom.android.inputmethod.lati545 9516413376ffffffffafe0d3e4Scess.mediaapp_76685459770014264ffffffffafe0d3e4Scom.android.calendarapp_116845459413212624ffffffffafe0d3e4Scom.android.alarmclockroot70254088834000000000afe0c1bcRpssystemrootrootradio5415425435441 808 264 c01654b4afe0c45cS/system/bin/servicemanager1118366685392364264684c008e3f4afe0c584S/system/bin/voldc0192c20afe0cdecS/system/bin/debuggerdffffffffafe0caccS/system/bin/rildsystemrootrootradio5415425435441 808 264 c01654b4afe0c45cS/system/bin/servicemanager1118366685392364264684c008e3f4afe0c584S/system/bin/voldc0192c20afe0cdecS/system/bin/debuggerdffffffffafe0caccS/system/bin/rildnZygote/system/bin/sh/system/bin/mediaserverinitinitcess.acore(Home)com.android.mmszygote。使用adb連接目標(biāo)系統(tǒng)終端的方式如下所示:adbadbshell使用adb安裝應(yīng)用程序的方法為:adbinstalladbinstallXXX.apk使用adb在主機和目標(biāo)機之間傳送文件的方法為:adbpush{host_path}adbpush{host_path}{target_path}adbpull{target_path}{host_path}mksdcard是用來建立SD卡映像的工具,用來建立一個Fat32格式的磁盤映像,其使用方法如下所示:mksdcard[-llabel]<size><file>mksdcard[-llabel]<size><file>mksdcard的參數(shù)-l用于指定磁盤映像的標(biāo)簽,size用于指定磁盤映像的大小,其后面可以跟K、M、G等參數(shù),file是磁盤映像的文件名稱,這個文件也就是在仿真器運行過程中指定的文件。mksdcard128Msdcard.imgmksdcard128Msdcard.img這表示建立了一個大小為128M,名稱為sdcard.img的Fat32磁盤映像文件。使用設(shè)備控制Device工具可以用于進一步控制仿真器的運行狀況,在其中可以查看Heap(堆內(nèi)存)、Threads(線程)的信息,還具有停止某個進程的運行,截取屏幕等功能。Device工具的窗口如圖所示:PAGE29PAGE29PAGE30PAGE30圖Android的設(shè)備工具點擊Device窗口工具欄最右側(cè)的ScreenCapture按鈕,可以打開截取屏幕的窗口,如上圖所示。Android中建立工程建立工程AndroidSDKSDK中建立工程并進行調(diào)試了。Android工程步驟如下:選擇“File”>“New”>“Project”選擇“Android”>“AndroidProject”,點擊“Next”按鈕:選擇thecontentsfortheproject。圖建立新的Android工程可以選擇新建工程或從源代碼建立工程,如果從源代碼建立工程,那么所指定的目錄中需要具有AndroidManifest.xml文件。圖使用已有的示例建立新工程SDKplatforms/android-XXX/samplesSDK自帶的示例程序,HelloActivity示例程序。圖選擇工程示例點擊“Finish”按鈕,工程將被建立。查看和編輯各個文件IDEAndroid具查看。查看AndroidManifest.xml文件的情況,如圖所示:圖查看和編輯AndroidManifest.xml文件AndroidManifest.xmlAndroidManifest.xml標(biāo)簽將切換到文本模式,使用文本的形式查看和編輯AndroidManifest.xml中的內(nèi)容。瀏覽布局文件,如圖所示:圖查看和編輯布局文件瀏覽布局文件是一個更有用的功能,可以直觀地查看程序的UI布局,點擊標(biāo)簽(布局文件的名稱)可以切換到文本模式。利用IDE的布局查看器,可以在程序沒有運行的情況下直接查看和組織目標(biāo)UI界面。查看各個value文件和建立數(shù)值,如圖所示:圖查看各個value文件和建立數(shù)值查看各個Java源代碼文件,如圖所示:PAGEPAGE37PAGE34PAGE34圖Java源代碼文件的編輯界面Java源代碼采用文本的方式,但是在右邊也列出了Java源代碼中類的層次結(jié)構(gòu)。在IDE的源代碼環(huán)境開發(fā)JAVA程序,還具有自動修正、自動增加依賴包、類方法屬性查找等功能。運行工程AndroidRunDebug圖運行Android工程開始運行的時候,如果現(xiàn)在已經(jīng)有連接到真實的設(shè)備或者仿真器設(shè)備上,將直接使用這個設(shè)備,否則將啟動一個新的仿真設(shè)備。[HelloActivity]AndroidLaunch![HelloActivity]adbisrunningnormally.[HelloActivity]Performingcom.example.android.helloactivity.HelloActivityactivitylaunch[HelloActivity]AutomaticTargetMode:usingexistingemulator[HelloActivity]AndroidLaunch![HelloActivity]adbisrunningnormally.[HelloActivity]Performingcom.example.android.helloactivity.HelloActivityactivitylaunch[HelloActivity]AutomaticTargetMode:usingexistingemulator'emulator-5554'runningcompatibleAVD'HVGA'[HelloActivity]WARNING:ApplicationdoesnotspecifyanAPIlevelrequirement![HelloActivity]DeviceAPIversionis4(Android1.6)[HelloActivity]UploadingHelloActivity.apkontodevice'emulator-5554'[HelloActivity]InstallingHelloActivity.apk...[HelloActivity]Success![HelloActivity]Startingactivitycom.example.android.helloactivity.HelloActivityondevice[HelloActivity]ActivityManager:Starting:Intent{cmp=com.example.android.helloactivity/.HelloActivity}圖運行HelloActivity程序在運行的一個仿真設(shè)備的時候,可以進一步通過選擇“RunAs”中的“RunConfigurations”進行進一步的配置。啟動后的界面如圖所示:圖選擇工程中運行的動作其中,在Android的標(biāo)簽中可以選擇啟動的工程,啟動活動(LaunchAction)選項中可以選擇啟動的哪一個活動(Android的一個工程中可以包含多個活動)。在Target標(biāo)簽中可以選擇啟動的時候使用的設(shè)備。第二篇應(yīng)用程序的概述和框架3章應(yīng)用層程序的開發(fā)方式???????????API參考文檔的使用應(yīng)用程序開發(fā)的結(jié)構(gòu)

???????????Android應(yīng)用程序開發(fā)是Android開發(fā)中最上面的一個層次,它們構(gòu)建在Android系統(tǒng)提供的API之上。Android應(yīng)用程序的基礎(chǔ)是Android提供的各個Java類,這些類組成了Android系統(tǒng)級的API。應(yīng)用程序Android預(yù)置自開發(fā)應(yīng)用程序自開發(fā)應(yīng)用程序自開發(fā)應(yīng)用程序應(yīng)用程序Android預(yù)置自開發(fā)應(yīng)用程序自開發(fā)應(yīng)用程序自開發(fā)應(yīng)用程序系統(tǒng)APIAndroid框架層軟件硬件抽象層硬件抽象層Android手機 Android仿真器圖Android應(yīng)用的開發(fā)結(jié)構(gòu)Android應(yīng)用程序可以基于兩種環(huán)境來開發(fā):AndroidSDKAndroid源代碼。Android系統(tǒng)本身內(nèi)置了一(也包括內(nèi)容提供者(SDK環(huán)境和源代碼環(huán)境)用戶自行開發(fā)的應(yīng)用程序和AndroidAndroid框架層的API來構(gòu)建的,它們的區(qū)別僅僅在于他們是否被包含在默認(rèn)的Android系統(tǒng)中。API參考文檔的使用在開發(fā)Android應(yīng)用程序時可以參考SDK中提供的參考文檔(SDK\docs\index.html),其內(nèi)容包含在Reference標(biāo)簽中。ClassOverview(類的介紹)ClassOverview(類的介紹)PackgeIndx(包索引;ClassIndex(類索引。Android(也包括接口等內(nèi)容根據(jù)包索引,每一個包中包含的主要內(nèi)容大致如下所示:Interface接口類;Classes(;Enu(枚舉值;Exceptions(異常。每個包中包含的內(nèi)容,基本上是Java語言中標(biāo)準(zhǔn)的內(nèi)容。AndroidAndroidAPI的主要組成部分,主要參考的內(nèi)容包括了以下的內(nèi)容。根據(jù)類索引,每一個類中包含的主要內(nèi)容大致如下所示:擴展和實現(xiàn)的內(nèi)容;按包名的繼承(擴展)關(guān)系(可用于反向查找這個類所在的包;Overvie概覽;XMLAttribue(XML;Contat常量;Contrutor(構(gòu)造方法;Methods(方法。JavaXML屬性AndroidpublicclassActivityextendsContextThemeWrapperimplementsComponentCallbacksKeyEvent.CallbackLayoutInflater.FactoryView.OnCreateContextMenuListenerWindow.Callbackjava.lang.ObjectpublicclassActivityextendsContextThemeWrapperimplementsComponentCallbacksKeyEvent.CallbackLayoutInflater.FactoryView.OnCreateContextMenuListenerWindow.Callbackjava.lang.Object?android.content.Context?android.content.ContextWrapper?android.view.ContextThemeWrapper?android.app.ActivityKnownDirectSubclassesActivityGroup,AliasActivity,ExpandableListActivity,ListActivityKnownIndirectSubclassesLauncherActivity,PreferenceActivity,TabActivity從Activity類中可以看出,類的幫助文檔主要包含以下一些內(nèi)容:publicclass:表示只是一個公開的類; exends:標(biāo)明了這個類繼承的父類(a只有一個唯一的父類,后面的內(nèi)容表示這個類從祖先開始繼承的關(guān)系。這里的類使用的是包含了其所在包名稱的全名,因此在這里可以得知類及其祖先類屬于哪個包;Ipleents:標(biāo)明了這個類實現(xiàn)的接口(可以有多個;KnownDirectSubclasses:這個類的直接繼承者;KnownIndirectSubclasses:這個類的間接繼承者。從中,可以看出Activity類在android.app包中,直接繼承了android.view.ContextThemeWrapper,并且被ActivityGroup,ListActivity等幾個類直接繼承。被LauncherActivity等幾個類間接繼承。類的介紹的主要內(nèi)容在后面,主要部分是各個類的方法的說明,這些方法也是在類的使用過程中需要主要關(guān)注的內(nèi)容。38383939SummarySummaryConstants(常量的列表)InheritedConstants(繼承的常量的列表,按照繼承類的順序)PublicConstructors(公共的構(gòu)造函數(shù))PublicMethods(公共方法的列表)ProtectedMethods(保護方法的列表)InheritedMethods(繼承方法的列表,按照繼承類的順序)(詳細(xì)的介紹)類的幫助中一般只列出了自己的常量、方法、XML屬性等,對于繼承得到的內(nèi)容(包括方法和常量),JAVAUIXMLattributes(XML屬性)一類。publicclassButtonextendsTextViewjava.lang.Object?android.view.View?android.widget.TextView?android.widget.ButtonKnownDirectSubclassesCompoundButtonpublicclassButtonextendsTextViewjava.lang.Object?android.view.View?android.widget.TextView?android.widget.ButtonKnownDirectSubclassesCompoundButtonCompoundButtonAbuttonwithtwostates,checkedandunchecked.KnownIndirectSubclassesCheckBox,RadioButton,ToggleButtonXMLattributesSeeButtonAttributes,TextViewAttributes,ViewAttributesSummaryInheritedXMLAttributesFromclassandroid.widget.TextViewFromclassandroid.view.ViewInheritedConstantsPublicConstructorsInheritedMethodsButton類的頭部信息和普通的類基本相同,但是包含了XMLattributesButtonAttributes,TextViewAttributes,ViewAttributes,根據(jù)類的繼承關(guān)系可以得知,這個啟示是自己的屬性、父類(Button(Button。ButtonXMLInheritedXMLAttributesFromclassandroid.widget.TextView和Fromclassandroid.view.View可以得到這些屬性的列表。每個屬性包含了AttributeName(屬性名稱)RelatedMethod(相關(guān)方法)Description(描述)幾個項目。例如,TextView的幾個屬性如下所示:android:textsetText(CharSequence)Texttodisplay.android:textColorsetTextColor(ColorStateList)Textcolor.android:text等表示了屬性在XML文件中的名稱,setText()等表示了在JAVA源文件中使用的方法,最右側(cè)的內(nèi)容是這個屬性的描述。XMLattributesXML屬性的幫助以及相關(guān)的值可以在android.R.styleable類中查找,這個類也可以直接被調(diào)出,方法為:PackageIndex→android→android.R.styleableandroid.R.styleable中列出了一些類的XML屬性,例如TextView的capitalize屬性的相關(guān)內(nèi)容如下所示:publicstaticfinalintTextView_capitalizeIfpublicstaticfinalintTextView_capitalizeIfset,specifiesthatthisTextViewhasatextualinputmethodandshouldautomaticallycapitalizewhattheusertypes.Thedefaultis"none".usertypes.Thedefaultis"none".Mustbeoneofthefollowingconstantvalues.ConstantValueDescriptionnone 0Don'tautomaticallycapitalizeanything.sentences 1Capitalizethefirstwordofeachsentence.words 2Capitalizethefirstletterofeveryword.characters 3Capitalizeeverycharacter.Thiscorrespondstotheglobalattributeresourcesymbolcapitalize.ConstantValue:44(0x0000002c)這里列出了屬性的值(Value),這些值的本質(zhì)是整數(shù)常量,但是在XML中使用的還是名稱。整數(shù)值是Android內(nèi)部運作使用的。XMLAndroidManifest.xmlXML文件中使用。android.R.styleableAndroidManifestAndroidManifest.xml中使用的屬性。例如,AndroidManifestAction項目是AndroidManifest.xml中的Action標(biāo)簽中使用的內(nèi)容,如下所示:publicstaticfinalint[]AndroidManifestActionpublicstaticfinalint[]AndroidManifestActionAttributesthatcanbesuppliedinanAndroidManifest.xmlactiontag,achildoftheintent-filtertag.SeeaddAction(String)formoreinformation.Includesthefollowingattributes:AttributeSummaryandroid:nameThenameofanactionthatishandled,usingtheJava-stylenamingconvention.SeeAlsoAndroidManifestAction_nameAttributeSummary中的android:name引用的內(nèi)容是AndroidManifest.xml中的Action標(biāo)簽可以使用的android:name屬性。相比各種類的幫助信息,接口(Interface)的幫助信息更加簡單一些。一般的接口是需要被實現(xiàn)才能夠使用的。例如,View.OnClickListener的幫助信息前面的內(nèi)容如下所示:publicstaticinterfaceView.OnClickListenerpublicstaticinterfaceView.OnClickListenerandroid.view.View.OnClickListenerKnownIndirectSubclassesCharacterPickerDialog,KeyboardView這里的,android.view.View.OnClickListener表示了View.OnClickListener這個接口在android.view這個包中。對于一個接口,IndirectSubclasses的含義為實現(xiàn)(implements)這個接口。SummaryPublicMethodsabstractvoidonClick(Viewv)Calledwhenaviewhasbeenclicked.SummaryPublicMethodsabstractvoidonClick(Viewv)Calledwhenaviewhasbeenclicked.View.OnClickListeneonClick()函數(shù)。404041414章Android應(yīng)用程序示例??????????? ???????????HelloActivity程序的運行HelloActivity的源文件結(jié)構(gòu)HelloActivity的編譯結(jié)構(gòu)SkeletonApp 的程序的運行SkeletonApp 源文件結(jié)構(gòu)SkeletonApp 編譯結(jié)構(gòu)HelloWorldAndroid中最A(yù)ndroid程序的文件結(jié)構(gòu)和編譯后的結(jié)構(gòu)。HelloActivity程序的運行HelloActivity是一個簡單的Android應(yīng)用程序,其工程文件名稱為HelloActivity,在Android的源代碼和SDK中,都包含了這個包。HelloActivity的圖標(biāo)和運行情況如圖所示。圖HelloActivity的圖標(biāo)和運行情況這個程序有一個簡單的活動(Activity),用于啟動一個新的界面,并在界面上顯示“Hello,World!”字符串。HelloActivity的源文件結(jié)構(gòu)HelloActivity工程的源文件的結(jié)構(gòu)按照目錄樹的方式如下所示:HelloActivity/|Android.mk (工程管理文件)|AndroidManifest.xml (工程描述文件)|res (資源文件)| |--layout| | `-hello_activity.xml (布局文件)| `--values| `--strings.xml (字串資源文件)|src (Java源代碼文件)`--com`--example`--android`--helloactivity`--HelloActivity.javaHelloActivity工程中另有一個tests目錄,其中也具有自己的Android.mk和AndroidManifest.xml文件,這是另一個工程,是HelloActivity工程的測試程序。Android.mk文件LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LOCAL_MODULE_TAGS:=samples#Onlycompilesourcejavafilesinthisapk.LOCAL_SRC_FILES:=$(callall-java-files-under,src)LOCAL_PACKAGE_NAME:=HelloActivityLOCAL_SDK_VERSION:=currentincludeLOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LOCAL_MODULE_TAGS:=samples#Onlycompilesourcejavafilesinthisapk.LOCAL_SRC_FILES:=$(callall-java-files-under,src)LOCAL_PACKAGE_NAME:=HelloActivityLOCAL_SDK_VERSION:=currentinclude$(BUILD_PACKAGE)#Usethefollowingincludetomakeourtestapk.include$(callall-makefiles-under,$(LOCAL_PATH))Android.mkAndroid編譯過程中通用的工程管理文件,本地程序、本地庫和Java程序包都使用Java多的內(nèi)容,其中關(guān)鍵的內(nèi)容是使用include$(BUILD_PACKAGE)表示從當(dāng)前目錄編譯Java應(yīng)用程序包。LOCAL_PACKAGE_NAME定義的是這個程序的APKLOCAL_MODULE_TAGSLOCAL_MODULE_TAGSsamplesAPK包,但是不安裝在系統(tǒng)中。使用不eng,將安裝到目標(biāo)系統(tǒng)中。最后一行的include$(callall-kefiles-under$(LOCAL_PATH)Android.k文件,本例中也就是tests目錄中的內(nèi)容。42424343AndroidManifest.xml文件AndroidManifest.xml文件是這個Android應(yīng)用程序的工程描述文件,包含了宏觀上的內(nèi)容,如下所示:<?xmlversion="1.0"encoding="utf-8"?><?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="/apk/res/android"package="com.example.android.helloactivity"><applicationandroid:label="Hello,Activity!"><activityandroid:name="HelloActivity"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></manifest>application(表示應(yīng)用程序)activity(表示活動?;顒邮菓?yīng)用程序中的一個組件,一個應(yīng)用程序中也可以包含若干個組件。包名定義為com.example.android.helloactivity,表示將從src目錄的com/example/android/helloactivityJavaHelloActivity.javaintent-filtercategory中的ent.category.LAUNCHER表示活動將在Android的桌面(Android默認(rèn)的桌面程序名稱也是LAUNCHER)上出現(xiàn)。applicationandroid:label為<activityandroid:name="HelloActivity"android:label="@string/label_name"android:icon="@drawable/icon_name"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity>在AndroidManifest.xml文件中為一個活動指定<activityandroid:name="HelloActivity"android:label="@string/label_name"android:icon="@drawable/icon_name"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity>android:labelandroid:iconres/drawable中對應(yīng)名稱的圖片文件作為圖標(biāo)(icon_name.png)。activity和application都具有android:label和android:icon等屬性,由于活動是程序的單元,且應(yīng)用可以包含多個活動,因此程序首先將使用activity中的這些標(biāo)簽,如果沒有則使用上一級的application中標(biāo)簽的定義源代碼文件HelloActivityHelloActivity.javasrccom/example/android/helloactivity中,內(nèi)容如下所示:packagecom.example.android.helloactivity;importandroid.app.Activity;packagecom.example.android.helloactivity;importandroid.app.Activity;importandroid.os.Bundle;publicclassHelloActivityextendsActivity{publicHelloActivity(){}@Override//定義包名//引入包含的包publicvoidonCreate(BundlesavedInstanceState){//重載onCreate()方法super.onCreate(savedInstanceState);setContentView(R.layout.hello_activity);//使用hello_activity.xml布局文件}}HelloActivityAndroid系統(tǒng)API(Activity)指定了當(dāng)前活動的布局,這里表示將從res/layout目錄中找到hello_activity.xml文件作為本例的布局文件使用。布局文件<?xmlversion="1.0"encoding="utf-8"?><EditTextxmlns:android="/apk/res/android"ndroid:id="@+id/text"android:layout_width="fill_parent"android:layout_height="fill_parent"android:textSize="18sp"android:autoText="true"android:capitalize="sentences“<?xmlversion="1.0"encoding="utf-8"?><EditTextxmlns:android="/apk/res/android"ndroid:id="@+id/text"android:layout_width="fill_parent"android:layout_height="fill_parent"android:textSize="18sp"android:autoText="true"android:capitalize="sentences“android:text="@string/hello_activity_text_text"/>UI元素——EditText,就是在界面上出現(xiàn)的占據(jù)全屏的可編輯文本框。在這里定義了這個可編輯文本框的初始化字符串為"@string/hello_activity_text_text",這個值在另外的資源文件string.xml。其他資源文件string.xml是本例中的一個資源文件,其內(nèi)容如下所示:<?xmlversion="1.0"encoding="utf-8"?><?xmlversion="1.0"encoding="utf-8"?><resources><stringname="hello_activity_text_text">Hello,World!</string></resources>這里定義了名稱為“hello_activity_text_text”的字符串的內(nèi)容為Hello,World!,這就是出現(xiàn)在屏幕上的字符串。HelloActivity的編譯結(jié)構(gòu)AndroidSDK環(huán)境下開發(fā)生成的所有目標(biāo)文件均在assets、bin、gen等目錄。gengen/com/ex

溫馨提示

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

評論

0/150

提交評論