iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 16
0
自我挑戰組

Android API超初學!!系列 第 16

[Android API] [Day 16] AndroidManifest.xml (1)

這個檔案超重要,我之前是拿default file改一改就直接使用了,現在來了解一下內容。
檔案的主要目的為宣吿APP的所有元件、權限、API級別、所需的其他API等。

以下為Android Studio產生的default AndroidManifest.xml 檔案:

<?xml version="1.0" encoding="utf-8"?>

<!-- manifest 必要標籤,只可出現一次 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.hana.helloworld"> 

    <!-- application 必要標籤,只可出現一次 -->
    <application 
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"  <!-- APP的icon,default給所有component使用 -->
        android:label="@string/app_name"  <!-- APP的名稱,default給所有component使用 -->
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity"> <!-- 會根據package name被解析為com.example.hana.helloworld.MainActivity -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application> <!-- application一定要放在manifest裡的最後面 -->

</manifest>

因為是default檔案,沒有非常多複雜的設定,所以一邊了解基本設定的同時,一邊詳細看一下官網,看看還有什麼有趣的設定可以使用吧。

package name

對系統和Google Play來說的唯一識別,包含在<manifest>裡。這個package name也會是給R.java使用的namespace,例如com.example.hana.helloworld.R。不過,這個package name會被build.gradle裡的applicationId取代,所以兩個名稱最好取一樣才不會混淆。取不同名稱似乎是為了進階需求,我就先跳過了。

描述所有component,包含基本屬性、intent filter

每個component都必須要出現在這,例如activity會寫在manifest>application>activity,可參考以上程式碼。
Activity的android name記得要是package name的相對路徑,如果要使用的activity是在sub-package裡面,要寫成.<sub-package name>.<activity name>。

  • 四種基礎元件寫法:
<activity> <!-- Activity -->
<service> <!-- Service -->
<receiver> <!-- BroadcastReceiver -->
<provider> <!-- ContentProvider -->

小提醒:

  • 以上元件不一定要照順序寫
  • 如果有<activity-alias>,要放在相對應的<activity>底下

intent filter

四大基礎元件中的activity、service、broadcast receiver是透過intent啟動的,當某APP發起一個intent,系統就會去掃各個APP的intent filter,找最適合的給使用者。如果適合的不只一個,就給使用者自己選擇。

這個似乎滿多東西可研究的,之後再介紹。

/images/emoticon/emoticon72.gif

AndroidManifest.xml 還沒講解完,明天繼續學習吧!


上一篇
[Android API] [Day 15] Gradle (4) build scan + Github
下一篇
[Android API] [Day 17] AndroidManifest.xml (2)
系列文
Android API超初學!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言