《Android系統(tǒng)設(shè)計(jì)與開發(fā)》課件-第3章_第1頁(yè)
《Android系統(tǒng)設(shè)計(jì)與開發(fā)》課件-第3章_第2頁(yè)
《Android系統(tǒng)設(shè)計(jì)與開發(fā)》課件-第3章_第3頁(yè)
《Android系統(tǒng)設(shè)計(jì)與開發(fā)》課件-第3章_第4頁(yè)
《Android系統(tǒng)設(shè)計(jì)與開發(fā)》課件-第3章_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章Android工程結(jié)構(gòu)3.1Project模式下的工程結(jié)構(gòu)3.2app目錄3.3res詳解3.4AndroidManifest.xml詳解3.5build.gradle詳解本章總結(jié)

3.1Project模式下的工程結(jié)構(gòu)

在新建的Android工程中,默認(rèn)的工程結(jié)構(gòu)為Android模式,但這并不是Android工程的真實(shí)結(jié)構(gòu)。在左上角將其切換為Project模式,如圖3.1所示,這才是Android工程的真實(shí)結(jié)構(gòu)。

圖3.1Project模式下的Android工程結(jié)構(gòu)

在Android工程的目錄結(jié)構(gòu)中,可以看到有很多文件,下面對(duì)這些文件進(jìn)行簡(jiǎn)單介紹。

1.?.gradle

.gradle文件夾包含了gradle工具的各個(gè)版本。這個(gè)目錄下放置的文件都是由AndroidStudio自動(dòng)生成的,用戶不要去手動(dòng)編輯。

2.?.idea

.idea文件夾包含了開發(fā)所需的各種環(huán)境。這個(gè)目錄下的所有文件也是由AndroidStudio自動(dòng)生成的,在沒有極特殊的需求時(shí)不要手動(dòng)編輯里面的文件。

3.?app

app目錄包含了工程的功能邏輯、布局、資源、清單文件等內(nèi)容,開發(fā)工作基本上都是在該目錄下完成的。

4.?gradle

gradle目錄包含了gradlewrapper的配置文件,使用gradlewrapper的方式不需要將gradle提前下載好,AndroidStudio會(huì)根據(jù)本地的緩存情況自行決定是否需要聯(lián)網(wǎng)下載gradle。

5.?.gitignore

該文件用來將指定的目錄或文件排除在git提交的內(nèi)容之外。配置git需要忽略的文件或文件夾,在.gitignore中配置的文件或文件夾不會(huì)隨著git提交到指定的倉(cāng)庫(kù)。

6.?build.gradle

該文件是項(xiàng)目全局的gradle構(gòu)建腳本,里面指定了很多與項(xiàng)目構(gòu)建相關(guān)的配置信息,通常情況下不需要修改文件中的內(nèi)容。

7.?perties

該文件是全局的gradle配置文件,用戶可以在里面做一些gradle文件的全局性配置,也可以將比較私密的信息放在里面,防止泄露。在該文件中配置的屬性會(huì)影響工程中所有的gradle編譯腳本。

8.?gradlew

該文件用于在Linux或Mac系統(tǒng)中的命令行界面執(zhí)行g(shù)radle命令。

9.?gradle.bat

該文件用于在Windows系統(tǒng)中的命令行界面執(zhí)行g(shù)radle命令。

10.?HelloWorld2.iml

AndroidStudio是基于IntelliJIDEA開發(fā)的一款編程工具,而.iml文件是所有IntelliJIDEA工程都會(huì)自動(dòng)生成的一個(gè)文件,用于表示該工程是一個(gè)IntelliJIDEA工程。用戶不需要修改該文件中的任何內(nèi)容。

11.?perties

該文件用于指定AndroidSDK和NDK所在的路徑,內(nèi)容是自動(dòng)生成的,一般不需要修改。如果本機(jī)中的AndroidSDK或NDK位置發(fā)生了變化或者工程在新的設(shè)備上打開,那么將該文件中的路徑換成新的路徑即可。

12.?settings.gradle

