Android開發——初步了解AndroidManifest.xml
? AndroidManifest.xml
是 Android 應用的清單文件,包含了應用的包名、組件聲明、權限聲明、API 版本信息等。它是 Android 應用的“說明書”,系統通過它了解應用的結構和行為。咱們的AndroidManifest文件實際上就相當于一份聲明式的配置文件了
AndroidManifest.xml 的主要功能
-
聲明應用的包名
包名是應用的唯一標識符,用于在系統中區分不同的應用。<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapp">
-
聲明應用組件
包括Activity
、Service
、BroadcastReceiver
和ContentProvider
。每個組件都需要在清單文件中進行聲明。一般而言,我們不會自己重新寫這個文件,會讓Android Studio自動的修改這個文件<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity> </application>
-
聲明權限
使用<uses-permission>
聲明應用需要的權限,例如訪問網絡、讀取聯系人等。<uses-permission android:name="android.permission.INTERNET" />
-
聲明應用的最小 SDK 版本
使用<uses-sdk>
聲明應用支持的最低和目標 SDK 版本。<uses-sdkandroid:minSdkVersion="16"android:targetSdkVersion="30" />
-
聲明應用的特性和功能
使用<uses-feature>
聲明應用所需的硬件特性,例如攝像頭、藍牙等。<uses-feature android:name="android.hardware.camera" />
例子:我寫的一個迷你demo的AndroidManifest文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.ActivityAction"><activityandroid:name=".SecondActivity"android:exported="false"android:label="@string/title_activity_second"android:theme="@style/Theme.ActivityAction" /><activityandroid:name=".FirstActivity"android:exported="true"android:label="@string/title_activity_first"android:theme="@style/Theme.ActivityAction"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
您提供的 AndroidManifest.xml
文件配置了兩個 Activity,并使用了多個與數據備份和安全性相關的屬性。以下是對該文件的詳細分析:
📁 AndroidManifest.xml
文件結構
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.ActivityAction"><activityandroid:name=".SecondActivity"android:exported="false"android:label="@string/title_activity_second"android:theme="@style/Theme.ActivityAction" /><activityandroid:name=".FirstActivity"android:exported="true"android:label="@string/title_activity_first"android:theme="@style/Theme.ActivityAction"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
🧩 關鍵屬性解析
1. <application>
元素
android:allowBackup="true"
:允許應用的數據進行備份。默認值為true
,但建議顯式設置。android:dataExtractionRules="@xml/data_extraction_rules"
:指定一個 XML 文件,定義在 Android 12 及以上版本中,哪些數據可以被提取用于云備份。android:fullBackupContent="@xml/backup_rules"
:指定一個 XML 文件,定義在 Android 11 及以下版本中,哪些數據可以被備份。android:icon="@mipmap/ic_launcher"
:設置應用的圖標。android:label="@string/app_name"
:設置應用的名稱。android:roundIcon="@mipmap/ic_launcher_round"
:設置應用的圓形圖標。android:supportsRtl="true"
:支持從右到左的布局,適用于阿拉伯語等語言。android:theme="@style/Theme.ActivityAction"
:設置應用的主題。
2. <activity>
元素
SecondActivity
android:name=".SecondActivity"
:指定 Activity 的類名。android:exported="false"
:該 Activity 不允許被其他應用啟動。android:label="@string/title_activity_second"
:設置 Activity 的標簽。android:theme="@style/Theme.ActivityAction"
:設置 Activity 的主題。
FirstActivity
android:name=".FirstActivity"
:指定 Activity 的類名。android:exported="true"
:該 Activity 允許被其他應用啟動。android:label="@string/title_activity_first"
:設置 Activity 的標簽。android:theme="@style/Theme.ActivityAction"
:設置 Activity 的主題。<intent-filter>
:定義了該 Activity 是應用的主入口,并在啟動器中顯示。