《Android系統設計與開發》課件-第3章_第1頁
《Android系統設計與開發》課件-第3章_第2頁
《Android系統設計與開發》課件-第3章_第3頁
《Android系統設計與開發》課件-第3章_第4頁
《Android系統設計與開發》課件-第3章_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

3.1Project模式下的工程結構

在新建的Android工程中,默認的工程結構為Android模式,但這并不是Android工程的真實結構。在左上角將其切換為Project模式,如圖3.1所示,這才是Android工程的真實結構。

圖3.1Project模式下的Android工程結構

在Android工程的目錄結構中,可以看到有很多文件,下面對這些文件進行簡單介紹。

1.?.gradle

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

2.?.idea

.idea文件夾包含了開發所需的各種環境。這個目錄下的所有文件也是由AndroidStudio自動生成的,在沒有極特殊的需求時不要手動編輯里面的文件。

3.?app

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

4.?gradle

gradle目錄包含了gradlewrapper的配置文件,使用gradlewrapper的方式不需要將gradle提前下載好,AndroidStudio會根據本地的緩存情況自行決定是否需要聯網下載gradle。

5.?.gitignore

該文件用來將指定的目錄或文件排除在git提交的內容之外。配置git需要忽略的文件或文件夾,在.gitignore中配置的文件或文件夾不會隨著git提交到指定的倉庫。

6.?build.gradle

該文件是項目全局的gradle構建腳本,里面指定了很多與項目構建相關的配置信息,通常情況下不需要修改文件中的內容。

7.?perties

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

8.?gradlew

該文件用于在Linux或Mac系統中的命令行界面執行gradle命令。

9.?gradle.bat

該文件用于在Windows系統中的命令行界面執行gradle命令。

10.?HelloWorld2.iml

AndroidStudio是基于IntelliJIDEA開發的一款編程工具,而.iml文件是所有IntelliJIDEA工程都會自動生成的一個文件,用于表示該工程是一個IntelliJIDEA工程。用戶不需要修改該文件中的任何內容。

11.?perties

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

12.?settings.gradle

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

以上是對Android工程中整個外層目錄的介紹。其實大部分文件都不需要開發者去手動修改。在Android開發中,開發者的工作重心主要在app目錄下,3.2節會對app目錄的內容進行重點講解。

3.2app目錄

點擊app目錄展開,如圖3.2所示。下面介紹app目錄下的具體內容。

圖3.2app目錄下的內容

1.?build

該目錄下包含了編譯時自動生成的一些文件,用戶無須關心里邊的內容。

2.?libs

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

3.?androidTest

這里可以編寫一些androidTest測試用例,對工程進行一些自動化測試。

4.?java

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

5.?res

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

6.?AndroidManifest.xml

該文件是整個Android工程的配置文件,如果工程中使用到了四大組件必須先在該文件中進行注冊;此外Android應用程序中需要申請的權限也可以在該文件中添加。

7.?test

該文件用來編寫UnitTest測試用例。

8.?.gitignore

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

9.?app.iml

與外層的HelloWorld2.iml文件差不多,該文件也屬于IntelliJIDEA工程自動生成的文件,開發者不必關心文件里的內容。

10.?build.gradle

該文件為app模塊的gradle構建文件,里面有很多與工程相關的配置,在添加一些依賴或其他操作的時候會對該文件中的內容進行修改。

11.?

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

3.3res詳解

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

圖3.3res目錄下的內容

從圖3.3中可以看到,res目錄下有很多以“mipmap”開頭的文件夾,mipmap是用來放置啟動器圖標的,后面跟的“hdpi”“xhdpi”等表示的是不同的分辨率,是為了滿足程序對不同分辨率設備的兼容性。

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

3.4AndroidManifest.xml詳解

每個Android應用程序都有一個清單文件——AndroidManifest.xml,該文件在src/main目錄下,程序中定義的四大組件都要在這個文件里注冊,這些組件構成了整個應用程序。此外還可以在該文件中添加應用程序的權限聲明。清單文件中的信息會配置到Android系統中,當程序運行時,系統會根據清單文件中的信息打開相應的組件。

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

應用程序中顯示的Activity都要在<manifest>中定義一個activity標簽,通過android:name特性來指定類名,需要啟動和交互的Activity必須在manifest中定義。嘗試啟動一個沒有在manifest中定義的Activity會引發運行時的異常。intent-filter子標簽用于指定啟動哪些Activity,在本例中,MainActivity通過intent-filter被指定為主Activity,在啟動應用程序后會自動打開MainActivity這個Activity。

此外,在清單文件中,uses-permission標簽可以將應用程序中用到的權限添加進去,在Android6.0以前,安裝程序之前必須獲得所有權限。在Android6.0之后,引入了動態權限的概念,用戶可以在程序運行時逐一授權,即便是有些權限沒有授予,程序的其他功能的使用也不受影響。

3.5build.gradle詳解

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

在dependencies閉包中使用classpath聲明一個插件,即Gradle插件。聲明Gradle插件是因為Gradle并不是專門用于Android工程構建的,Java、C++等項目都可以使用Gradle來構建。如果要使用Gradle來構建Android工程,就需要聲明該插件,聲明的方式為“com.android.tools.build:gradle:4.0.1”,最后的數字為版本號,一般就是AndroidStudio的版本號。最后聲明了一個clean的task,它會在執行gradleclean時,刪除根目錄的build目錄。

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

最后還有個很重要的dependencies閉包,功能非常強大,可以指定當前工程的所有依賴關系。依賴關系一共有三種:本地依賴、庫依賴和遠程依賴,本地依賴可以在工程中加入第三方的jar包;庫依賴可以對工程中的庫模塊添加依賴關系,遠程依賴可以對jcenter

溫馨提示

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

評論

0/150

提交評論