settings.gradle默認(rèn)只執(zhí)行當(dāng)前目錄下的build.gradle腳本,一般的工程中可能有多個(gè)模塊依賴,但本工程中只有一個(gè)app模塊,因此該文件中只引入了一個(gè)模塊app,如果有其他模塊依賴,則還需在文件中引入其他模塊。該文件需要手動(dòng)修改的場(chǎng)景比較少。

以上是對(duì)Android工程中整個(gè)外層目錄的介紹。其實(shí)大部分文件都不需要開發(fā)者去手動(dòng)修改。在Android開發(fā)中,開發(fā)者的工作重心主要在app目錄下,3.2節(jié)會(huì)對(duì)app目錄的內(nèi)容進(jìn)行重點(diǎn)講解。

3.2app目錄

點(diǎn)擊app目錄展開,如圖3.2所示。下面介紹app目錄下的具體內(nèi)容。

圖3.2app目錄下的內(nèi)容

1.?build

該目錄下包含了編譯時(shí)自動(dòng)生成的一些文件,用戶無須關(guān)心里邊的內(nèi)容。

2.?libs

在比較大型的Android工程中,除了使用AndroidSDK進(jìn)行開發(fā)之外,很可能會(huì)使用第三方SDK來進(jìn)行開發(fā),一般的第三方SDK都是以jar包的形式存在的,要使用這些jar包就必須將其放置在libs目錄下,重新同步gradle后即可使用。

3.?androidTest

這里可以編寫一些androidTest測(cè)試用例,對(duì)工程進(jìn)行一些自動(dòng)化測(cè)試。

4.?java

整個(gè)Android工程的所有java代碼都會(huì)放置在該目錄下,功能邏輯的開發(fā)一般在此目錄下完成。

5.?res

Android工程中所有的資源、布局文件都要放置在該目錄下,所有Android程序應(yīng)用界面的開發(fā)都離不開該目錄。

6.?AndroidManifest.xml

該文件是整個(gè)Android工程的配置文件,如果工程中使用到了四大組件必須先在該文件中進(jìn)行注冊(cè);此外Android應(yīng)用程序中需要申請(qǐng)的權(quán)限也可以在該文件中添加。

7.?test

該文件用來編寫UnitTest測(cè)試用例。

8.?.gitignore

該文件用來將app模塊內(nèi)指定的目錄或文件排除在git提交之外,與外層的.gitignore文件作用類似。

9.?app.iml

與外層的HelloWorld2.iml文件差不多,該文件也屬于IntelliJIDEA工程自動(dòng)生成的文件,開發(fā)者不必關(guān)心文件里的內(nèi)容。

10.?build.gradle

該文件為app模塊的gradle構(gòu)建文件,里面有很多與工程相關(guān)的配置,在添加一些依賴或其他操作的時(shí)候會(huì)對(duì)該文件中的內(nèi)容進(jìn)行修改。

11.?

該文件用于指定工程中代碼的混淆規(guī)則,在完成一項(xiàng)工程的開發(fā)后要對(duì)代碼進(jìn)行編譯打包生成?.apk安裝文件。如果開發(fā)者不希望安裝包被別人破解,通常會(huì)對(duì)代碼進(jìn)行混淆處理,提高安全性,使其不易被破解。

3.3res詳解

開發(fā)Android應(yīng)用程序時(shí),一般都會(huì)用到圖片、字符串、布局文件等資源,這些資源都可以系統(tǒng)化地放置在res目錄下的不同文件夾中。展開res目錄,如圖3.3所示。

圖3.3res目錄下的內(nèi)容

從圖3.3中可以看到,res目錄下有很多以“mipmap”開頭的文件夾,mipmap是用來放置啟動(dòng)器圖標(biāo)的,后面跟的“hdpi”“xhdpi”等表示的是不同的分辨率,是為了滿足程序?qū)Σ煌直媛试O(shè)備的兼容性。

此外還可以手動(dòng)創(chuàng)建目錄。如建立的是menu目錄,在menu目錄下放置.xml文件可以為應(yīng)用程序添加菜單;如建立raw目錄,可以在其中放入任意文件,比如音頻、圖片等資源。

3.4AndroidManifest.xml詳解

