iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 3
0
Mobile Development

Android 十全大補系列 第 3

[Android 十全大補] Hello world 之專案結構

在上一章節中我們建立了第一個 Android 專案,本篇我們會一一介紹每個檔案的作用。
如果從根目錄 dump 出所有檔案你會得到類似以下的結果。

├── My Application.iml (1)
├── app
│   ├── app.iml (1)
│   ├── build (2)
│   │   ├── generated
│   │   │   └── source
│   │   │       └── buildConfig
│   │   │           └── debug
│   │   │               └── com
│   │   │                   └── example
│   │   │                       └── myapplication
│   │   │                           └── BuildConfig.java
│   │   └── intermediates
│   │       └── check_manifest_result
│   │           └── debug
│   │               └── checkDebugManifest
│   │                   └── out
│   ├── build.gradle (3)
│   ├── libs (4)
│   ├── proguard-rules.pro (5)
│   └── src (6)
│       ├── main
│       │   ├── AndroidManifest.xml (7)
│       │   ├── java (8)
│       │   │   └── com
│       │   │       └── example
│       │   │           └── myapplication
│       │   │               └── MainActivity.kt
│       │   └── res (9)
│       │       ├── drawable
│       │       │   └── ic_launcher_background.xml
│       │       ├── drawable-v24
│       │       │   └── ic_launcher_foreground.xml
│       │       ├── layout
│       │       │   └── activity_main.xml
│       │       ├── mipmap-anydpi-v26
│       │       │   ├── ic_launcher.xml
│       │       │   └── ic_launcher_round.xml
│       │       ├── mipmap-hdpi
│       │       │   ├── ic_launcher.png
│       │       │   └── ic_launcher_round.png
│       │       ├── mipmap-mdpi
│       │       │   ├── ic_launcher.png
│       │       │   └── ic_launcher_round.png
│       │       ├── mipmap-xhdpi
│       │       │   ├── ic_launcher.png
│       │       │   └── ic_launcher_round.png
│       │       ├── mipmap-xxhdpi
│       │       │   ├── ic_launcher.png
│       │       │   └── ic_launcher_round.png
│       │       ├── mipmap-xxxhdpi
│       │       │   ├── ic_launcher.png
│       │       │   └── ic_launcher_round.png
│       │       └── values
│       │           ├── colors.xml
│       │           ├── strings.xml
│       │           └── styles.xml
│       ├── androidTest (10)
│       │   └── java
│       │       └── com
│       │           └── example
│       │               └── myapplication
│       │                   └── ExampleInstrumentedTest.kt
│       └── test (11)
│           └── java
│               └── com
│                   └── example
│                       └── myapplication
│                           └── ExampleUnitTest.kt
├── build.gradle (3)
├── gradle (12)
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties (13)
├── gradlew (14)
├── gradlew.bat (14)
├── local.properties (15)
└── settings.gradle (16)

檔案很多,但或許不是每個細節我們都必須現在了解,我們先分門別類來大致介紹一番。

  1. *.iml:Android Studio 用來儲存 module 相關的資訊的,我們不用特別關注。因為目前共有二個 *.iml 檔案在專案裡,所以我們可以知道我們有二個 module,一個是由根目錄開始的 root module、一個是名為 app 的 submodule。
  2. build/:用來儲存 build 後產生的檔案的資料夾,我們也可以忽略。
  3. build.gradle:gradle 是基於 groovy 語言的 build config 檔。
  4. libs/:放第三方提供的 jar library 的資料夾。
  5. proguard-rules.pro:打包程式時混淆程式碼的規則檔案。
  6. src/:程式碼的根目錄
  7. AndroidManifest.xml:Android 相關的設定檔,載明所有入口點、app icon、所需權限等的檔案。
  8. java/:所有 java/kotlin 檔案的根目錄,以內的檔案必須依據 package name 格式放好,例如:package com.example.myapplication 的目錄就是 com/example/myapplication
  9. res/:所有排版、圖像、語言或是其他非程式碼的設定檔案根目錄。
  10. androidTest/:跟 Android ui 相關的測試程式碼跟目錄。
  11. test/:跟 Android ui 無關的測試程式碼跟目錄。
  12. gradle/:gradle wrapper 的 jar 目錄跟設定檔(gradle-wrapper.properties)。
  13. gradle.properties:Project 內的 gradle 參數設定,
  14. gradlew(gradlew.bat):gradle wrapper 的執行檔。
  15. local.properties:本機的設定,如:sdk 位置或是帳號密碼等個人化無需上傳到 CVS 的設定。
  16. settings.gradle:一般紀錄 module 資訊的地方,在這個檔案我們也可以發現目前我們只有一個 module。

以上就是一個完整的 Android Project 的長相囉,雖然看起來很複雜但其實只要按步就班,相信很快就能掌握其中的奧妙呢!

其中,AndroidManifest.xmljava/res/ 會是我們主要撰寫程式的地方,我們也會在下一章節開始介紹相關的資訊。我們明天見囉~

Android 十全大補已經正式出書上架囉!
有興趣的讀者歡迎參考:
https://www.tenlong.com.tw/products/9789864345786


上一篇
[Android 十全大補] Hello world!
下一篇
[Android 十全大補] View 跟 xml
系列文
Android 十全大補30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言