前兩天先說明了為什麼我要重新讀 RoomRush,以及 Hermes Agent 在這個系列裡扮演什麼角色。
從今天開始,我要正式進入專案檔案。
第一個檔案我選擇從 AndroidManifest.xml 開始。
它不是畫面,也不是查詢空教室的功能,但它告訴 Android 系統:這個 App 有哪些元件,以及哪一個畫面是使用者打開 App 時會先看到的入口。
一開始,我錯把 AndroidManifest.xml 想成 App 的某種「啟動畫面」或「Loading 流程」。
但實際重新讀過之後,我才發現這個理解不太準確:
AndroidManifest.xml負責什麼和 Hermes Agent 一起重讀檔案後,我理解到AndroidManifest.xml 是 Android 系統用來認識這個 App 的設定檔,簡單來說就是「App的入口地圖」。
在這裡,真正會被打開的第一個畫面,是 Manifest 裡面被標記為 MAIN 和 LAUNCHER 的 Activity。
MAIN 表示主要入口,LAUNCHER 表示可以從桌面 / App 清單啟動。
<application
android:name=".EmptyRoomFinderApp"
android:label="@string/app_name">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".LoginActivity" android:exported="false" />
</application>
AndroidManifest.xml 最直接關係到的是 MainActivity.kt,因為 Manifest 裡面會指定哪個 Activity 是啟動入口。
這裡可以先把關係簡化成:
AndroidManifest.xml
↓ 指定啟動入口
MainActivity.kt
Day 3 雖然還不會深入 MainActivity.kt,但我至少先知道:
RoomRush 的第一個畫面不是憑空出現的,而是 Manifest 裡面指定出來的。
AndroidManifest.xml 是用來告訴 Android 系統:這個 App 有哪些元件,例如 Activity 和 Application。當使用者點開 App 時,Android 會讀取 Manifest,找到被設定為 MAIN 和 LAUNCHER 的 MainActivity,並把它當作第一個畫面啟動。Manifest 只是註冊元件,不代表所有 Activity 都會立刻執行。
一開始我以為 AndroidManifest.xml 可能就是 App 的開啟入口,甚至把它想成類似 Loading 畫面。但實際讀完後才發現,Manifest 本身不是畫面,而是 Android 系統用來認識這個 App 的設定檔。在 RoomRush 裡,真正第一個被打開的畫面是 MainActivity,原因是它在 Manifest 裡被設定了 MAIN 和 LAUNCHER。
如果要用一句話記住 AndroidManifest.xml,我會這樣說:
AndroidManifest.xml是 RoomRush 的 App 入口地圖,它告訴 Android 哪個 Activity 是第一個畫面,但它自己不是畫面。
讀完了 App 的入口,接下來就是進入到 App 的首頁,也就是 MainActivity.kt。
它是 RoomRush 的首頁 Activity。
如果少了首頁,就少了核心的畫面,其餘的 RoomRush 畫面和功能就更不用說了;既無法傳遞給下一頁,也無法實際操作後面的功能。