每個(gè)Android應(yīng)用程序都有一個(gè)清單文件——AndroidManifest.xml,該文件在src/main目錄下,程序中定義的四大組件都要在這個(gè)文件里注冊(cè),這些組件構(gòu)成了整個(gè)應(yīng)用程序。此外還可以在該文件中添加應(yīng)用程序的權(quán)限聲明。清單文件中的信息會(huì)配置到Android系統(tǒng)中,當(dāng)程序運(yùn)行時(shí),系統(tǒng)會(huì)根據(jù)清單文件中的信息打開相應(yīng)的組件。

<manifest>節(jié)點(diǎn)是清單文件的根節(jié)點(diǎn),是整個(gè)應(yīng)用程序的基本屬性,其中必須指定xmlns:android和package屬性,并且必須包含一個(gè)<application>節(jié)點(diǎn),在該節(jié)點(diǎn)中聲明應(yīng)用程序的組件及屬性(如title,icon,theme等)。同時(shí)它又表現(xiàn)為一個(gè)容器,容納四大組件Activity、Service、ContentProvider、BroadcastReceiver的標(biāo)簽。

應(yīng)用程序中顯示的Activity都要在<manifest>中定義一個(gè)activity標(biāo)簽,通過android:name特性來指定類名,需要啟動(dòng)和交互的Activity必須在manifest中定義。嘗試啟動(dòng)一個(gè)沒有在manifest中定義的Activity會(huì)引發(fā)運(yùn)行時(shí)的異常。intent-filter子標(biāo)簽用于指定啟動(dòng)哪些Activity,在本例中,MainActivity通過intent-filter被指定為主Activity,在啟動(dòng)應(yīng)用程序后會(huì)自動(dòng)打開MainActivity這個(gè)Activity。

此外,在清單文件中,uses-permission標(biāo)簽可以將應(yīng)用程序中用到的權(quán)限添加進(jìn)去,在Android6.0以前,安裝程序之前必須獲得所有權(quán)限。在Android6.0之后,引入了動(dòng)態(tài)權(quán)限的概念,用戶可以在程序運(yùn)行時(shí)逐一授權(quán),即便是有些權(quán)限沒有授予,程序的其他功能的使用也不受影響。

3.5build.gradle詳解

AndroidStudio是采用Gradle來構(gòu)建工程的。Gradle是一種依賴管理工具,基于Groovy語(yǔ)言,面向Java應(yīng)用為主,它拋棄了基于XML的各種煩瑣配置,用一種基于Groovy的內(nèi)部領(lǐng)域特定(DSL)語(yǔ)言代替。一個(gè)新建的Android工程會(huì)有兩個(gè)build.gradle文件,一個(gè)在外層目錄中,另外一個(gè)在app模塊下,兩個(gè)文件缺一不可。

在dependencies閉包中使用classpath聲明一個(gè)插件,即Gradle插件。聲明Gradle插件是因?yàn)镚radle并不是專門用于Android工程構(gòu)建的,Java、C++等項(xiàng)目都可以使用Gradle來構(gòu)建。如果要使用Gradle來構(gòu)建Android工程,就需要聲明該插件,聲明的方式為“com.android.tools.build:gradle:4.0.1”,最后的數(shù)字為版本號(hào),一般就是AndroidStudio的版本號(hào)。最后聲明了一個(gè)clean的task,它會(huì)在執(zhí)行g(shù)radleclean時(shí),刪除根目錄的build目錄。

app模塊的build.gradle文件會(huì)比外層目錄的復(fù)雜一些。文件中首先用applyplugin聲明了一個(gè)插件,一般有兩種選擇,“com.android.application”和“com.android.library”,前者表示的是應(yīng)用程序模塊,后者表示的是庫(kù)模塊,兩者最大的區(qū)別在于一個(gè)可以直接運(yùn)行,而另一個(gè)只能依附于應(yīng)用程序運(yùn)行。

最后還有個(gè)很重要的dependencies閉包,功能非常強(qiáng)大,可以指定當(dāng)前工程的所有依賴關(guān)系。依賴關(guān)系一共有三種:本地依賴、庫(kù)依賴和遠(yuǎn)程依賴,本地依賴可以在工程中加入第三方的jar包;庫(kù)依賴可以對(duì)工程中的庫(kù)模塊添加依賴關(guān)系,遠(yuǎn)程依賴可以對(duì)jcenter

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論