Android基礎——項目的檔案結構(三)

來源:互聯網
上載者:User

標籤:項目   編譯   mil   直接   通過   main   對比   字母   draw   

Android基礎——項目的檔案結構(三)代碼源檔案夾與資源檔夾

【注】此專案檔結構僅限於Android Studio下的Android項目!!!

  在一個Android項目中,代碼源檔案夾有4個,分別是java、jni、aidl、rs,資源檔夾有3個,分別是assets、res、resources。(這裡的檔案夾名稱是在project視圖下的名稱,如有疑問可參考Android基礎——項目的檔案結構(一)Android視圖與Project視圖對比)

  檔案夾路徑及概要說明如下表所示:

 

Project視圖

概要說明

app/src/main/java

Java源檔案夾,存放項目中所有的Java代碼源檔案。

app/src/main/jni

C/C++源檔案夾,存放項目中所有的C和C++代碼源檔案。

app/src/main/aidl

AIDL源檔案夾,存放項目中的Android介面定義語言代碼源檔案。

app/src/main/rs

RenderScript源檔案夾,存放項目中的RenderScript代碼源檔案。

app/src/main/assets

存放程式員想使用的任何資源檔,其中的檔案不能通過R調用。

app/src/main/res

存放項目中所有的資源檔,包括圖片、布局、字串等。

app/src/main/resources

留坑,此檔案夾貌似用來存放Java資源檔。

  【注】本次分析java、jni、aidl、assets、res檔案夾,rs及resources檔案夾本人知識有限,並不瞭解,還是不發表言論以免誤導大家。

  一、java檔案夾

  java檔案夾是用來存放項目中的java源碼的檔案夾,在java檔案夾中,一般會根據公司網域名稱和項目名稱建立子檔案夾,如公司網域名稱為com.cnblogs,項目名稱為HelloWorld,那麼我們就會在java檔案夾下建立檔案夾com/cnblogs/helloworld(均使用小寫字母),在AS中會直接顯示com.cnblogs.helloworld為名的檔案夾,在建立項目時寫入的項目包名也應為com.cnblogs.helloworld,同樣在建立檔案夾時也可採用com.cnblogs.helloworld的寫法,AS會自動建立相應的資料夾階層。

  java語言是Android應用開發的主流語言,可以用來控制Android應用程式的商務邏輯和表現效果,學習Android應用開發需要一定的java基礎,進階的Android開發必然需要不低的java水平,所以也需要把握住java語言的學習。

  二、jni檔案夾

  jni檔案夾是用來存放項目中的C/C++源碼的檔案夾,在Android應用開發中,如果需要用到C/C++函數,那麼其源碼就應該放在jni檔案夾中。JNI(Java Native Interface)是Java平台的一個特性(並不是Android系統特有的),其實主要是定義了一些JNI函數,讓開發人員可以通過調用這些函數實現Java代碼調用C/C++的代碼,C/C++的代碼也可以調用Java的代碼,這樣就可以發揮各個語言的特點了。一般情況下我們首先是將寫好的C/C++代碼編譯成對應平台的動態庫,windows一般是dll檔案,linux一般是so檔案,再使用Java代碼調用動態庫中的函數。使用了JNI以後的應用程式就失去了java的跨平台特性,編譯出的動態庫只支援自己對應的平台。

  三、aidl檔案夾

  aidl檔案夾是用來存放項目中的AIDL源碼的檔案夾,AIDL——Android Interface Definition Language,即Android介面定義語言。是用來為Android跨進程提供支援的語言。Android系統中的進程之間不能共用記憶體,因此需要提供一些機制在不同進程之間進行資料通訊。為了使其他的應用程式也可以訪問本應用程式提供的服務,Android系統採用了遠端程序呼叫(Remote Procedure Call,RPC)方式來實現。與很多其他的基於RPC的解決方案一樣,Android使用一種介面定義語言(Interface Definition Language,IDL)來公開服務的介面。

  四、res檔案夾

  在Android項目中,最主要的資源檔都是存放在res檔案夾下的,res檔案夾下的檔案都會參與項目的編譯,可以通過R檔案調用res檔案夾的所有資源檔。res檔案夾下又主要包括了drawable、layout、menu、mipmap、values等檔案夾,調用drawable檔案夾下的test檔案可以用R.drawable.test,其他檔案夾以此類推。

  drawable檔案夾用來存放一些drawable資源檔,片、xml等。

  layout檔案夾用來存放布局檔案,各個控制項主要通過layout布局檔案來提供顯示效果。

  menu檔案夾用來存放菜單及子功能表項。

  mipmap檔案夾用來存放表徵圖檔案,如應用程式圖示,也可放在drawable檔案夾下。

  values檔案夾主要用來存放具體值類檔案,主要採用索引值對的形式儲存資料,包括string、color、style、integer等資料。

  五、assets檔案夾

   assets檔案夾中存放的是原生檔案,Android系統在編譯的時候不會編譯assets下的資源檔,所以我們不能通過R檔案訪問它們。那我麼能不能通過該資源的絕對路徑去訪問它們呢?因為apk安裝之後會放在/data/app/**.apk目錄下,以apk形式存在,asset/res和被綁定在apk裡,並不會解壓到/data/data/包名目錄下去,所以我們無法直接擷取到assets的絕對路徑。Android系統為我們提供了一個AssetManager工具類,AssetManager提供對應用程式的原始資源檔進行訪問,允許以簡單的位元組流的形式開啟和讀取和應用程式綁定在一起的原始資源檔。

Android基礎——項目的檔案結構(三)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.