了解 AndroidManifest.xml 文件 | 原創,AI翻譯

Home PDF

如果你正在進入Android開發,你會遇到的第一個文件之一就是AndroidManifest.xml。它就像你的應用程式的藍圖—它在應用程式運行之前告訴Android系統有關你應用程式的一切。今天,我們將分解一個名為「Flower」(套件名稱:com.lzw.flower)的應用程式的範例清單文件,並探索其關鍵組件、概念和模式。


什麼是AndroidManifest.xml?

AndroidManifest.xml文件是每個Android應用程式所需的配置文件。它位於項目的根目錄,並聲明了應用程式的基本信息,如應用程式的套件名稱、權限、組件(例如活動)以及它所需的硬件/軟件功能。可以將其視為應用程式的身份證,Android操作系統會讀取它。

讓我們逐步走過這個範例。


清單的結構

這是我們要處理的清單(稍微簡化以便閱讀):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.lzw.flower"
    android:versionCode="8"
    android:versionName="1.5.2">

    <uses-sdk android:minSdkVersion="14" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <application
        android:label="@string/app_name"
        android:icon="@drawable/icon128"
        android:name=".base.App"
        android:theme="@style/AppTheme">

        <activity android:name=".deprecated.CameraActivity" android:screenOrientation="landscape" />
        <activity android:name=".base.SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".draw.DrawActivity" android:screenOrientation="landscape" />
        <activity android:name=".result.ResultActivity" android:screenOrientation="landscape" />
        <activity android:name=".material.MaterialActivity" android:screenOrientation="landscape" />
        <activity android:name=".activity.PhotoActivity" android:screenOrientation="landscape" />
        <activity android:name=".activity.LoginActivity" android:screenOrientation="portrait" />
    </application>
</manifest>

現在,讓我們將其分解為其核心部分,並解釋其背後的概念。


1. 根<manifest>元素

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.lzw.flower"
    android:versionCode="8"
    android:versionName="1.5.2">

概念<manifest>標籤設置應用程式的身份和版本控制,確保系統知道它在處理哪個應用程式以及如何處理更新。


2. SDK版本與<uses-sdk>

<uses-sdk android:minSdkVersion="14" />

概念:這確保了兼容性。運行Android版本低於4.0的設備無法安裝此應用程式。這裡沒有targetSdkVersionmaxSdkVersion,但可以添加它們以進一步微調兼容性。


3. 使用<uses-permission>的權限

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

這個應用程式請求了幾個權限:

概念:Android使用權限系統來保護用戶隱私和安全。這些聲明告訴系統(和用戶)應用程式需要哪些敏感功能。在Android 6.0(API 23)之後,危險權限(例如CAMERA)也需要在應用程式代碼中進行運行時請求。


4. 使用<uses-feature>的功能

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

概念:與權限不同,<uses-feature>標籤在Google Play商店上過濾應用程式。如果設備沒有相機或自動對焦,應用程式將不會出現可安裝,除非這些標記為可選(android:required="false")。


5. <application>元素

<application
    android:label="@string/app_name"
    android:icon="@drawable/icon128"
    android:name=".base.App"
    android:theme="@style/AppTheme">

概念<application>標籤定義應用程式範圍的設置。資源如@string@drawable存儲在res/文件夾中,促進重用和本地化。


6. 使用<activity>的活動

清單列出了幾個活動,這些活動是應用程式的UI屏幕:

範例1:啟動屏幕(啟動活動)

<activity
    android:name=".base.SplashActivity"
    android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

模式:啟動活動是一個常見的起點,通常是啟動屏幕或主屏幕。

範例2:相機活動

<activity
    android:name=".deprecated.CameraActivity"
    android:screenOrientation="landscape">

模式:活動通常為特定用例強制方向(例如,相機應用程式在橫向模式下工作更好)。

其他活動

清單中列出了更多活動,如DrawActivityResultActivityPhotoActivity等,具有相似的模式:

概念:活動是Android應用程式UI的構建塊。每個<activity>標籤都在系統中註冊了一個屏幕。


此清單中的關鍵模式

  1. 媒體中心設計:相機、存儲和自動對焦的權限和功能暗示這是一個照片或繪圖應用程式(可能是識別花朵,給定套件名稱com.lzw.flower)。
  2. 方向控制:大量使用android:screenOrientation="landscape"暗示專注於視覺任務。
  3. 模塊化活動:多個活動(CameraActivityDrawActivityResultActivity)表明多步驟的工作流程。
  4. 資源使用:對@string@drawable@style的引用顯示了一個乾淨、可維護的結構。

結論

AndroidManifest.xml不僅僅是一個配置文件—它是應用程式目的和行為的窗口。在這種情況下,「Flower」似乎是一個具有相機功能、繪圖功能和網絡功能的媒體應用程式,可能用於上傳或處理圖像。通過了解其組件—權限、功能和活動—你可以看到Android應用程式是如何構建的以及如何設計你自己的。

想要構建類似的東西嗎?從一個明確的目的(例如花朵識別)開始,定義你的權限和功能,並規劃你的活動。清單將把它們全部綁在一起!


Back 2025.04.02 Donate